< prev index next >

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Print this page

        

*** 1023,1042 **** HandleMark hm; JVMCIObject nmethod_mirror = JVMCIENV->wrap(hs_nmethod); nmethodLocker locker; nmethod* nm = JVMCIENV->get_nmethod(nmethod_mirror, locker); ! if (nm == NULL) { JVMCI_THROW_NULL(InvalidInstalledCodeException); } methodHandle mh(THREAD, nm->method()); Symbol* signature = mh->signature(); JavaCallArguments jca(mh->size_of_parameters()); JavaArgumentUnboxer jap(signature, &jca, (arrayOop) JNIHandles::resolve(args), mh->is_static()); JavaValue result(jap.return_type()); ! jca.set_alternative_target(nm); JavaCalls::call(&result, mh, &jca, CHECK_NULL); if (jap.return_type() == T_VOID) { return NULL; } else if (is_reference_type(jap.return_type())) { --- 1023,1042 ---- HandleMark hm; JVMCIObject nmethod_mirror = JVMCIENV->wrap(hs_nmethod); nmethodLocker locker; nmethod* nm = JVMCIENV->get_nmethod(nmethod_mirror, locker); ! if (nm == NULL || !nm->is_in_use()) { JVMCI_THROW_NULL(InvalidInstalledCodeException); } methodHandle mh(THREAD, nm->method()); Symbol* signature = mh->signature(); JavaCallArguments jca(mh->size_of_parameters()); JavaArgumentUnboxer jap(signature, &jca, (arrayOop) JNIHandles::resolve(args), mh->is_static()); JavaValue result(jap.return_type()); ! jca.set_alternative_target(Handle(THREAD, JNIHandles::resolve(nmethod_mirror.as_jobject()))); JavaCalls::call(&result, mh, &jca, CHECK_NULL); if (jap.return_type() == T_VOID) { return NULL; } else if (is_reference_type(jap.return_type())) {
< prev index next >