Mercurial > hg > graal-compiler
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