< prev index next >

src/hotspot/share/oops/constantPool.cpp

Print this page

        

*** 230,240 **** build_int_from_shorts((jushort)resolved_klass_index, (jushort)name_index); symbol_at_put(name_index, name); name->increment_refcount(); Klass** adr = resolved_klasses()->adr_at(resolved_klass_index); ! OrderAccess::release_store(adr, k); // The interpreter assumes when the tag is stored, the klass is resolved // and the Klass* non-NULL, so we need hardware store ordering here. if (k != NULL) { release_tag_at_put(class_index, JVM_CONSTANT_Class); --- 230,240 ---- build_int_from_shorts((jushort)resolved_klass_index, (jushort)name_index); symbol_at_put(name_index, name); name->increment_refcount(); Klass** adr = resolved_klasses()->adr_at(resolved_klass_index); ! Atomic::release_store(adr, k); // The interpreter assumes when the tag is stored, the klass is resolved // and the Klass* non-NULL, so we need hardware store ordering here. if (k != NULL) { release_tag_at_put(class_index, JVM_CONSTANT_Class);
*** 247,257 **** void ConstantPool::klass_at_put(int class_index, Klass* k) { assert(k != NULL, "must be valid klass"); CPKlassSlot kslot = klass_slot_at(class_index); int resolved_klass_index = kslot.resolved_klass_index(); Klass** adr = resolved_klasses()->adr_at(resolved_klass_index); ! OrderAccess::release_store(adr, k); // The interpreter assumes when the tag is stored, the klass is resolved // and the Klass* non-NULL, so we need hardware store ordering here. release_tag_at_put(class_index, JVM_CONSTANT_Class); } --- 247,257 ---- void ConstantPool::klass_at_put(int class_index, Klass* k) { assert(k != NULL, "must be valid klass"); CPKlassSlot kslot = klass_slot_at(class_index); int resolved_klass_index = kslot.resolved_klass_index(); Klass** adr = resolved_klasses()->adr_at(resolved_klass_index); ! Atomic::release_store(adr, k); // The interpreter assumes when the tag is stored, the klass is resolved // and the Klass* non-NULL, so we need hardware store ordering here. release_tag_at_put(class_index, JVM_CONSTANT_Class); }
*** 523,533 **** // logging for class+resolve. if (log_is_enabled(Debug, class, resolve)){ trace_class_resolution(this_cp, k); } Klass** adr = this_cp->resolved_klasses()->adr_at(resolved_klass_index); ! OrderAccess::release_store(adr, k); // The interpreter assumes when the tag is stored, the klass is resolved // and the Klass* stored in _resolved_klasses is non-NULL, so we need // hardware store ordering here. this_cp->release_tag_at_put(which, JVM_CONSTANT_Class); return k; --- 523,533 ---- // logging for class+resolve. if (log_is_enabled(Debug, class, resolve)){ trace_class_resolution(this_cp, k); } Klass** adr = this_cp->resolved_klasses()->adr_at(resolved_klass_index); ! Atomic::release_store(adr, k); // The interpreter assumes when the tag is stored, the klass is resolved // and the Klass* stored in _resolved_klasses is non-NULL, so we need // hardware store ordering here. this_cp->release_tag_at_put(which, JVM_CONSTANT_Class); return k;
< prev index next >