8237143: Eliminate DirtyCardQ_cbl_mon

Replace locked data structures with lock-free data structures.

Reviewed-by: tschatzl, sangheki
This commit is contained in:
Kim Barrett 2020-02-06 19:09:07 -05:00
parent e37a6aed88
commit ccbd819a01
10 changed files with 569 additions and 198 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -210,8 +210,6 @@ class BufferNode {
return offset_of(BufferNode, _buffer);
}
static BufferNode* volatile* next_ptr(BufferNode& bn) { return &bn._next; }
// Allocate a new BufferNode with the "buffer" having size elements.
static BufferNode* allocate(size_t size);
@ -219,6 +217,7 @@ class BufferNode {
static void deallocate(BufferNode* node);
public:
static BufferNode* volatile* next_ptr(BufferNode& bn) { return &bn._next; }
typedef LockFreeStack<BufferNode, &next_ptr> Stack;
BufferNode* next() const { return _next; }