X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fnestedvm%2FCompiler.java;h=b5835ddf4089655979cc944541cf354ff51d91db;hp=ebdf29d30489739597e97acd33f4bf0edb58b482;hb=4cc48f20c2927ad6d88f4d54e10b5fe46fcef2df;hpb=5bea48b85283d68b2dcd0583de4e0ed61f60e252 diff --git a/src/org/ibex/nestedvm/Compiler.java b/src/org/ibex/nestedvm/Compiler.java index ebdf29d..b5835dd 100644 --- a/src/org/ibex/nestedvm/Compiler.java +++ b/src/org/ibex/nestedvm/Compiler.java @@ -83,7 +83,7 @@ public abstract class Compiler implements Registers { } /** A set of all addresses that can be jumped too (only available if pruneCases == true) */ - protected Set jumpableAddresses; + protected Hashtable jumpableAddresses; /** Some important symbols */ ELF.Symbol userInfo, gp; @@ -211,9 +211,9 @@ public abstract class Compiler implements Registers { if(pruneCases) { // Find all possible branches - jumpableAddresses = new HashSet(); + jumpableAddresses = new Hashtable(); - jumpableAddresses.add(new Integer(elf.header.entry)); + jumpableAddresses.put(new Integer(elf.header.entry),Boolean.TRUE); ELF.SHeader text = elf.sectionWithName(".text"); if(text == null) throw new Exn("No .text segment"); @@ -244,13 +244,13 @@ public abstract class Compiler implements Registers { _go(); } - private void findBranchesInSymtab(ELF.Symtab symtab, Set jumps) { + private void findBranchesInSymtab(ELF.Symtab symtab, Hashtable jumps) { ELF.Symbol[] symbols = symtab.symbols; int n=0; for(int i=0;i= base && t < base+size) { - if(jumps.add(new Integer(t))) { + if(jumps.put(new Integer(t),Boolean.TRUE) == null) { //System.err.println("Possible jump to " + toHex(t) + " (" + inter.sourceLine(t) + ") from " + toHex(pc) + " (" + inter.sourceLine(pc) + ")"); n++; } @@ -336,7 +336,7 @@ public abstract class Compiler implements Registers { case 17: // FPU Instructions switch(rs) { case 8: // BC1F, BC1T - if(jumps.add(new Integer(pc+branchTarget*4+4))) n++; + if(jumps.put(new Integer(pc+branchTarget*4+4),Boolean.TRUE) == null) n++; break; } break; @@ -346,13 +346,13 @@ public abstract class Compiler implements Registers { if(printStats) System.err.println("Found " + n + " additional possible branch targets in Text segment"); } - private void findBranchesInData(DataInputStream dis, int size, Set jumps, int textStart, int textEnd) throws IOException { + private void findBranchesInData(DataInputStream dis, int size, Hashtable jumps, int textStart, int textEnd) throws IOException { int count = size/4; int n=0; for(int i=0;i= textStart && word < textEnd) { - if(jumps.add(new Integer(word))) { + if(jumps.put(new Integer(word),Boolean.TRUE) == null) { //System.err.println("Added " + toHex(word) + " as possible branch target (fron data segment)"); n++; } @@ -388,7 +388,7 @@ public abstract class Compiler implements Registers { public void set(Object val) { if(field == null) return; try { - field.setAccessible(true); + /*field.setAccessible(true); NOT in JDK 1.1 */ field.set(Compiler.this,val); } catch(IllegalAccessException e) { System.err.println(e); @@ -397,7 +397,7 @@ public abstract class Compiler implements Registers { public Object get() { if(field == null) return null; try { - field.setAccessible(true); + /*field.setAccessible(true); NOT in JDK 1.1 */ return field.get(Compiler.this); } catch(IllegalAccessException e) { System.err.println(e); return null;