@Override public DefUse getDU(CGNode node) { return shrikeCI.getDU(node); }
@Override public DefUse getDU(CGNode node) { return shrikeCI.getDU(node); }
@Override public DefUse getDU(CGNode node) { return getCFAInterpreter(node).getDU(node); }
@Override public DefUse getDU(CGNode node) { return getCFAInterpreter(node).getDU(node); }
@Override public DefUse getDU() { if (getMethod().isWalaSynthetic()) { // disable local cache in this case, as context interpreters // do weird things like mutate IRs return getCallGraph().getInterpreter(this).getDU(this); } DefUse du = this.du.get(); if (du == null) { du = getCallGraph().getInterpreter(this).getDU(this); this.du = new WeakReference<>(du); } return du; }
@Override public DefUse getDU() { if (getMethod().isWalaSynthetic()) { // disable local cache in this case, as context interpreters // do weird things like mutate IRs return getCallGraph().getInterpreter(this).getDU(this); } DefUse du = this.du.get(); if (du == null) { du = getCallGraph().getInterpreter(this).getDU(this); this.du = new WeakReference<>(du); } return du; }
public ConstraintVisitor(SSAPropagationCallGraphBuilder builder, CGNode node) { this.builder = builder; this.node = node; this.callGraph = builder.getCallGraph(); this.system = builder.getPropagationSystem(); SSAContextInterpreter interp = builder.getCFAContextInterpreter(); this.ir = interp.getIRView(node); this.symbolTable = this.ir.getSymbolTable(); this.du = interp.getDU(node); assert symbolTable != null; }
public ConstraintVisitor(SSAPropagationCallGraphBuilder builder, CGNode node) { this.builder = builder; this.node = node; this.callGraph = builder.getCallGraph(); this.system = builder.getPropagationSystem(); SSAContextInterpreter interp = builder.getCFAContextInterpreter(); this.ir = interp.getIRView(node); this.symbolTable = this.ir.getSymbolTable(); this.du = interp.getDU(node); assert symbolTable != null; }
DefUse du = getCFAContextInterpreter().getDU(node); addNodePassthruExceptionConstraints(node, ir, du);
DefUse du = getCFAContextInterpreter().getDU(node); addNodePassthruExceptionConstraints(node, ir, du);
if (vn > 0) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(definingNode); DefUse du = getBuilder().getCFAContextInterpreter().getDU(definingNode); SymbolTable st = ir.getSymbolTable();
if (vn > 0) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(definingNode); DefUse du = getBuilder().getCFAContextInterpreter().getDU(definingNode); SymbolTable st = ir.getSymbolTable();
public void newFieldWrite(CGNode opNode, int objVn, int fieldsVn, int rhsVn) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(opNode); SymbolTable symtab = ir.getSymbolTable(); DefUse du = getBuilder().getCFAContextInterpreter().getDU(opNode); PointerKey rhsKey = getBuilder().getPointerKeyForLocal(opNode, rhsVn); if (contentsAreInvariant(symtab, du, rhsVn)) { system.recordImplicitPointsToSet(rhsKey); newFieldWrite(opNode, objVn, fieldsVn, getInvariantContents(symtab, du, opNode, rhsVn)); } else { newFieldWrite(opNode, objVn, fieldsVn, rhsKey); } }
public void newFieldWrite(CGNode opNode, int objVn, int fieldsVn, int rhsVn) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(opNode); SymbolTable symtab = ir.getSymbolTable(); DefUse du = getBuilder().getCFAContextInterpreter().getDU(opNode); PointerKey rhsKey = getBuilder().getPointerKeyForLocal(opNode, rhsVn); if (contentsAreInvariant(symtab, du, rhsVn)) { system.recordImplicitPointsToSet(rhsKey); newFieldWrite(opNode, objVn, fieldsVn, getInvariantContents(symtab, du, opNode, rhsVn)); } else { newFieldWrite(opNode, objVn, fieldsVn, rhsKey); } }
protected void newFieldOperationFieldConstant(CGNode opNode, final boolean isLoadOperation, final ReflectedFieldAction action, final int objVn, final InstanceKey[] fieldsKeys) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(opNode); SymbolTable symtab = ir.getSymbolTable(); DefUse du = getBuilder().getCFAContextInterpreter().getDU(opNode); PointerKey objKey = getBuilder().getPointerKeyForLocal(opNode, objVn); if (contentsAreInvariant(symtab, du, objVn)) { system.recordImplicitPointsToSet(objKey); InstanceKey[] objectKeys = getInvariantContents(symtab, du, opNode, objVn); newFieldOperationObjectAndFieldConstant(isLoadOperation, action, objectKeys, fieldsKeys); } else { newFieldOperationOnlyFieldConstant(isLoadOperation, action, objKey, fieldsKeys); } }
protected void newFieldOperationFieldConstant(CGNode opNode, final boolean isLoadOperation, final ReflectedFieldAction action, final int objVn, final InstanceKey[] fieldsKeys) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(opNode); SymbolTable symtab = ir.getSymbolTable(); DefUse du = getBuilder().getCFAContextInterpreter().getDU(opNode); PointerKey objKey = getBuilder().getPointerKeyForLocal(opNode, objVn); if (contentsAreInvariant(symtab, du, objVn)) { system.recordImplicitPointsToSet(objKey); InstanceKey[] objectKeys = getInvariantContents(symtab, du, opNode, objVn); newFieldOperationObjectAndFieldConstant(isLoadOperation, action, objectKeys, fieldsKeys); } else { newFieldOperationOnlyFieldConstant(isLoadOperation, action, objKey, fieldsKeys); } }
@Override protected void action(PointerKey lexicalKey, int vn) { PointerKey lval = getPointerKeyForLocal(vn); if (lexicalKey instanceof LocalPointerKey) { CGNode lnode = ((LocalPointerKey) lexicalKey).getNode(); int lvn = ((LocalPointerKey) lexicalKey).getValueNumber(); IRView lir = getBuilder().getCFAContextInterpreter().getIRView(lnode); SymbolTable lsymtab = lir.getSymbolTable(); DefUse ldu = getBuilder().getCFAContextInterpreter().getDU(lnode); // DefUse ldu = getAnalysisCache().getDefUse(lir); if (contentsAreInvariant(lsymtab, ldu, lvn)) { InstanceKey[] ik = getInvariantContents(lsymtab, ldu, lnode, lvn); system.recordImplicitPointsToSet(lexicalKey); for (InstanceKey element : ik) { system.findOrCreateIndexForInstanceKey(element); system.newConstraint(lval, element); } return; } } system.newConstraint(lval, assignOperator, lexicalKey); } });
@Override protected void action(PointerKey lexicalKey, int vn) { PointerKey lval = getPointerKeyForLocal(vn); if (lexicalKey instanceof LocalPointerKey) { CGNode lnode = ((LocalPointerKey) lexicalKey).getNode(); int lvn = ((LocalPointerKey) lexicalKey).getValueNumber(); IRView lir = getBuilder().getCFAContextInterpreter().getIRView(lnode); SymbolTable lsymtab = lir.getSymbolTable(); DefUse ldu = getBuilder().getCFAContextInterpreter().getDU(lnode); // DefUse ldu = getAnalysisCache().getDefUse(lir); if (contentsAreInvariant(lsymtab, ldu, lvn)) { InstanceKey[] ik = getInvariantContents(lsymtab, ldu, lnode, lvn); system.recordImplicitPointsToSet(lexicalKey); for (InstanceKey element : ik) { system.findOrCreateIndexForInstanceKey(element); system.newConstraint(lval, element); } return; } } system.newConstraint(lval, assignOperator, lexicalKey); } });