src/share/vm/prims/unsafe.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/prims/unsafe.cpp	Mon Aug 15 15:17:53 2016
--- new/src/share/vm/prims/unsafe.cpp	Mon Aug 15 15:17:51 2016

*** 859,868 **** --- 859,875 ---- assert(p->is_objArray(), "cp_patches must be an object[]"); cp_patches_h = objArrayHandle(THREAD, (objArrayOop)p); } const Klass* host_klass = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(host_class)); + + // Make sure it's the real host class, not another anonymous class. + while (host_klass != NULL && host_klass->is_instance_klass() && + InstanceKlass::cast(host_klass)->is_anonymous()) { + host_klass = InstanceKlass::cast(host_klass)->host_klass(); + } + // Primitive types have NULL Klass* fields in their java.lang.Class instances. if (host_klass == NULL) { THROW_0(vmSymbols::java_lang_IllegalArgumentException()); }

src/share/vm/prims/unsafe.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File