X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FRuntimeCompiler.java;h=1a1a0477be7df4a8850d6c57849e214199843b2f;hp=2aa4305af24f59606bd227b2eb83d73b47bae37c;hb=94617ade62211d11c80b1e87b2a4c822297dd43f;hpb=2ecd32e5aea66a9e8d1750a263b9e1b6159b5748 diff --git a/src/org/ibex/nestedvm/RuntimeCompiler.java b/src/org/ibex/nestedvm/RuntimeCompiler.java index 2aa4305..1a1a047 100644 --- a/src/org/ibex/nestedvm/RuntimeCompiler.java +++ b/src/org/ibex/nestedvm/RuntimeCompiler.java @@ -5,8 +5,9 @@ import java.io.*; import org.ibex.nestedvm.util.*; // FEATURE: This need a lot of work to support binaries spanned across many classes -public class RuntimeCompiler { - private static final SingleClassLoader singleClassLoader = new SingleClassLoader(); +public class RuntimeCompiler { + // FEATURE: Do we need to periodicly create a new classloader to allow old clases to be GCed? + private static SingleClassLoader singleClassLoader = new SingleClassLoader(); // FEATURE: Is it ok if this overflows? private static long nextID = 1; private static synchronized String uniqueID() { return Long.toString(nextID++); } @@ -17,7 +18,7 @@ public class RuntimeCompiler { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ClassFileCompiler c = new ClassFileCompiler(data,className,baos); // FEATURE: make this Optional, pass options on compile arguments - c.parseOptions("unixruntime"); + c.parseOptions("unixruntime,nosupportcall,maxinsnpermethod=512"); c.go(); baos.close(); byte[] bytecode = baos.toByteArray(); @@ -26,7 +27,7 @@ public class RuntimeCompiler { private static class SingleClassLoader extends ClassLoader { public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { - System.err.println(this + ": loadClass(\"" + name + "," + resolve + ");"); + //System.err.println(this + ": loadClass(\"" + name + "," + resolve + ");"); return super.loadClass(name,resolve); } public Class fromBytes(String name, byte[] b) { return fromBytes(name,b,0,b.length); } @@ -38,13 +39,13 @@ public class RuntimeCompiler { } public static void main(String[] args) throws Exception { - if(args.length == 0) { - System.err.println("Usage: RuntimeCompiler mipsbinary"); + if(args.length == 0) { + System.err.println("Usage: RuntimeCompiler mipsbinary"); System.exit(1); } UnixRuntime r = (UnixRuntime) compile(new Seekable.File(args[0])).newInstance(); System.err.println("Instansiated: "+ r); - System.exit(r.run(args)); + System.exit(UnixRuntime.runAndExec(r,args)); } private RuntimeCompiler() { }