1 19 20 package jode.flow; 21 import jode.decompiler.LocalInfo; 22 import jode.type.Type; 23 24 31 public class JsrBlock extends StructuredBlock { 32 35 StructuredBlock innerBlock; 36 boolean good = false; 37 38 public JsrBlock(Jump subroutine, Jump next) { 39 innerBlock = new EmptyBlock(subroutine); 40 innerBlock.outer = this; 41 setJump(next); 42 } 43 44 public void setGood(boolean g) { 45 good = g; 46 } 47 48 public boolean isGood() { 49 return good; 50 } 51 52 54 55 61 public boolean replaceSubBlock(StructuredBlock oldBlock, 62 StructuredBlock newBlock) { 63 if (innerBlock == oldBlock) 64 innerBlock = newBlock; 65 else 66 return false; 67 return true; 68 } 69 70 81 public VariableStack mapStackToLocal(VariableStack stack) { 82 84 87 LocalInfo retAddr = new LocalInfo(); 88 retAddr.setType(Type.tUObject); 89 innerBlock.mapStackToLocal(stack.push(retAddr)); 90 if (jump != null) { 91 jump.stackMap = stack; 92 return null; 93 } 94 return stack; 95 } 96 97 100 public StructuredBlock[] getSubBlocks() { 101 return new StructuredBlock[] { innerBlock }; 102 } 103 104 public void dumpInstruction(jode.decompiler.TabbedPrintWriter writer) 105 throws java.io.IOException 106 { 107 writer.println("JSR"); 108 writer.tab(); 109 innerBlock.dumpSource(writer); 110 writer.untab(); 111 } 112 } 113 | Popular Tags |