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

src/share/vm/prims/unsafe.cpp

Print this page

        

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