protected ReferenceVariable arrayElementOfImpl(ReferenceVariable base) { VarNode l; if (base instanceof VarNode) { l = (VarNode) base; } else { FieldRefNode b = (FieldRefNode) base; l = pag.makeGlobalVarNode(b, b.getType()); pag.addEdge(b, l); } return pag.makeFieldRefNode(l, ArrayElement.v()); }
protected void assignObjectToImpl(ReferenceVariable lhs, AbstractObject obj) { AllocNode objNode = pag.makeAllocNode(new Pair("AbstractObject", obj.getType()), obj.getType(), null); VarNode var; if (lhs instanceof FieldRefNode) { var = pag.makeGlobalVarNode(objNode, objNode.getType()); pag.addEdge((Node) lhs, var); } else { var = (VarNode) lhs; } pag.addEdge(objNode, var); }
protected ReferenceVariable tempVariableImpl() { return pag.makeGlobalVarNode( new Pair("TempVar", new Integer(++G.v().SparkNativeHelper_tempVar)), RefType.v("java.lang.Object")); }
protected ReferenceVariable tempFieldImpl(String fieldsig) { return pag.makeGlobalVarNode(new Pair("tempField", fieldsig), RefType.v("java.lang.Object")); }
protected ReferenceVariable staticFieldImpl(String className, String fieldName) { SootClass c = RefType.v(className).getSootClass(); SootField f = c.getFieldByName(fieldName); return pag.makeGlobalVarNode(f, f.getType()); }