380 if (!klass->is_interface()) { |
380 if (!klass->is_interface()) { |
381 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), |
381 THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), |
382 err_msg("Expected interface type, got %s", klass->external_name())); |
382 err_msg("Expected interface type, got %s", klass->external_name())); |
383 } |
383 } |
384 InstanceKlass* iklass = InstanceKlass::cast(klass); |
384 InstanceKlass* iklass = InstanceKlass::cast(klass); |
385 JVMCIKlassHandle handle(THREAD, iklass->implementor()); |
385 JVMCIKlassHandle handle(THREAD); |
|
386 { |
|
387 // Need Compile_lock around implementor() |
|
388 MutexLocker locker(Compile_lock); |
|
389 handle = iklass->implementor(); |
|
390 } |
386 oop implementor = CompilerToVM::get_jvmci_type(handle, CHECK_NULL); |
391 oop implementor = CompilerToVM::get_jvmci_type(handle, CHECK_NULL); |
387 return JNIHandles::make_local(THREAD, implementor); |
392 return JNIHandles::make_local(THREAD, implementor); |
388 C2V_END |
393 C2V_END |
389 |
394 |
390 C2V_VMENTRY(jboolean, methodIsIgnoredBySecurityStackWalk,(JNIEnv *, jobject, jobject jvmci_method)) |
395 C2V_VMENTRY(jboolean, methodIsIgnoredBySecurityStackWalk,(JNIEnv *, jobject, jobject jvmci_method)) |