public static enum TruffleCompilerRuntime.LoopExplosionKind extends Enum<TruffleCompilerRuntime.LoopExplosionKind>
ExplodeLoop annotation.| Enum Constant and Description |
|---|
FULL_EXPLODE
Fully explode all loops.
|
FULL_EXPLODE_UNTIL_RETURN
Like
TruffleCompilerRuntime.LoopExplosionKind.FULL_EXPLODE, but in addition explosion does not stop at loop exits. |
FULL_UNROLL
Fully unroll all loops.
|
FULL_UNROLL_UNTIL_RETURN
Like
TruffleCompilerRuntime.LoopExplosionKind.FULL_UNROLL, but in addition loop unrolling duplicates loop exits in every
iteration instead of merging them. |
MERGE_EXPLODE
like
TruffleCompilerRuntime.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 |
|---|---|
static TruffleCompilerRuntime.LoopExplosionKind |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static TruffleCompilerRuntime.LoopExplosionKind[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final TruffleCompilerRuntime.LoopExplosionKind NONE
public static final TruffleCompilerRuntime.LoopExplosionKind FULL_UNROLL
public static final TruffleCompilerRuntime.LoopExplosionKind FULL_UNROLL_UNTIL_RETURN
TruffleCompilerRuntime.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 TruffleCompilerRuntime.LoopExplosionKind FULL_EXPLODE
public static final TruffleCompilerRuntime.LoopExplosionKind FULL_EXPLODE_UNTIL_RETURN
TruffleCompilerRuntime.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 TruffleCompilerRuntime.LoopExplosionKind MERGE_EXPLODE
TruffleCompilerRuntime.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 TruffleCompilerRuntime.LoopExplosionKind[] values()
public static TruffleCompilerRuntime.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 null