< prev index next >
src/share/vm/runtime/stubCodeGenerator.hpp
Print this page
rev 8555 : 8206406: StubCodeDesc constructor publishes partially-constructed objects on StubCodeDesc::_list
Reviewed-by: dholmes
@@ -36,11 +36,11 @@
// Currently, code descriptors are simply chained in a linked list,
// this may have to change if searching becomes too slow.
class StubCodeDesc: public CHeapObj<mtCode> {
protected:
- static StubCodeDesc* _list; // the list of all descriptors
+ static StubCodeDesc* volatile _list; // the list of all descriptors
static int _count; // length of list
StubCodeDesc* _next; // the next element in the linked list
const char* _group; // the group to which the stub code belongs
const char* _name; // the name assigned to the stub code
@@ -67,17 +67,17 @@
static StubCodeDesc* desc_for_index(int); // returns the code descriptor for the index or NULL
static const char* name_for(address pc); // returns the name of the code containing pc or NULL
StubCodeDesc(const char* group, const char* name, address begin) {
assert(name != NULL, "no name specified");
- _next = _list;
+ _next = (StubCodeDesc*)OrderAccess::load_ptr_acquire(&_list);
_group = group;
_name = name;
_index = ++_count; // (never zero)
_begin = begin;
_end = NULL;
- _list = this;
+ OrderAccess::release_store_ptr(&_list, this);
};
const char* group() const { return _group; }
const char* name() const { return _name; }
int index() const { return _index; }
< prev index next >