int vn = LI.getExitExposedUses()[i]; if (vn > 0) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(definingNode); DefUse du = getBuilder().getCFAContextInterpreter().getDU(definingNode); SymbolTable st = ir.getSymbolTable(); PointerKey rhs = getBuilder().getPointerKeyForLocal(definingNode, vn);
int vn = LI.getExitExposedUses()[i]; if (vn > 0) { IRView ir = getBuilder().getCFAContextInterpreter().getIRView(definingNode); DefUse du = getBuilder().getCFAContextInterpreter().getDU(definingNode); SymbolTable st = ir.getSymbolTable(); PointerKey rhs = getBuilder().getPointerKeyForLocal(definingNode, vn);
@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); } });
@Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) { final IntSetVariable<?> objects = rhs; if (objects.getValue() != null) { objects.getValue().foreach(optr -> { InstanceKey object = system.getInstanceKey(optr); if (!getBuilder().isUncataloguedField(object.getConcreteType(), hack)) { PointerKey cat = getPointerKeyForObjectCatalog(object); if (cat != null) { system.newConstraint(cat, fieldNameKeys[0]); } } }); } return NOT_CHANGED; }
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); } }
public Iterator<PointerKey> getPointerKeysForReflectedFieldRead(InstanceKey I, InstanceKey F) { return ((AstPointerKeyFactory) getBuilder().getPointerKeyFactory()).getPointerKeysForReflectedFieldRead(I, F); }
@Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) { final IntSetVariable<?> objects = rhs; if (objects.getValue() != null) { objects.getValue().foreach(optr -> { InstanceKey object = system.getInstanceKey(optr); if (!getBuilder().isUncataloguedField(object.getConcreteType(), hack)) { PointerKey cat = getPointerKeyForObjectCatalog(object); if (cat != null) { system.newConstraint(cat, fieldNameKeys[0]); } } }); } return NOT_CHANGED; }
protected void newFieldRead(CGNode opNode, int objVn, int fieldsVn, int lhsVn) { newFieldRead(opNode, objVn, fieldsVn, getBuilder().getPointerKeyForLocal(opNode, lhsVn)); }
public PointerKey getPointerKeyForObjectCatalog(InstanceKey I) { return ((AstPointerKeyFactory) getBuilder().getPointerKeyFactory()).getPointerKeyForObjectCatalog(I); }
public Iterator<PointerKey> getPointerKeysForReflectedFieldWrite(InstanceKey I, InstanceKey F) { return ((AstPointerKeyFactory) getBuilder().getPointerKeyFactory()).getPointerKeysForReflectedFieldWrite(I, F); }
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); } }
public Iterator<PointerKey> getPointerKeysForReflectedFieldWrite(InstanceKey I, InstanceKey F) { return ((AstPointerKeyFactory) getBuilder().getPointerKeyFactory()).getPointerKeysForReflectedFieldWrite(I, F); }
public PointerKey getPointerKeyForObjectCatalog(InstanceKey I) { return ((AstPointerKeyFactory) getBuilder().getPointerKeyFactory()).getPointerKeyForObjectCatalog(I); }
@Override public void action(AbstractFieldPointerKey fieldKey) { if (!representsNullType(fieldKey.getInstanceKey())) { system.newConstraint(lhs, assignOperator, fieldKey); AbstractFieldPointerKey unknown = getBuilder().fieldKeyForUnknownWrites(fieldKey); if (unknown != null) { system.newConstraint(lhs, assignOperator, unknown); } } } });
protected void newFieldRead(CGNode opNode, int objVn, int fieldsVn, int lhsVn) { newFieldRead(opNode, objVn, fieldsVn, getBuilder().getPointerKeyForLocal(opNode, lhsVn)); }
public Iterator<PointerKey> getPointerKeysForReflectedFieldRead(InstanceKey I, InstanceKey F) { return ((AstPointerKeyFactory) getBuilder().getPointerKeyFactory()).getPointerKeysForReflectedFieldRead(I, F); }
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); } }
@Override public void action(AbstractFieldPointerKey fieldKey) { if (!representsNullType(fieldKey.getInstanceKey())) { system.newConstraint(lhs, assignOperator, fieldKey); AbstractFieldPointerKey unknown = getBuilder().fieldKeyForUnknownWrites(fieldKey); if (unknown != null) { system.newConstraint(lhs, assignOperator, unknown); } } } });
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); } }