public static enum LoopExplosionPlugin.LoopExplosionKind extends Enum<LoopExplosionPlugin.LoopExplosionKind>
| Enum Constant and Description |
|---|
FULL_EXPLODE
Fully explode all loops.
|
FULL_EXPLODE_UNTIL_RETURN
Like
LoopExplosionPlugin.LoopExplosionKind.FULL_EXPLODE, but in addition explosion does not stop at loop exits. |
FULL_UNROLL
Fully unroll all loops.
|
FULL_UNROLL_UNTIL_RETURN
Like
LoopExplosionPlugin.LoopExplosionKind.FULL_UNROLL, but in addition loop unrolling duplicates loop exits in every
iteration instead of merging them. |
MERGE_EXPLODE
like
LoopExplosionPlugin.LoopExplosionKind.FULL_EXPLODE, but copies of the loop body that have the exact same state
(all local variables have the same value) are merged. |
NONE
No loop explosion.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
duplicateLoopEnds() |
boolean |
duplicateLoopExits() |
boolean |
isNoExplosion() |
boolean |
mergeLoops() |
boolean |
unrollLoops() |
boolean |
useExplosion() |
static LoopExplosionPlugin.LoopExplosionKind |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static LoopExplosionPlugin.LoopExplosionKind[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final LoopExplosionPlugin.LoopExplosionKind NONE
public static final LoopExplosionPlugin.LoopExplosionKind FULL_UNROLL
public static final LoopExplosionPlugin.LoopExplosionKind FULL_UNROLL_UNTIL_RETURN
LoopExplosionPlugin.LoopExplosionKind.FULL_UNROLL, but in addition loop unrolling duplicates loop exits in every
iteration instead of merging them. Code after a loop exit is duplicated for every loop
exit and every loop iteration. For example, a loop with 4 iterations and 2 loop exits
(exit1 and exit2, where exit1 is an early return inside a loop) leads to 4 copies of the
loop body and 4 copies of exit1 and 1 copy if exit2. After each exit all code until a
return is duplicated per iteration. Beware of break statements inside loops since they
cause additional loop exits leading to code duplication along exit2.public static final LoopExplosionPlugin.LoopExplosionKind FULL_EXPLODE
public static final LoopExplosionPlugin.LoopExplosionKind FULL_EXPLODE_UNTIL_RETURN
LoopExplosionPlugin.LoopExplosionKind.FULL_EXPLODE, but in addition explosion does not stop at loop exits. Code
after the loop is duplicated for every loop exit of every loop iteration. For example, a
loop with 4 iterations and 2 loop exits leads to 4 * 2 = 8 copies of the code after the
loop.public static final LoopExplosionPlugin.LoopExplosionKind MERGE_EXPLODE
LoopExplosionPlugin.LoopExplosionKind.FULL_EXPLODE, but copies of the loop body that have the exact same state
(all local variables have the same value) are merged. This reduces the number of copies
necessary, but can introduce loops again. This kind is useful for bytecode interpreter
loops.public static LoopExplosionPlugin.LoopExplosionKind[] values()
public static LoopExplosionPlugin.LoopExplosionKind valueOf(String name)
name - the name of the enum constant to be returned.IllegalArgumentException - if this enum type has no constant with the specified nameNullPointerException - if the argument is nullpublic boolean unrollLoops()
public boolean duplicateLoopExits()
public boolean duplicateLoopEnds()
public boolean mergeLoops()
public boolean useExplosion()
public boolean isNoExplosion()