X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FClassFileCompiler.java;h=2f5b609c7ddf43254882a142bb577aedf247155a;hp=3df1d4e5c530648628edb3b06bf68b54842772d8;hb=4cc48f20c2927ad6d88f4d54e10b5fe46fcef2df;hpb=5bea48b85283d68b2dcd0583de4e0ed61f60e252 diff --git a/src/org/ibex/nestedvm/ClassFileCompiler.java b/src/org/ibex/nestedvm/ClassFileCompiler.java index 3df1d4e..2f5b609 100644 --- a/src/org/ibex/nestedvm/ClassFileCompiler.java +++ b/src/org/ibex/nestedvm/ClassFileCompiler.java @@ -477,7 +477,7 @@ public class ClassFileCompiler extends Compiler implements org.apache.bcel.Const private InstructionHandle realStart; private MethodGen curMethod; - private boolean jumpable(int addr) { return jumpableAddresses.contains(new Integer(addr)); } + private boolean jumpable(int addr) { return jumpableAddresses.get(new Integer(addr)) != null; } private void emitText(int addr, DataInputStream dis, int size) throws Exn,IOException { if(textDone) throw new Exn("Multiple text segments"); @@ -570,7 +570,7 @@ public class ClassFileCompiler extends Compiler implements org.apache.bcel.Const pushConst(firstAddrOfNext); setPC(); // mark the start of the next method as jumpable - jumpableAddresses.add(new Integer(firstAddrOfNext)); + jumpableAddresses.put(new Integer(firstAddrOfNext),Boolean.TRUE); } insnList.move(returnHandle,insnList.getEnd()); @@ -648,7 +648,7 @@ public class ClassFileCompiler extends Compiler implements org.apache.bcel.Const //System.err.println("Delay slot is jumpable - This code is untested + " + toHex(nextInsn)); if(pc+4==endOfMethod) { // the delay slot is at the start of the next method - jumpableAddresses.add(new Integer(pc+8)); // make the 2nd insn of the next method jumpable + jumpableAddresses.put(new Integer(pc+8),Boolean.TRUE); // make the 2nd insn of the next method jumpable branch(pc,pc+8); // jump over it //System.err.println("delay slot: " + toHex(pc+8)); unreachable = true;