public boolean isLessOrEqual(PointerComposeState pState) { if (this == pState) { return true; } if (this.pointerState != pState.pointerState) { if (this.pointerState.getPointsToMap().size() > pState.pointerState.getPointsToMap().size()) { return false; } for (Entry<IRealLocation, LocationSet> pointsToEntry : pointerState.getPointsToMap().entrySet()) { LocationSet rightSide = pState.pointerState.getPointsToSet(pointsToEntry.getKey()); if (rightSide == null || !rightSide.containsAll(pointsToEntry.getValue())) { return false; } } } if (this.heap != pState.heap) { for (Entry<IRealLocation, Memory> pointsToEntry : heap.get().entrySet()) { Memory rightSide = pState.heap.get(pointsToEntry.getKey()); if (rightSide == null || !pointsToEntry.getValue().isLessOrEqual(rightSide)) { return false; } } } return true; }
@Override public String toString() { String result = "pointer: " + pointerState.toString() + "\n"; result += "heap: " + heap.toString() + "\n"; for (IFaultResult warning : getCollector().getResults()) { result += "\n" + warning.toString(); } return result; }
@Override public PointerComposeState clone() { return new PointerComposeState(pointerState.clone(), heap.clone()); }