public class LoopIdentifier
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
LoopIdentifier.LoopResult |
Constructor and Description |
---|
LoopIdentifier() |
Modifier and Type | Method and Description |
---|---|
private static BlockIdentifier |
considerAsDoLoopStart(Op03SimpleStatement start,
java.util.List<Op03SimpleStatement> statements,
BlockIdentifierFactory blockIdentifierFactory,
java.util.Map<BlockIdentifier,Op03SimpleStatement> postBlockCache) |
private static void |
considerAsPathologicalLoop(Op03SimpleStatement start,
java.util.List<Op03SimpleStatement> statements) |
private static BlockIdentifier |
considerAsWhileLoopStart(Method method,
Op03SimpleStatement start,
java.util.List<Op03SimpleStatement> statements,
BlockIdentifierFactory blockIdentifierFactory,
java.util.Map<BlockIdentifier,Op03SimpleStatement> postBlockCache) |
(package private) static boolean |
containsTargetInBlock(Op03SimpleStatement stm,
BlockIdentifier block) |
private static Op03SimpleStatement |
findFirstConditional(Op03SimpleStatement start) |
private static void |
fixLoopOverlaps(java.util.List<Op03SimpleStatement> statements,
java.util.List<LoopIdentifier.LoopResult> loopResults,
java.util.Set<BlockIdentifier> relevantBlocks) |
(package private) static Op03SimpleStatement |
getCloseFwdJumpInto(Op03SimpleStatement start,
BlockIdentifier blockIdentifier,
java.util.List<Op03SimpleStatement> statements,
int startIdx,
int lastIdx) |
static void |
identifyLoops1(Method method,
java.util.List<Op03SimpleStatement> statements,
BlockIdentifierFactory blockIdentifierFactory) |
private static void |
rewriteEndLoopOverlapStatement(Op03SimpleStatement oldEnd,
BlockIdentifier loopBlock) |
private static int |
validateAndAssignLoopIdentifier(java.util.List<Op03SimpleStatement> statements,
int idxTestStart,
int idxAfterEnd,
BlockIdentifier blockIdentifier,
Op03SimpleStatement start) |
public static void identifyLoops1(Method method, java.util.List<Op03SimpleStatement> statements, BlockIdentifierFactory blockIdentifierFactory)
private static void fixLoopOverlaps(java.util.List<Op03SimpleStatement> statements, java.util.List<LoopIdentifier.LoopResult> loopResults, java.util.Set<BlockIdentifier> relevantBlocks)
private static void rewriteEndLoopOverlapStatement(Op03SimpleStatement oldEnd, BlockIdentifier loopBlock)
private static void considerAsPathologicalLoop(Op03SimpleStatement start, java.util.List<Op03SimpleStatement> statements)
private static BlockIdentifier considerAsDoLoopStart(Op03SimpleStatement start, java.util.List<Op03SimpleStatement> statements, BlockIdentifierFactory blockIdentifierFactory, java.util.Map<BlockIdentifier,Op03SimpleStatement> postBlockCache)
static Op03SimpleStatement getCloseFwdJumpInto(Op03SimpleStatement start, BlockIdentifier blockIdentifier, java.util.List<Op03SimpleStatement> statements, int startIdx, int lastIdx)
static boolean containsTargetInBlock(Op03SimpleStatement stm, BlockIdentifier block)
private static BlockIdentifier considerAsWhileLoopStart(Method method, Op03SimpleStatement start, java.util.List<Op03SimpleStatement> statements, BlockIdentifierFactory blockIdentifierFactory, java.util.Map<BlockIdentifier,Op03SimpleStatement> postBlockCache)
private static Op03SimpleStatement findFirstConditional(Op03SimpleStatement start)
private static int validateAndAssignLoopIdentifier(java.util.List<Op03SimpleStatement> statements, int idxTestStart, int idxAfterEnd, BlockIdentifier blockIdentifier, Op03SimpleStatement start)