--- old/src/share/vm/oops/constantPool.cpp 2017-04-29 08:24:05.881947584 -0700 +++ new/src/share/vm/oops/constantPool.cpp 2017-04-29 08:24:05.725941744 -0700 @@ -205,14 +205,15 @@ // 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.