@Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) { FilteredPointerKey pk = (FilteredPointerKey) lhs.getPointerKey(); if (DEBUG_FILTER) { String S = "EVAL Filter " + lhs.getPointerKey() + ' ' + rhs.getPointerKey(); S += "\nEVAL " + lhs + ' ' + rhs; System.err.println(S); } if (rhs.size() == 0) { return NOT_CHANGED; } boolean changed = false; FilteredPointerKey.TypeFilter filter = pk.getTypeFilter(); changed = filter.addFiltered(system, lhs, rhs); if (DEBUG_FILTER) { System.err.println("RESULT " + lhs + (changed ? " (changed)" : "")); } return changed ? CHANGED : NOT_CHANGED; }
@Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) { FilteredPointerKey pk = (FilteredPointerKey) lhs.getPointerKey(); if (DEBUG_FILTER) { String S = "EVAL Filter " + lhs.getPointerKey() + ' ' + rhs.getPointerKey(); S += "\nEVAL " + lhs + ' ' + rhs; System.err.println(S); } if (rhs.size() == 0) { return NOT_CHANGED; } boolean changed = false; FilteredPointerKey.TypeFilter filter = pk.getTypeFilter(); changed = filter.addFiltered(system, lhs, rhs); if (DEBUG_FILTER) { System.err.println("RESULT " + lhs + (changed ? " (changed)" : "")); } return changed ? CHANGED : NOT_CHANGED; }
@Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) { FilteredPointerKey pk = (FilteredPointerKey) lhs.getPointerKey(); FilteredPointerKey.TypeFilter filter = pk.getTypeFilter(); boolean debug = false; if (DEBUG_FILTER) { String S = "EVAL InverseFilter/" + filter + ' ' + lhs.getPointerKey() + ' ' + rhs.getPointerKey(); S += "\nEVAL " + lhs + ' ' + rhs; System.err.println(S); } if (rhs.size() == 0) { return NOT_CHANGED; } boolean changed = filter.addInverseFiltered(system, lhs, rhs); if (DEBUG_FILTER) { if (debug) { System.err.println("RESULT " + lhs + (changed ? " (changed)" : "")); } } return changed ? CHANGED : NOT_CHANGED; } }
@Override public byte evaluate(PointsToSetVariable lhs, PointsToSetVariable rhs) { FilteredPointerKey pk = (FilteredPointerKey) lhs.getPointerKey(); FilteredPointerKey.TypeFilter filter = pk.getTypeFilter(); boolean debug = false; if (DEBUG_FILTER) { String S = "EVAL InverseFilter/" + filter + ' ' + lhs.getPointerKey() + ' ' + rhs.getPointerKey(); S += "\nEVAL " + lhs + ' ' + rhs; System.err.println(S); } if (rhs.size() == 0) { return NOT_CHANGED; } boolean changed = filter.addInverseFiltered(system, lhs, rhs); if (DEBUG_FILTER) { if (debug) { System.err.println("RESULT " + lhs + (changed ? " (changed)" : "")); } } return changed ? CHANGED : NOT_CHANGED; } }
/** * Simply add the instance to each relevant points-to set. */ @Override public byte evaluate(PointsToSetVariable dummyLHS, PointsToSetVariable var) { PointsToSetVariable ref = var; if (ref.size() == 0) { return NOT_CHANGED; } IntSet value = ref.getValue(); final MutableBoolean sideEffect = new MutableBoolean(); IntSetAction action = i -> { InstanceKey I = system.getInstanceKey(i); if (!representsNullType(I)) { PointerKey p = getPointerKeyForInstanceField(I, field); if (p != null) { sideEffect.b |= system.newConstraint(p, instance); } } }; if (priorInstances != null) { value.foreachExcluding(priorInstances, action); priorInstances.addAll(value); } else { value.foreach(action); } byte sideEffectMask = sideEffect.b ? (byte) SIDE_EFFECT_MASK : 0; return (byte) (NOT_CHANGED | sideEffectMask); }
/** * Simply add the instance to each relevant points-to set. */ @Override public byte evaluate(PointsToSetVariable dummyLHS, PointsToSetVariable var) { PointsToSetVariable ref = var; if (ref.size() == 0) { return NOT_CHANGED; } IntSet value = ref.getValue(); final MutableBoolean sideEffect = new MutableBoolean(); IntSetAction action = i -> { InstanceKey I = system.getInstanceKey(i); if (!representsNullType(I)) { PointerKey p = getPointerKeyForInstanceField(I, field); if (p != null) { sideEffect.b |= system.newConstraint(p, instance); } } }; if (priorInstances != null) { value.foreachExcluding(priorInstances, action); priorInstances.addAll(value); } else { value.foreach(action); } byte sideEffectMask = sideEffect.b ? (byte) SIDE_EFFECT_MASK : 0; return (byte) (NOT_CHANGED | sideEffectMask); }
if (rhs.size() == 0) { return NOT_CHANGED;
if (ref.size() == 0) { return NOT_CHANGED;
if (rhs.size() == 0) { return NOT_CHANGED;
if (ref.size() == 0) { return NOT_CHANGED;
if (rhs.size() == 0) { return NOT_CHANGED;
if (rhs.size() == 0) { return NOT_CHANGED;
if (rhs.size() == 0) { return NOT_CHANGED;
if (rhs.size() == 0) { return NOT_CHANGED;
public byte evaluate(PointsToSetVariable dummyLHS, PointsToSetVariable var) { PointsToSetVariable arrayref = var; if (arrayref.size() == 0) { return NOT_CHANGED;
public byte evaluate(PointsToSetVariable dummyLHS, PointsToSetVariable var) { PointsToSetVariable arrayref = var; if (arrayref.size() == 0) { return NOT_CHANGED;