diff src/share/vm/graal/graalVMEntries.cpp @ 3667:e755289380e3

Removed a safepoint possibility in the code installer when creating CiVirtualObject objects.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 18 Nov 2011 13:07:25 +0100
parents 8c46cdb684d4
children 53636e2c9d03
line wrap: on
line diff
--- a/src/share/vm/graal/graalVMEntries.cpp	Thu Nov 17 19:11:55 2011 +0100
+++ b/src/share/vm/graal/graalVMEntries.cpp	Fri Nov 18 13:07:25 2011 +0100
@@ -925,13 +925,14 @@
 // public long installMethod(HotSpotTargetMethod targetMethod, boolean installCode);
 JNIEXPORT jlong JNICALL Java_com_oracle_graal_hotspot_VMEntries_installMethod(JNIEnv *jniEnv, jobject, jobject targetMethod, jboolean install_code) {
   VM_ENTRY_MARK;
+  Handle targetMethodHandle = JNIHandles::resolve(targetMethod);
   nmethod* nm = NULL;
   ciEnv* current_env = JavaThread::current()->env();
   JavaThread::current()->set_env(NULL);
   Arena arena;
   ciEnv env(&arena);
   ResourceMark rm;
-  CodeInstaller installer(JNIHandles::resolve(targetMethod), nm, install_code != 0);
+  CodeInstaller installer(targetMethodHandle, nm, install_code != 0);
   JavaThread::current()->set_env(current_env);
   return (jlong) nm;
 }
@@ -939,13 +940,14 @@
 // public HotSpotProxy installStub(HotSpotTargetMethod targetMethod, String name);
 JNIEXPORT jlong JNICALL Java_com_oracle_graal_hotspot_VMEntries_installStub(JNIEnv *jniEnv, jobject, jobject targetMethod) {
   VM_ENTRY_MARK;
+  Handle targetMethodHandle = JNIHandles::resolve(targetMethod);
   jlong id;
   ciEnv* current_env = JavaThread::current()->env();
   JavaThread::current()->set_env(NULL);
   Arena arena;
   ciEnv env(&arena);
   ResourceMark rm;
-  CodeInstaller installer(JNIHandles::resolve(targetMethod), id);
+  CodeInstaller installer(targetMethodHandle, id);
   JavaThread::current()->set_env(current_env);
   return id;
 }