changeset 5525:77d302416830

Create HotSpotGraalRuntime class on HotSpot when Graal.getRuntime() is accessed.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Fri, 08 Jun 2012 17:55:28 +0200
parents ab6115911fe5
children 87e4aed94b26
files graal/com.oracle.graal.api.test/src/com/oracle/graal/api/GraalTest.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java src/share/vm/graal/graalRuntime.cpp
diffstat 3 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.test/src/com/oracle/graal/api/GraalTest.java	Fri Jun 08 17:00:38 2012 +0200
+++ b/graal/com.oracle.graal.api.test/src/com/oracle/graal/api/GraalTest.java	Fri Jun 08 17:55:28 2012 +0200
@@ -32,6 +32,7 @@
     @Test
     public void testRuntimeAvailable() {
         assertNotNull(Graal.getRuntime());
+        System.out.println(Graal.getRuntime().getClass());
     }
 
     @Test
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Fri Jun 08 17:00:38 2012 +0200
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Fri Jun 08 17:55:28 2012 +0200
@@ -27,6 +27,9 @@
 
 public class HotSpotGraalRuntime implements GraalRuntime {
 
+    public HotSpotGraalRuntime() {
+    }
+
     @Override
     public String getName() {
         return "HotSpotGraalRuntime";
--- a/src/share/vm/graal/graalRuntime.cpp	Fri Jun 08 17:00:38 2012 +0200
+++ b/src/share/vm/graal/graalRuntime.cpp	Fri Jun 08 17:55:28 2012 +0200
@@ -28,5 +28,9 @@
   ThreadToNativeFromVM ttnfv(thread);
   jclass klass = env->FindClass("com/oracle/graal/hotspot/HotSpotGraalRuntime");
   guarantee(klass != NULL, "Could not find class com.oracle.graal.hotspot.HotSpotGraalRuntime");
-  return env->AllocObject(klass);
+  jmethodID constructor = env->GetMethodID(klass, "<init>", "()V");
+  guarantee(constructor != NULL, "Constructor of HotSpotGraalRuntime must not have any parameters");
+  jobject newObj = env->AllocObject(klass);
+  env->CallVoidMethod(newObj, constructor);
+  return newObj;
 JVM_END
\ No newline at end of file