1 19 20 25 26 27 28 29 30 31 package soot.jimple.internal; 32 33 import soot.*; 34 import soot.jimple.*; 35 import soot.util.*; 36 import java.util.*; 37 38 public class JRetStmt extends AbstractStmt implements RetStmt 39 { 40 ValueBox stmtAddressBox; 41 List useBoxes; 42 43 public JRetStmt(Value stmtAddress) 44 { 45 this(Jimple.v().newLocalBox(stmtAddress)); 46 } 47 48 protected JRetStmt(ValueBox stmtAddressBox) 49 { 50 this.stmtAddressBox = stmtAddressBox; 51 52 } 53 54 public Object clone() 55 { 56 return new JRetStmt(Jimple.cloneIfNecessary(getStmtAddress())); 57 } 58 59 public String toString() 60 { 61 return Jimple.v().RET + " " + stmtAddressBox.getValue().toString(); 62 } 63 64 public void toString(UnitPrinter up) { 65 up.literal(Jimple.v().RET); 66 up.literal(" "); 67 stmtAddressBox.toString(up); 68 } 69 70 public Value getStmtAddress() 71 { 72 return stmtAddressBox.getValue(); 73 } 74 75 public ValueBox getStmtAddressBox() 76 { 77 return stmtAddressBox; 78 } 79 80 public void setStmtAddress(Value stmtAddress) 81 { 82 stmtAddressBox.setValue(stmtAddress); 83 } 84 85 public List getUseBoxes() 86 { 87 List useBoxes = new ArrayList(); 88 89 useBoxes.addAll(stmtAddressBox.getValue().getUseBoxes()); 90 useBoxes.add(stmtAddressBox); 91 92 return useBoxes; 93 } 94 95 public void apply(Switch sw) 96 { 97 ((StmtSwitch) sw).caseRetStmt(this); 98 } 99 100 public boolean fallsThrough(){return true;} 101 public boolean branches(){return false;} 102 103 } 104 | Popular Tags |