< 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 >