< prev index next >
src/share/vm/oops/constantPool.cpp
Print this page
@@ -203,18 +203,19 @@
}
}
// Anonymous class support:
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();
- int name_index = kslot.name_index();
- Symbol* name = symbol_at(name_index);
- guarantee(name == k->name(), "Invalid class name for anonymous");
-
Klass** adr = resolved_klasses()->adr_at(resolved_klass_index);
OrderAccess::release_store_ptr((Klass* volatile *)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);
}
// CDS support. Create a new resolved_references array.
void ConstantPool::restore_unshareable_info(TRAPS) {
assert(is_constantPool(), "ensure C++ vtable is restored");
< prev index next >