diff --git a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java index 0d621cbad..31bfe248e 100644 --- a/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java +++ b/com.ibm.wala.cast.java/src/com/ibm/wala/cast/java/loader/JavaSourceLoaderImpl.java @@ -30,6 +30,8 @@ import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalAccess.Access; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.ir.translator.AstTranslator; import com.ibm.wala.cast.ir.translator.AstTranslator.AstLexicalInformation; import com.ibm.wala.cast.java.ssa.AstJavaInstructionFactory; @@ -657,6 +659,18 @@ public abstract class JavaSourceLoaderImpl extends ClassLoaderImpl { public AstLexicalWrite LexicalWrite(int iindex, String definer, String globalName, TypeReference type, int rhs) { return new AstLexicalWrite(iindex, definer, globalName, type, rhs); } + + @Override + public AstPropertyRead PropertyRead(int iindex, int result, int objectRef, int memberRef) { + assert false; + return null; + } + + @Override + public AstPropertyWrite PropertyWrite(int iindex, int objectRef, int memberRef, int value) { + assert false; + return null; + } } protected static final InstructionFactory insts = new InstructionFactory(); diff --git a/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/TestPointerAnalyses.java b/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/TestPointerAnalyses.java index 9af2b023c..21935b7c9 100644 --- a/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/TestPointerAnalyses.java +++ b/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/TestPointerAnalyses.java @@ -23,6 +23,7 @@ import org.junit.Test; import com.ibm.wala.analysis.pointers.HeapGraph; import com.ibm.wala.cast.ipa.callgraph.GlobalObjectKey; import com.ibm.wala.cast.ir.ssa.AstGlobalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.GlobalVertex; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.ObjectVertex; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.PrototypeFieldVertex; @@ -251,18 +252,18 @@ public abstract class TestPointerAnalyses { SymbolTable symtab = ir.getSymbolTable(); for(SSAInstruction inst : ir.getInstructions()) { if (inst instanceof JavaScriptPropertyWrite) { - int property = ((JavaScriptPropertyWrite) inst).getMemberRef(); + int property = ((AstPropertyWrite) inst).getMemberRef(); if (symtab.isConstant(property)) { String p = JSCallGraphUtil.simulateToStringForPropertyNames(symtab.getConstantValue(property)); - int obj = ((JavaScriptPropertyWrite) inst).getObjectRef(); + int obj = ((AstPropertyWrite) inst).getObjectRef(); PointerKey objKey = fbPA.getHeapModel().getPointerKeyForLocal(node, obj); OrdinalSet objPtrs = fbPA.getPointsToSet(objKey); for(ObjectVertex o : objPtrs) { PointerKey propKey = fbPA.getHeapModel().getPointerKeyForInstanceField(o, new AstDynamicField(false, o.getConcreteType(), Atom.findOrCreateUnicodeAtom(p), JavaScriptTypes.Root)); Assert.assertTrue("object " + o + " should have field " + propKey, hg.hasEdge(o, propKey)); - int val = ((JavaScriptPropertyWrite) inst).getValue(); + int val = ((AstPropertyWrite) inst).getValue(); PointerKey valKey = fbPA.getHeapModel().getPointerKeyForLocal(node, val); OrdinalSet valPtrs = fbPA.getPointsToSet(valKey); for(ObjectVertex v : valPtrs) { diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/analysis/typeInference/JSTypeInference.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/analysis/typeInference/JSTypeInference.java index 40583c065..77e646d8e 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/analysis/typeInference/JSTypeInference.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/analysis/typeInference/JSTypeInference.java @@ -18,8 +18,6 @@ import com.ibm.wala.cast.analysis.typeInference.AstTypeInference; import com.ibm.wala.cast.js.ssa.JavaScriptCheckReference; import com.ibm.wala.cast.js.ssa.JavaScriptInstanceOf; import com.ibm.wala.cast.js.ssa.JavaScriptInvoke; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyRead; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyWrite; import com.ibm.wala.cast.js.ssa.JavaScriptTypeOfInstruction; import com.ibm.wala.cast.js.ssa.JavaScriptWithRegion; import com.ibm.wala.cast.js.ssa.PrototypeLookup; @@ -45,11 +43,6 @@ public class JSTypeInference extends AstTypeInference { result = new DeclaredTypeOperator(new ConeType(cha.getRootClass())); } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead inst) { - result = new DeclaredTypeOperator(new ConeType(cha.getRootClass())); - } - @Override public void visitTypeOf(JavaScriptTypeOfInstruction inst) { result = new DeclaredTypeOperator(new PointType(cha.lookupClass(JavaScriptTypes.String))); @@ -60,10 +53,6 @@ public class JSTypeInference extends AstTypeInference { result = new DeclaredTypeOperator(new PointType(cha.lookupClass(JavaScriptTypes.Boolean))); } - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite inst) { - } - @Override public void visitCheckRef(JavaScriptCheckReference instruction) { } diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java index 9820ab35d..75a185d20 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraph.java @@ -18,6 +18,7 @@ import java.util.Set; import com.ibm.wala.analysis.pointers.HeapGraph; import com.ibm.wala.cast.ipa.callgraph.AstHeapModel; import com.ibm.wala.cast.ir.ssa.AstGlobalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.AbstractVertexVisitor; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.CreationSiteVertex; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.FuncVertex; @@ -202,7 +203,7 @@ public class FlowGraph implements Iterable { DefUse du = cache.getDefUse(getIR(cache, func)); for(SSAInstruction inst : Iterator2Iterable.make(du.getUses(rval))) { if (inst instanceof JavaScriptPropertyWrite) { - int obj = ((JavaScriptPropertyWrite) inst).getObjectRef(); + int obj = ((AstPropertyWrite) inst).getObjectRef(); VarVertex object = factory.makeVarVertex(func, obj); for(ObjectVertex o : getPointsToSet(object)) { PrototypeFieldVertex prototype = get(PrototypeField.prototype, o); @@ -458,7 +459,7 @@ public class FlowGraph implements Iterable { DefUse du = cache.getDefUse(getIR(cache, func)); for(SSAInstruction inst : Iterator2Iterable.make(du.getUses(rval))) { if (inst instanceof JavaScriptPropertyWrite) { - int obj = ((JavaScriptPropertyWrite) inst).getObjectRef(); + int obj = ((AstPropertyWrite) inst).getObjectRef(); VarVertex object = factory.makeVarVertex(func, obj); for(ObjectVertex o : getPointsToSet(object)) { addEdge(ensureNode(o), ensureNode(propertyKey(property.getPropName(), o))); diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraphBuilder.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraphBuilder.java index 06f7eb1d7..a06520808 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraphBuilder.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/callgraph/fieldbased/flowgraph/FlowGraphBuilder.java @@ -15,6 +15,8 @@ import com.ibm.wala.cast.ir.ssa.AstGlobalWrite; import com.ibm.wala.cast.ir.ssa.AstLexicalAccess.Access; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.js.callgraph.fieldbased.JSMethodInstructionVisitor; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.CreationSiteVertex; import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.FuncVertex; @@ -24,8 +26,6 @@ import com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices.VertexFactor import com.ibm.wala.cast.js.ipa.callgraph.JSCallGraphUtil; import com.ibm.wala.cast.js.ipa.callgraph.JSSSAPropagationCallGraphBuilder; import com.ibm.wala.cast.js.ssa.JavaScriptInvoke; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyRead; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyWrite; import com.ibm.wala.cast.js.ssa.PrototypeLookup; import com.ibm.wala.cast.js.ssa.SetPrototype; import com.ibm.wala.cast.js.types.JavaScriptMethods; @@ -255,7 +255,7 @@ public class FlowGraphBuilder { } @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite pw) { + public void visitPropertyWrite(AstPropertyWrite pw) { int p = pw.getMemberRef(); if(symtab.isConstant(p)) { String pn = JSCallGraphUtil.simulateToStringForPropertyNames(symtab.getConstantValue(p)); @@ -298,7 +298,7 @@ public class FlowGraphBuilder { } @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead pr) { + public void visitPropertyRead(AstPropertyRead pr) { int p = pr.getMemberRef(); if(symtab.isConstant(p)) { String pn = JSCallGraphUtil.simulateToStringForPropertyNames(symtab.getConstantValue(p)); diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/cfg/JSInducedCFG.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/cfg/JSInducedCFG.java index 2b5451efb..96f87ab7f 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/cfg/JSInducedCFG.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/cfg/JSInducedCFG.java @@ -15,8 +15,6 @@ import com.ibm.wala.cast.js.ssa.JSInstructionVisitor; import com.ibm.wala.cast.js.ssa.JavaScriptCheckReference; import com.ibm.wala.cast.js.ssa.JavaScriptInstanceOf; import com.ibm.wala.cast.js.ssa.JavaScriptInvoke; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyRead; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyWrite; import com.ibm.wala.cast.js.ssa.JavaScriptTypeOfInstruction; import com.ibm.wala.cast.js.ssa.JavaScriptWithRegion; import com.ibm.wala.cast.js.ssa.PrototypeLookup; @@ -42,14 +40,6 @@ public class JSInducedCFG extends AstInducedCFG { breakBasicBlock(); } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead inst) { - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite inst) { - } - @Override public void visitTypeOf(JavaScriptTypeOfInstruction inst) { } @@ -88,14 +78,6 @@ public class JSInducedCFG extends AstInducedCFG { public void visitJavaScriptInvoke(JavaScriptInvoke inst) { } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead inst) { - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite inst) { - } - @Override public void visitTypeOf(JavaScriptTypeOfInstruction inst) { } diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSSSAPropagationCallGraphBuilder.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSSSAPropagationCallGraphBuilder.java index ba3076336..c4064401f 100755 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSSSAPropagationCallGraphBuilder.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/callgraph/JSSSAPropagationCallGraphBuilder.java @@ -28,8 +28,6 @@ import com.ibm.wala.cast.js.ssa.JSInstructionVisitor; import com.ibm.wala.cast.js.ssa.JavaScriptCheckReference; import com.ibm.wala.cast.js.ssa.JavaScriptInstanceOf; import com.ibm.wala.cast.js.ssa.JavaScriptInvoke; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyRead; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyWrite; import com.ibm.wala.cast.js.ssa.JavaScriptTypeOfInstruction; import com.ibm.wala.cast.js.ssa.JavaScriptWithRegion; import com.ibm.wala.cast.js.ssa.PrototypeLookup; @@ -262,16 +260,6 @@ public class JSSSAPropagationCallGraphBuilder extends AstSSAPropagationCallGraph bingo = true; } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction) { - bingo = true; - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction) { - bingo = true; - } - @Override public void visitTypeOf(JavaScriptTypeOfInstruction inst) { bingo = true; @@ -338,16 +326,6 @@ public class JSSSAPropagationCallGraphBuilder extends AstSSAPropagationCallGraph } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction) { - - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction) { - - } - @Override public void visitJavaScriptInstanceOf(JavaScriptInstanceOf instruction) { @@ -543,36 +521,6 @@ public class JSSSAPropagationCallGraphBuilder extends AstSSAPropagationCallGraph handleBinaryOp(instruction, node, symbolTable, du); } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction) { - if (AstSSAPropagationCallGraphBuilder.DEBUG_PROPERTIES) { - Position instructionPosition = getInstructionPosition(instruction); - if (instructionPosition != null) { - System.err.println("processing read instruction " + instruction + ", position " + instructionPosition); - } - } - newFieldRead(node, instruction.getUse(0), instruction.getUse(1), instruction.getDef(0)); - } - - private Position getInstructionPosition(SSAInstruction instruction) { - IMethod method = node.getMethod(); - if (method instanceof AstMethod) { - return ((AstMethod) method).getSourcePosition(instruction.iindex); - } - return null; - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction) { - if (AstSSAPropagationCallGraphBuilder.DEBUG_PROPERTIES) { - Position instructionPosition = getInstructionPosition(instruction); - if (instructionPosition != null) { - System.err.println("processing write instruction " + instruction + ", position " + instructionPosition); - } - } - newFieldWrite(node, instruction.getUse(0), instruction.getUse(1), instruction.getUse(2)); - } - @Override public void visitJavaScriptInvoke(JavaScriptInvoke instruction) { if (instruction.getDeclaredTarget().equals(JavaScriptMethods.dispatchReference)) { diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/modref/JavaScriptModRef.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/modref/JavaScriptModRef.java index 74019b089..d0111c697 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/modref/JavaScriptModRef.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ipa/modref/JavaScriptModRef.java @@ -12,14 +12,13 @@ package com.ibm.wala.cast.js.ipa.modref; import java.util.Collection; + import com.ibm.wala.cast.ipa.callgraph.AstHeapModel; import com.ibm.wala.cast.ipa.modref.AstModRef; import com.ibm.wala.cast.js.ssa.JSInstructionVisitor; import com.ibm.wala.cast.js.ssa.JavaScriptCheckReference; import com.ibm.wala.cast.js.ssa.JavaScriptInstanceOf; import com.ibm.wala.cast.js.ssa.JavaScriptInvoke; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyRead; -import com.ibm.wala.cast.js.ssa.JavaScriptPropertyWrite; import com.ibm.wala.cast.js.ssa.JavaScriptTypeOfInstruction; import com.ibm.wala.cast.js.ssa.JavaScriptWithRegion; import com.ibm.wala.cast.js.ssa.PrototypeLookup; @@ -29,7 +28,6 @@ import com.ibm.wala.ipa.callgraph.propagation.InstanceKey; import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis; import com.ibm.wala.ipa.callgraph.propagation.PointerKey; import com.ibm.wala.ipa.modref.ExtendedHeapModel; -import com.ibm.wala.util.collections.Iterator2Iterable; public class JavaScriptModRef extends AstModRef { @@ -49,25 +47,6 @@ public class JavaScriptModRef extends AstModRef { // do nothing } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction) { - PointerKey obj = h.getPointerKeyForLocal(n, instruction.getObjectRef()); - PointerKey prop = h.getPointerKeyForLocal(n, instruction.getMemberRef()); - for(InstanceKey o : pa.getPointsToSet(obj)) { - for(InstanceKey p : pa.getPointsToSet(prop)) { - for(PointerKey x : Iterator2Iterable.make(h.getPointerKeysForReflectedFieldRead(o, p))) { - assert x != null : instruction; - result.add(x); - } - } - } - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction) { - // do nothing - } - @Override public void visitJavaScriptInstanceOf(JavaScriptInstanceOf instruction) { // do nothing @@ -117,24 +96,6 @@ public class JavaScriptModRef extends AstModRef { // do nothing } - @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction) { - // do nothing - } - - @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction) { - PointerKey obj = h.getPointerKeyForLocal(n, instruction.getObjectRef()); - PointerKey prop = h.getPointerKeyForLocal(n, instruction.getMemberRef()); - for(T o : pa.getPointsToSet(obj)) { - for(T p : pa.getPointsToSet(prop)) { - for(PointerKey x : Iterator2Iterable.make(h.getPointerKeysForReflectedFieldWrite(o, p))) { - assert x != null : instruction; - result.add(x); - } - } - } - } @Override public void visitJavaScriptInstanceOf(JavaScriptInstanceOf instruction) { diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/loader/JavaScriptLoader.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/loader/JavaScriptLoader.java index 8d267cbc1..78be30fc2 100755 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/loader/JavaScriptLoader.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/loader/JavaScriptLoader.java @@ -26,6 +26,8 @@ import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalAccess.Access; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.ir.ssa.EachElementGetInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.cast.ir.translator.AstTranslator.AstLexicalInformation; @@ -241,12 +243,12 @@ public class JavaScriptLoader extends CAstAbstractModuleLoader { } @Override - public JavaScriptPropertyRead PropertyRead(int iindex, int result, int objectRef, int memberRef) { + public AstPropertyRead PropertyRead(int iindex, int result, int objectRef, int memberRef) { return new JavaScriptPropertyRead(iindex, result, objectRef, memberRef); } @Override - public JavaScriptPropertyWrite PropertyWrite(int iindex, int objectRef, int memberRef, int value) { + public AstPropertyWrite PropertyWrite(int iindex, int objectRef, int memberRef, int value) { return new JavaScriptPropertyWrite(iindex, objectRef, memberRef, value); } diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSAbstractInstructionVisitor.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSAbstractInstructionVisitor.java index 6c5a51270..73e4ba909 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSAbstractInstructionVisitor.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSAbstractInstructionVisitor.java @@ -11,6 +11,8 @@ package com.ibm.wala.cast.js.ssa; import com.ibm.wala.cast.ir.ssa.AstAbstractInstructionVisitor; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; public class JSAbstractInstructionVisitor extends AstAbstractInstructionVisitor @@ -23,12 +25,12 @@ public class JSAbstractInstructionVisitor } @Override - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction) { + public void visitPropertyRead(AstPropertyRead instruction) { } @Override - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction) { + public void visitPropertyWrite(AstPropertyWrite instruction) { } diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionFactory.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionFactory.java index 1fcf22e0f..d39320917 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionFactory.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionFactory.java @@ -29,10 +29,6 @@ public interface JSInstructionFactory extends AstInstructionFactory { JavaScriptInvoke Invoke(int iindex, int function, int[] params, int exception, CallSiteReference site); - JavaScriptPropertyRead PropertyRead(int iindex, int result, int objectRef, int memberRef); - - JavaScriptPropertyWrite PropertyWrite(int iindex, int objectRef, int memberRef, int value); - SSAPutInstruction PutInstruction(int iindex, int ref, int value, String field); JavaScriptTypeOfInstruction TypeOfInstruction(int iindex, int lval, int object); diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionVisitor.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionVisitor.java index 347f18d8e..dda40e532 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionVisitor.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JSInstructionVisitor.java @@ -17,11 +17,7 @@ public interface JSInstructionVisitor extends AstInstructionVisitor { public void visitJavaScriptInvoke(JavaScriptInvoke instruction); public void visitTypeOf(JavaScriptTypeOfInstruction instruction); - - public void visitJavaScriptPropertyRead(JavaScriptPropertyRead instruction); - - public void visitJavaScriptPropertyWrite(JavaScriptPropertyWrite instruction); - + public void visitJavaScriptInstanceOf(JavaScriptInstanceOf instruction); public void visitWithRegion(JavaScriptWithRegion instruction); diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyRead.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyRead.java index c518eb3c2..5c8f3f457 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyRead.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyRead.java @@ -12,33 +12,14 @@ package com.ibm.wala.cast.js.ssa; import java.util.Collection; -import com.ibm.wala.cast.ir.ssa.AbstractReflectiveGet; -import com.ibm.wala.ssa.SSAInstruction; -import com.ibm.wala.ssa.SSAInstructionFactory; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; import com.ibm.wala.types.TypeReference; -public class JavaScriptPropertyRead extends AbstractReflectiveGet { +public class JavaScriptPropertyRead extends AstPropertyRead { public JavaScriptPropertyRead(int iindex, int result, int objectRef, int memberRef) { super(iindex, result, objectRef, memberRef); } - @Override - public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { - return - ((JSInstructionFactory)insts).PropertyRead(iindex, - defs==null? getDef(): defs[0], - uses==null? getObjectRef(): uses[0], - uses==null? getMemberRef(): uses[1]); - } - - /* (non-Javadoc) - * @see com.ibm.domo.ssa.Instruction#isPEI() - */ - @Override - public boolean isPEI() { - return true; - } - /* (non-Javadoc) * @see com.ibm.domo.ssa.Instruction#getExceptionTypes() */ @@ -46,14 +27,4 @@ public class JavaScriptPropertyRead extends AbstractReflectiveGet { public Collection getExceptionTypes() { return Util.typeErrorExceptions(); } - - /** - /* (non-Javadoc) - * @see com.ibm.wala.ssa.SSAInstruction#visit(com.ibm.wala.ssa.SSAInstruction.IVisitor) - */ - @Override - public void visit(IVisitor v) { - assert v instanceof JSInstructionVisitor; - ((JSInstructionVisitor)v).visitJavaScriptPropertyRead(this); - } } diff --git a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyWrite.java b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyWrite.java index 892c7ef47..6131c2b2c 100644 --- a/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyWrite.java +++ b/com.ibm.wala.cast.js/source/com/ibm/wala/cast/js/ssa/JavaScriptPropertyWrite.java @@ -12,47 +12,15 @@ package com.ibm.wala.cast.js.ssa; import java.util.Collection; -import com.ibm.wala.cast.ir.ssa.AbstractReflectivePut; -import com.ibm.wala.ssa.SSAInstruction; -import com.ibm.wala.ssa.SSAInstructionFactory; -import com.ibm.wala.ssa.SymbolTable; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.types.TypeReference; -public class JavaScriptPropertyWrite extends AbstractReflectivePut { +public class JavaScriptPropertyWrite extends AstPropertyWrite { public JavaScriptPropertyWrite(int iindex, int objectRef, int memberRef, int value) { super(iindex, objectRef, memberRef, value); } - @Override - public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { - return ((JSInstructionFactory)insts).PropertyWrite(iindex, uses == null ? getObjectRef() : uses[0], uses == null ? getMemberRef() : uses[1], - uses == null ? getValue() : uses[2]); - } - - @Override - public String toString(SymbolTable symbolTable) { - return super.toString(symbolTable) + " = " + getValueString(symbolTable, getValue()); - } - - /** - * @see com.ibm.wala.ssa.SSAInstruction#visit(IVisitor) - */ - @Override - public void visit(IVisitor v) { - assert v instanceof JSInstructionVisitor; - ((JSInstructionVisitor) v).visitJavaScriptPropertyWrite(this); - } - - /* - * (non-Javadoc) - * @see com.ibm.domo.ssa.Instruction#isPEI() - */ - @Override - public boolean isPEI() { - return true; - } - /* * (non-Javadoc) * @see com.ibm.domo.ssa.Instruction#getExceptionTypes() diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/analysis/typeInference/AstTypeInference.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/analysis/typeInference/AstTypeInference.java index d6edb1eac..e79faf0de 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/analysis/typeInference/AstTypeInference.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/analysis/typeInference/AstTypeInference.java @@ -21,6 +21,8 @@ import com.ibm.wala.cast.ir.ssa.AstInstructionVisitor; import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.ir.ssa.EachElementGetInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.ssa.IR; @@ -30,6 +32,15 @@ public abstract class AstTypeInference extends TypeInference { private final TypeAbstraction booleanType; protected class AstTypeOperatorFactory extends TypeOperatorFactory implements AstInstructionVisitor { + @Override + public void visitPropertyRead(AstPropertyRead inst) { + result = new DeclaredTypeOperator(new ConeType(cha.getRootClass())); + } + + @Override + public void visitPropertyWrite(AstPropertyWrite inst) { + } + @Override public void visitAstLexicalRead(AstLexicalRead inst) { result = new DeclaredTypeOperator(new ConeType(cha.getRootClass())); diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java index 8436cd297..d61d28fc0 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/callgraph/AstSSAPropagationCallGraphBuilder.java @@ -28,11 +28,14 @@ import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalAccess.Access; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.ir.ssa.EachElementGetInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.cast.ir.translator.AstTranslator; import com.ibm.wala.cast.loader.AstMethod; import com.ibm.wala.cast.loader.AstMethod.LexicalInformation; +import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position; import com.ibm.wala.classLoader.IClass; import com.ibm.wala.classLoader.IMethod; import com.ibm.wala.fixpoint.AbstractOperator; @@ -64,6 +67,7 @@ import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.ipa.modref.ArrayLengthKey; import com.ibm.wala.ssa.DefUse; import com.ibm.wala.ssa.IRView; +import com.ibm.wala.ssa.SSAInstruction; import com.ibm.wala.ssa.SSAPutInstruction; import com.ibm.wala.ssa.SymbolTable; import com.ibm.wala.util.collections.HashSetFactory; @@ -196,6 +200,16 @@ public abstract class AstSSAPropagationCallGraphBuilder extends SSAPropagationCa super(analysis, lpk); } + @Override + public void visitPropertyRead(AstPropertyRead instruction) { + + } + + @Override + public void visitPropertyWrite(AstPropertyWrite instruction) { + + } + @Override public void visitAstLexicalRead(AstLexicalRead instruction) { @@ -260,6 +274,16 @@ public abstract class AstSSAPropagationCallGraphBuilder extends SSAPropagationCa super(vn); } + @Override + public void visitPropertyRead(AstPropertyRead instruction) { + bingo = true; + } + + @Override + public void visitPropertyWrite(AstPropertyWrite instruction) { + bingo = true; + } + @Override public void visitAstLexicalRead(AstLexicalRead instruction) { bingo = true; @@ -367,6 +391,35 @@ public abstract class AstSSAPropagationCallGraphBuilder extends SSAPropagationCa // } } + @Override + public void visitPropertyRead(AstPropertyRead instruction) { + if (AstSSAPropagationCallGraphBuilder.DEBUG_PROPERTIES) { + Position instructionPosition = getInstructionPosition(instruction); + if (instructionPosition != null) { + System.err.println("processing read instruction " + instruction + ", position " + instructionPosition); + } + } + newFieldRead(node, instruction.getUse(0), instruction.getUse(1), instruction.getDef(0)); + } + + private Position getInstructionPosition(SSAInstruction instruction) { + IMethod method = node.getMethod(); + if (method instanceof AstMethod) { + return ((AstMethod) method).getSourcePosition(instruction.iindex); + } + return null; + } + + @Override + public void visitPropertyWrite(AstPropertyWrite instruction) { + if (AstSSAPropagationCallGraphBuilder.DEBUG_PROPERTIES) { + Position instructionPosition = getInstructionPosition(instruction); + if (instructionPosition != null) { + System.err.println("processing write instruction " + instruction + ", position " + instructionPosition); + } + } + newFieldWrite(node, instruction.getUse(0), instruction.getUse(1), instruction.getUse(2)); + } @Override diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/modref/AstModRef.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/modref/AstModRef.java index 9fe09cb4e..0af83c483 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/modref/AstModRef.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ipa/modref/AstModRef.java @@ -21,6 +21,8 @@ import com.ibm.wala.cast.ir.ssa.AstInstructionVisitor; import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.ir.ssa.EachElementGetInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.ipa.callgraph.CGNode; @@ -29,6 +31,7 @@ import com.ibm.wala.ipa.callgraph.propagation.PointerAnalysis; import com.ibm.wala.ipa.callgraph.propagation.PointerKey; import com.ibm.wala.ipa.modref.ExtendedHeapModel; import com.ibm.wala.ipa.modref.ModRef; +import com.ibm.wala.util.collections.Iterator2Iterable; public class AstModRef extends ModRef { @@ -43,6 +46,25 @@ public class AstModRef extends ModRef { super(n, result, pa, h); } + @Override + public void visitPropertyRead(AstPropertyRead instruction) { + PointerKey obj = h.getPointerKeyForLocal(n, instruction.getObjectRef()); + PointerKey prop = h.getPointerKeyForLocal(n, instruction.getMemberRef()); + for(InstanceKey o : pa.getPointsToSet(obj)) { + for(InstanceKey p : pa.getPointsToSet(prop)) { + for(PointerKey x : Iterator2Iterable.make(h.getPointerKeysForReflectedFieldRead(o, p))) { + assert x != null : instruction; + result.add(x); + } + } + } + } + + @Override + public void visitPropertyWrite(AstPropertyWrite instruction) { + // do nothing + } + @Override public void visitAstLexicalRead(AstLexicalRead instruction) { @@ -147,6 +169,25 @@ public class AstModRef extends ModRef { public void visitEcho(AstEchoInstruction inst) { } + + @Override + public void visitPropertyRead(AstPropertyRead instruction) { + // do nothing + } + + @Override + public void visitPropertyWrite(AstPropertyWrite instruction) { + PointerKey obj = h.getPointerKeyForLocal(n, instruction.getObjectRef()); + PointerKey prop = h.getPointerKeyForLocal(n, instruction.getMemberRef()); + for(T o : pa.getPointsToSet(obj)) { + for(T p : pa.getPointsToSet(prop)) { + for(PointerKey x : Iterator2Iterable.make(h.getPointerKeysForReflectedFieldWrite(o, p))) { + assert x != null : instruction; + result.add(x); + } + } + } + } } @Override diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/cfg/AstInducedCFG.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/cfg/AstInducedCFG.java index e8ff6ebe9..2892c424b 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/cfg/AstInducedCFG.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/cfg/AstInducedCFG.java @@ -18,6 +18,8 @@ import com.ibm.wala.cast.ir.ssa.AstInstructionVisitor; import com.ibm.wala.cast.ir.ssa.AstIsDefinedInstruction; import com.ibm.wala.cast.ir.ssa.AstLexicalRead; import com.ibm.wala.cast.ir.ssa.AstLexicalWrite; +import com.ibm.wala.cast.ir.ssa.AstPropertyRead; +import com.ibm.wala.cast.ir.ssa.AstPropertyWrite; import com.ibm.wala.cast.ir.ssa.EachElementGetInstruction; import com.ibm.wala.cast.ir.ssa.EachElementHasNextInstruction; import com.ibm.wala.cfg.InducedCFG; @@ -37,6 +39,14 @@ public class AstInducedCFG extends InducedCFG { super(r); } + @Override + public void visitPropertyRead(AstPropertyRead inst) { + } + + @Override + public void visitPropertyWrite(AstPropertyWrite inst) { + } + @Override public void visitAstLexicalRead(AstLexicalRead inst) { } @@ -85,6 +95,14 @@ public class AstInducedCFG extends InducedCFG { super(r); } + @Override + public void visitPropertyRead(AstPropertyRead inst) { + } + + @Override + public void visitPropertyWrite(AstPropertyWrite inst) { + } + @Override public void visitAstLexicalRead(AstLexicalRead inst) { } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstAbstractInstructionVisitor.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstAbstractInstructionVisitor.java index 9fd7b7b00..d0498dcb2 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstAbstractInstructionVisitor.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstAbstractInstructionVisitor.java @@ -17,6 +17,16 @@ public abstract class AstAbstractInstructionVisitor implements AstInstructionVisitor { + @Override + public void visitPropertyRead(AstPropertyRead instruction) { + + } + + @Override + public void visitPropertyWrite(AstPropertyWrite instruction) { + + } + @Override public void visitAstLexicalRead(AstLexicalRead instruction) { diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionFactory.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionFactory.java index f4ea9e436..d68c8034f 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionFactory.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionFactory.java @@ -51,4 +51,8 @@ public interface AstInstructionFactory extends SSAInstructionFactory { EachElementHasNextInstruction EachElementHasNextInstruction(int iindex, int lValue, int objectRef, int previousProp); + AstPropertyRead PropertyRead(int iindex, int result, int objectRef, int memberRef); + + AstPropertyWrite PropertyWrite(int iindex, int objectRef, int memberRef, int value); + } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionVisitor.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionVisitor.java index da6580178..34d591481 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionVisitor.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstInstructionVisitor.java @@ -31,5 +31,10 @@ public interface AstInstructionVisitor extends SSAInstruction.IVisitor { public void visitIsDefined(AstIsDefinedInstruction inst); public void visitEcho(AstEchoInstruction inst); + + public void visitPropertyRead(AstPropertyRead instruction); + + public void visitPropertyWrite(AstPropertyWrite instruction); + } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstPropertyRead.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstPropertyRead.java new file mode 100644 index 000000000..3a5a826e8 --- /dev/null +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstPropertyRead.java @@ -0,0 +1,36 @@ +package com.ibm.wala.cast.ir.ssa; + +import com.ibm.wala.ssa.SSAInstruction; +import com.ibm.wala.ssa.SSAInstructionFactory; + +public abstract class AstPropertyRead extends AbstractReflectiveGet { + + public AstPropertyRead(int iindex, int result, int objectRef, int memberRef) { + super(iindex, result, objectRef, memberRef); + } + + @Override + public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { + return + ((AstInstructionFactory)insts).PropertyRead(iindex, + defs==null? getDef(): defs[0], + uses==null? getObjectRef(): uses[0], + uses==null? getMemberRef(): uses[1]); + } + + @Override + public boolean isPEI() { + return true; + } + + /** + /* (non-Javadoc) + * @see com.ibm.wala.ssa.SSAInstruction#visit(com.ibm.wala.ssa.SSAInstruction.IVisitor) + */ + @Override + public void visit(IVisitor v) { + assert v instanceof AstInstructionVisitor; + ((AstInstructionVisitor)v).visitPropertyRead(this); + } + +} \ No newline at end of file diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstPropertyWrite.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstPropertyWrite.java new file mode 100644 index 000000000..89a4ef954 --- /dev/null +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/ssa/AstPropertyWrite.java @@ -0,0 +1,38 @@ +package com.ibm.wala.cast.ir.ssa; + +import com.ibm.wala.ssa.SSAInstruction; +import com.ibm.wala.ssa.SSAInstructionFactory; +import com.ibm.wala.ssa.SymbolTable; + +public abstract class AstPropertyWrite extends AbstractReflectivePut { + + public AstPropertyWrite(int iindex, int objectRef, int memberRef, int value) { + super(iindex, objectRef, memberRef, value); + } + + @Override + public SSAInstruction copyForSSA(SSAInstructionFactory insts, int[] defs, int[] uses) { + return ((AstInstructionFactory)insts).PropertyWrite(iindex, uses == null ? getObjectRef() : uses[0], uses == null ? getMemberRef() : uses[1], + uses == null ? getValue() : uses[2]); + } + + @Override + public String toString(SymbolTable symbolTable) { + return super.toString(symbolTable) + " = " + getValueString(symbolTable, getValue()); + } + + /** + * @see com.ibm.wala.ssa.SSAInstruction#visit(IVisitor) + */ + @Override + public void visit(IVisitor v) { + assert v instanceof AstInstructionVisitor; + ((AstInstructionVisitor) v).visitPropertyWrite(this); + } + + @Override + public boolean isPEI() { + return true; + } + +} \ No newline at end of file diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AbstractCodeEntity.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AbstractCodeEntity.java index 930d82c6b..ccf84b360 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AbstractCodeEntity.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AbstractCodeEntity.java @@ -14,7 +14,6 @@ */ package com.ibm.wala.cast.ir.translator; -import com.ibm.wala.cast.tree.CAstControlFlowMap; import com.ibm.wala.cast.tree.CAstNode; import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position; import com.ibm.wala.cast.tree.CAstType; @@ -48,7 +47,7 @@ public abstract class AbstractCodeEntity extends AbstractEntity { } @Override - public CAstControlFlowMap getControlFlow() { + public CAstControlFlowRecorder getControlFlow() { return cfg; } diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java index cf031dd9e..69742609d 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AstTranslator.java @@ -1454,6 +1454,8 @@ public abstract class AstTranslator extends CAstVisitor