Lines Matching defs:closure
74 public static <StateT> LoopInfo<StateT> processLoop(BlockIteratorClosure<StateT> closure, Loop<Block> loop, StateT initialState) {
75 EconomicMap<FixedNode, StateT> blockEndStates = apply(closure, loop.getHeader(), initialState, block -> !(block.getLoop() == loop || block.isLoopHeader()));
82 info.endStates.add(closure.cloneState(endState));
89 info.exitStates.add(closure.cloneState(exitState));
94 public static <StateT> void apply(BlockIteratorClosure<StateT> closure, Block start) {
95 apply(closure, start, closure.getInitialState(), null);
98 public static <StateT> EconomicMap<FixedNode, StateT> apply(BlockIteratorClosure<StateT> closure, Block start, StateT initialState, Predicate<Block> stopAtBlock) {
123 state = closure.processBlock(current, state);
136 recurseIntoLoop(closure, blockQueue, states, state, successor);
145 state = closure.merge(successor, mergedStates);
155 next = processMultipleSuccessors(closure, blockQueue, states, state, successors);
182 private static <StateT> Block processMultipleSuccessors(BlockIteratorClosure<StateT> closure, Deque<Block> blockQueue, EconomicMap<FixedNode, StateT> states, StateT state, Block[] successors) {
187 states.put(successor.getBeginNode(), closure.cloneState(state));
202 private static <StateT> void recurseIntoLoop(BlockIteratorClosure<StateT> closure, Deque<Block> blockQueue, EconomicMap<FixedNode, StateT> states, StateT state, Block successor) {
208 List<StateT> exitStates = closure.processLoop(loop, state);