1 19 20 25 26 27 28 29 30 31 package soot.jimple.internal; 32 33 34 import soot.tagkit.*; 35 import soot.util.*; 36 import java.util.*; 37 import soot.*; 38 import soot.jimple.*; 39 import soot.baf.*; 40 import soot.jimple.*; 41 42 public class JExitMonitorStmt extends AbstractStmt 43 implements ExitMonitorStmt 44 { 45 ValueBox opBox; 46 47 public JExitMonitorStmt(Value op) 48 { 49 this(Jimple.v().newImmediateBox(op)); 50 } 51 52 protected JExitMonitorStmt(ValueBox opBox) 53 { 54 this.opBox = opBox; 55 } 56 57 public Object clone() 58 { 59 return new JExitMonitorStmt(Jimple.cloneIfNecessary(getOp())); 60 } 61 62 public String toString() 63 { 64 return Jimple.v().EXITMONITOR + " " + opBox.getValue().toString(); 65 } 66 67 public void toString(UnitPrinter up) { 68 up.literal(Jimple.v().EXITMONITOR); 69 up.literal(" "); 70 opBox.toString(up); 71 } 72 73 public Value getOp() 74 { 75 return (Value) opBox.getValue(); 76 } 77 78 public void setOp(Value op) 79 { 80 opBox.setValue(op); 81 } 82 83 public ValueBox getOpBox() 84 { 85 return opBox; 86 } 87 88 public List getUseBoxes() 89 { 90 List list = new ArrayList(); 91 92 list.addAll(opBox.getValue().getUseBoxes()); 93 list.add(opBox); 94 95 return list; 96 } 97 98 public void apply(Switch sw) 99 { 100 ((StmtSwitch) sw).caseExitMonitorStmt(this); 101 102 } 103 104 public void convertToBaf(JimpleToBafContext context, List out) 105 { 106 ((ConvertToBaf)(getOp())).convertToBaf(context, out); 107 108 Unit u; 109 out.add(u = Baf.v().newExitMonitorInst()); 110 111 Unit currentUnit = this; 112 113 Iterator it = currentUnit.getTags().iterator(); 114 while(it.hasNext()) { 115 u.addTag((Tag) it.next()); 116 } 117 118 } 119 120 121 122 public boolean fallsThrough(){return true;} 123 public boolean branches(){return false;} 124 125 126 127 } 128 | Popular Tags |