1 19 20 package soot.dava.internal.SET; 21 22 import soot.*; 23 import java.util.*; 24 import soot.util.*; 25 import soot.dava.internal.asg.*; 26 import soot.dava.internal.AST.*; 27 import soot.dava.toolkits.base.finders.*; 28 29 public class SETSynchronizedBlockNode extends SETNode 30 { 31 private Value local; 32 33 public SETSynchronizedBlockNode( ExceptionNode en, Value local) 34 { 35 super( en.get_Body()); 36 37 add_SubBody( en.get_TryBody()); 38 add_SubBody( en.get_CatchBody()); 39 40 this.local = local; 41 } 42 43 public IterableSet get_NaturalExits() 44 { 45 return ((SETNode) ((IterableSet) body2childChain.get( subBodies.get(0))).getLast()).get_NaturalExits(); 46 } 47 48 public ASTNode emit_AST() 49 { 50 return new ASTSynchronizedBlockNode( get_Label(), emit_ASTBody( (IterableSet) body2childChain.get( subBodies.get(0))), local); 51 } 52 53 public AugmentedStmt get_EntryStmt() 54 { 55 return ((SETNode) ((IterableSet) body2childChain.get( subBodies.get(0))).getFirst()).get_EntryStmt(); 56 } 57 58 protected boolean resolve( SETNode parent) 59 { 60 Iterator sbit = parent.get_SubBodies().iterator(); 61 62 while (sbit.hasNext()) { 63 IterableSet subBody = (IterableSet) sbit.next(); 64 65 if (subBody.intersects( get_Body())) 66 return subBody.isSupersetOf( get_Body()); 67 } 68 69 return true; 70 } 71 } 72 | Popular Tags |