1 19 20 25 26 27 28 29 30 31 package soot.jimple.internal; 32 33 34 import soot.tagkit.*; 35 import soot.*; 36 import soot.jimple.*; 37 import soot.baf.*; 38 import soot.jimple.*; 39 import soot.util.*; 40 import java.util.*; 41 42 public class JEnterMonitorStmt extends AbstractStmt 43 implements EnterMonitorStmt 44 { 45 ValueBox opBox; 46 47 public JEnterMonitorStmt(Value op) 48 { 49 this(Jimple.v().newImmediateBox(op)); 50 } 51 52 protected JEnterMonitorStmt(ValueBox opBox) 53 { 54 this.opBox = opBox; 55 } 56 57 public Object clone() 58 { 59 return new JEnterMonitorStmt(Jimple.cloneIfNecessary(getOp())); 60 } 61 62 public String toString() 63 { 64 return Jimple.v().ENTERMONITOR + " " + opBox.getValue().toString(); 65 } 66 67 public void toString(UnitPrinter up) { 68 up.literal(Jimple.v().ENTERMONITOR); 69 up.literal(" "); 70 opBox.toString(up); 71 } 72 73 public Value getOp() 74 { 75 return 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).caseEnterMonitorStmt(this); 101 102 } 103 104 public void convertToBaf(JimpleToBafContext context, List out) 105 { 106 ((ConvertToBaf)(getOp())).convertToBaf(context, out); 107 Unit u; 108 out.add(u = Baf.v().newEnterMonitorInst()); 109 110 Unit currentUnit = this; 111 112 Iterator it = currentUnit.getTags().iterator(); 113 while(it.hasNext()) { 114 u.addTag((Tag) it.next()); 115 } 116 117 } 118 119 120 121 public boolean fallsThrough(){return true;} 122 public boolean branches() { return false;} 123 124 } 125 | Popular Tags |