/** * Merges the specified frame into this subroutine's successors, * setting {@code workSet} as appropriate. To be called with * the frame of a subroutine ret block. * * @param frame {@code non-null;} frame from ret block to merge * @param workSet {@code non-null;} workset to update */ void mergeToSuccessors(Frame frame, int[] workSet) { for (int label = callerBlocks.nextSetBit(0); label >= 0; label = callerBlocks.nextSetBit(label+1)) { BasicBlock subCaller = labelToBlock(label); int succLabel = subCaller.getSuccessors().get(0); Frame subFrame = frame.subFrameForLabel(startBlock, label); if (subFrame != null) { mergeAndWorkAsNecessary(succLabel, -1, null, subFrame, workSet); } else { Bits.set(workSet, label); } } } }
/** * Merges the specified frame into this subroutine's successors, * setting {@code workSet} as appropriate. To be called with * the frame of a subroutine ret block. * * @param frame {@code non-null;} frame from ret block to merge * @param workSet {@code non-null;} workset to update */ void mergeToSuccessors(Frame frame, int[] workSet) { for (int label = callerBlocks.nextSetBit(0); label >= 0; label = callerBlocks.nextSetBit(label+1)) { BasicBlock subCaller = labelToBlock(label); int succLabel = subCaller.getSuccessors().get(0); Frame subFrame = frame.subFrameForLabel(startBlock, label); if (subFrame != null) { mergeAndWorkAsNecessary(succLabel, -1, null, subFrame, workSet); } else { Bits.set(workSet, label); } } } }
/** * Merges the specified frame into this subroutine's successors, * setting {@code workSet} as appropriate. To be called with * the frame of a subroutine ret block. * * @param frame {@code non-null;} frame from ret block to merge * @param workSet {@code non-null;} workset to update */ void mergeToSuccessors(Frame frame, int[] workSet) { for (int label = callerBlocks.nextSetBit(0); label >= 0; label = callerBlocks.nextSetBit(label+1)) { BasicBlock subCaller = labelToBlock(label); int succLabel = subCaller.getSuccessors().get(0); Frame subFrame = frame.subFrameForLabel(startBlock, label); if (subFrame != null) { mergeAndWorkAsNecessary(succLabel, -1, null, subFrame, workSet); } else { Bits.set(workSet, label); } } } }
/** * Merges the specified frame into this subroutine's successors, * setting {@code workSet} as appropriate. To be called with * the frame of a subroutine ret block. * * @param frame {@code non-null;} frame from ret block to merge * @param workSet {@code non-null;} workset to update */ void mergeToSuccessors(Frame frame, int[] workSet) { for (int label = callerBlocks.nextSetBit(0); label >= 0; label = callerBlocks.nextSetBit(label+1)) { BasicBlock subCaller = labelToBlock(label); int succLabel = subCaller.getSuccessors().get(0); Frame subFrame = frame.subFrameForLabel(startBlock, label); if (subFrame != null) { mergeAndWorkAsNecessary(succLabel, -1, null, subFrame, workSet); } else { Bits.set(workSet, label); } } } }
/** * Merges the specified frame into this subroutine's successors, * setting {@code workSet} as appropriate. To be called with * the frame of a subroutine ret block. * * @param frame {@code non-null;} frame from ret block to merge * @param workSet {@code non-null;} workset to update */ void mergeToSuccessors(Frame frame, int[] workSet) { for (int label = callerBlocks.nextSetBit(0); label >= 0; label = callerBlocks.nextSetBit(label+1)) { BasicBlock subCaller = labelToBlock(label); int succLabel = subCaller.getSuccessors().get(0); Frame subFrame = frame.subFrameForLabel(startBlock, label); if (subFrame != null) { mergeAndWorkAsNecessary(succLabel, -1, null, subFrame, workSet); } else { Bits.set(workSet, label); } } } }
/** * Merges the specified frame into this subroutine's successors, * setting {@code workSet} as appropriate. To be called with * the frame of a subroutine ret block. * * @param frame {@code non-null;} frame from ret block to merge * @param workSet {@code non-null;} workset to update */ void mergeToSuccessors(Frame frame, int[] workSet) { for (int label = callerBlocks.nextSetBit(0); label >= 0; label = callerBlocks.nextSetBit(label+1)) { BasicBlock subCaller = labelToBlock(label); int succLabel = subCaller.getSuccessors().get(0); Frame subFrame = frame.subFrameForLabel(startBlock, label); if (subFrame != null) { mergeAndWorkAsNecessary(succLabel, -1, null, subFrame, workSet); } else { Bits.set(workSet, label); } } } }