changeset 5627:e1b29c516354

Implement addEntryMethod in boot image generator. Add Graal.getRequiredCapability utility to Graal class.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Thu, 14 Jun 2012 18:03:18 +0200
parents 4967be7265bc
children 65bf69eb147c
files graal/com.oracle.graal.api/src/com/oracle/graal/api/Graal.java graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/HelloWorldTest.java graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BootImageGenerator.java mx/projects
diffstat 4 files changed, 26 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api/src/com/oracle/graal/api/Graal.java	Thu Jun 14 17:54:59 2012 +0200
+++ b/graal/com.oracle.graal.api/src/com/oracle/graal/api/Graal.java	Thu Jun 14 18:03:18 2012 +0200
@@ -22,7 +22,6 @@
  */
 package com.oracle.graal.api;
 
-
 public class Graal {
 
     private static GraalRuntime runtime;
@@ -49,4 +48,12 @@
             };
         }
     }
+
+    public static <T> T getRequiredCapability(Class<T> clazz) {
+        T t = getRuntime().getCapability(clazz);
+        if (t == null) {
+            throw new IllegalAccessError("Runtime does not expose required capability " + clazz.getName());
+        }
+        return t;
+    }
 }
--- a/graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/HelloWorldTest.java	Thu Jun 14 17:54:59 2012 +0200
+++ b/graal/com.oracle.graal.boot.test/src/com/oracle/graal/boot/HelloWorldTest.java	Thu Jun 14 18:03:18 2012 +0200
@@ -22,25 +22,13 @@
  */
 package com.oracle.graal.boot;
 
-import java.io.*;
-import java.lang.reflect.*;
-
 import com.oracle.graal.boot.test.helloworld.*;
 
 
 public class HelloWorldTest {
-    public static void main(String[] args) throws NoSuchMethodException, SecurityException, IOException {
-        Method entryPoint = HelloWorldTestProgram.class.getMethod("main", String[].class);
-        System.out.println(HelloWorldTestProgram.class.getCanonicalName());
-        InputStream inputStream = HelloWorldTestProgram.class.getClassLoader().getResourceAsStream(HelloWorldTestProgram.class.getName().replace('.', '/').concat(".class"));
-
-        byte[] byteCodes = new byte[inputStream.available()];
-        inputStream.read(byteCodes);
-        System.out.println(byteCodes);
-        ClassLoader l = new ClassLoader() {
-
-
-        };
-
+    public static void main(String[] args) {
+        BootImageGenerator generator = new BootImageGenerator();
+        generator.addEntryMethod(HelloWorldTestProgram.class, "main", String[].class);
+        generator.logState();
     }
 }
--- a/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BootImageGenerator.java	Thu Jun 14 17:54:59 2012 +0200
+++ b/graal/com.oracle.graal.boot/src/com/oracle/graal/boot/BootImageGenerator.java	Thu Jun 14 18:03:18 2012 +0200
@@ -24,12 +24,15 @@
 
 import java.lang.reflect.*;
 
+import com.oracle.graal.api.*;
+import com.oracle.graal.api.meta.*;
 import com.oracle.graal.debug.*;
 
 
 public class BootImageGenerator {
 
     private final BootImageClassLoader classLoader = new BootImageClassLoader();
+    private final MetaAccessProvider metaAccess = Graal.getRequiredCapability(MetaAccessProvider.class);
 
     public void addEntryMethod(Class<?> clazz, String name, Class<?> ... parameterTypes) {
         Class<?> convertedClass = classLoader.convert(clazz);
@@ -40,6 +43,16 @@
             throw new RuntimeException("Could not find method " + name + " with parameter types " + parameterTypes + " in class " + convertedClass.getCanonicalName());
         }
         Debug.log("Adding method %s.%s to the boot image", method.getClass().getName(), method.getName());
+        addEntryMethod(metaAccess.getResolvedJavaMethod(method));
     }
 
+
+    private void addEntryMethod(ResolvedJavaMethod javaMethod) {
+
+    }
+
+
+    public void logState() {
+        Debug.log("State");
+    }
 }
--- a/mx/projects	Thu Jun 14 17:54:59 2012 +0200
+++ b/mx/projects	Thu Jun 14 18:03:18 2012 +0200
@@ -147,7 +147,7 @@
 # graal.boot
 project@com.oracle.graal.boot@subDir=graal
 project@com.oracle.graal.boot@sourceDirs=src
-project@com.oracle.graal.boot@dependencies=com.oracle.graal.compiler
+project@com.oracle.graal.boot@dependencies=com.oracle.graal.compiler,com.oracle.graal.api
 project@com.oracle.graal.boot@checkstyle=com.oracle.graal.graph
 project@com.oracle.graal.boot@javaCompliance=1.7