Collection<PointerKeyAndState> matchingTrackedQueried(PointerKeyAndState curPkAndState, PointerKey succPk, IFlowLabel label) { Collection<PointerKeyAndState> ret = ArraySet.make(); assert label.isBarred(); final State curState = curPkAndState.getState(); Set<State> succPkStates = trackedQueried.get(succPk); for (State succState : succPkStates) { State transState = stateMachine.transition(succState, label); if (transState.equals(curState)) { ret.add(new PointerKeyAndState(succPk, succState)); } } return ret; }
Collection<PointerKeyAndState> matchingTrackedQueried(PointerKeyAndState curPkAndState, PointerKey succPk, IFlowLabel label) { Collection<PointerKeyAndState> ret = ArraySet.make(); assert label.isBarred(); final State curState = curPkAndState.getState(); Set<State> succPkStates = trackedQueried.get(succPk); for (State succState : succPkStates) { State transState = stateMachine.transition(succState, label); if (transState.equals(curState)) { ret.add(new PointerKeyAndState(succPk, succState)); } } return ret; }
/** * @param label the label of the edge from curPk to predPk (must be barred) * @return those {@link PointerKeyAndState}s whose points-to sets have been queried, such that the {@link PointerKey} is predPk, * and transitioning from its state on {@code label.bar()} yields the state of {@code curPkAndState} */ protected Collection<PointerKeyAndState> matchingPToQueried(PointerKeyAndState curPkAndState, PointerKey predPk, IFlowLabel label) { Collection<PointerKeyAndState> ret = ArraySet.make(); assert label.isBarred(); IFlowLabel unbarredLabel = label.bar(); final State curState = curPkAndState.getState(); Set<State> predPkStates = pointsToQueried.get(predPk); for (State predState : predPkStates) { State transState = stateMachine.transition(predState, unbarredLabel); if (transState.equals(curState)) { // we have a winner! ret.add(new PointerKeyAndState(predPk, predState)); } } return ret; }
/** * @param label the label of the edge from curPk to predPk (must be barred) * @return those {@link PointerKeyAndState}s whose points-to sets have been queried, such that the {@link PointerKey} is predPk, * and transitioning from its state on {@code label.bar()} yields the state of {@code curPkAndState} */ protected Collection<PointerKeyAndState> matchingPToQueried(PointerKeyAndState curPkAndState, PointerKey predPk, IFlowLabel label) { Collection<PointerKeyAndState> ret = ArraySet.make(); assert label.isBarred(); IFlowLabel unbarredLabel = label.bar(); final State curState = curPkAndState.getState(); Set<State> predPkStates = pointsToQueried.get(predPk); for (State predState : predPkStates) { State transState = stateMachine.transition(predState, unbarredLabel); if (transState.equals(curState)) { // we have a winner! ret.add(new PointerKeyAndState(predPk, predState)); } } return ret; }