X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Ftranslators%2FMSPack.java;h=c15aff43b592b603a2570b98688e5eaa1f882c3b;hb=271c57ed3428a10856d4d2ef3b4d507609be353e;hp=3275bb913ee0af817a0840a7e70c28761bcfcffc;hpb=0b0673bbc7f06c5d5418d5ab7ad5961a464e2de0;p=org.ibex.core.git diff --git a/src/org/xwt/translators/MSPack.java b/src/org/xwt/translators/MSPack.java index 3275bb9..c15aff4 100644 --- a/src/org/xwt/translators/MSPack.java +++ b/src/org/xwt/translators/MSPack.java @@ -5,6 +5,8 @@ import org.xwt.util.*; import org.xwt.mips.*; import java.io.*; +import org.xwt.mips.Runtime; + public class MSPack { private static byte[] image; @@ -13,27 +15,20 @@ public class MSPack { private byte[][] data; public static class MSPackException extends IOException { public MSPackException(String s) { super(s); } } - - private static synchronized byte[] getImage() throws IOException { - if (image == null) - image = InputStreamToByteArray.convert(Main.builtin.getInputStream("libmspack.mips")); - return image; - } - - public MSPack(InputStream cabIS) throws IOException { - byte[] cab = InputStreamToByteArray.convert(cabIS); - Interpreter vm = new Interpreter(getImage()); - - int cabAddr = vm.sbrk(cab.length); - if(cabAddr < 0) throw new MSPackException("sbrk failed"); + public MSPack(InputStream cabIS) throws IOException { try { + Runtime vm = new MIPSApps(); + byte[] cab = InputStreamToByteArray.convert(cabIS); + int cabAddr = vm.sbrk(cab.length); + if(cabAddr < 0) throw new MSPackException("sbrk failed"); + vm.copyout(cab,cabAddr,cab.length); vm.setUserInfo(0,cabAddr); vm.setUserInfo(1,cab.length); - int status = vm.run(new String[]{ "mspack.mips"} ); + int status = vm.run(new String[]{ "mspack"} ); if(status != 0) throw new MSPackException("mspack.mips failed (" + status + ")"); /*static struct { @@ -58,7 +53,7 @@ public class MSPack { System.out.println("" + fileNames[i]); vm.copyin(vm.memRead(addr+4),data[i],length); } - } catch(Exception e) { + } catch(Runtime.ExecutionException e) { e.printStackTrace(); throw new MSPackException("mspack.mips crashed"); }