Guides
Control Flow
Change how branches and loops connect
Eligible methods are rewritten around encoded dispatchers. Use the settings below to select the flow passes and control how much state they generate.
Configuration
These entries belong in the engine block of your RR configuration.
engine ^ {
skipFlow false;
chainedControlFlow true;
aggressiveFlow true;
}
Start with the default level
Hardening levels range from 0 to 5. A higher level can increase bytecode size and processing cost. Dispatcher state cells control generated state and do not represent a protection score.
Option reference
For options beginning with skip, false enables the pass.
Control Flow Flattening
booleanskipFlowRewrites eligible branches and loops around encoded dispatchers. Enabled exports skipFlow false. Methods that exceed size or frame limits may be skipped.
Panel default false
Chained Control Flow
booleanchainedControlFlowCarries encoded state between transformed blocks. Keep verification enabled and test the resulting application.
Panel default true
Aggressive Control Flow
booleanaggressiveFlowUses denser control flow transformations. This can increase build time, output size and runtime overhead.
Panel default true
bozarFlowApplies the branch transformation pass alongside the selected flow settings.
Panel default true
Encoded Dispatchers
booleanskipEncodedDispatcherIncludes the encoded dispatcher pass. Enabled exports skipEncodedDispatcher false.
Panel default false
skipAnalysisMazeIncludes analysis maze transformations where the method passes compatibility checks.
Panel default false
skipBoundedFrameHardeningIncludes bounded frame hardening. This setting is separate from JVM bytecode verification.
Panel default false
Application Method Flow
booleanhashiraHelperAppearanceApplies the application method appearance pass. Decompiled formatting depends on the tool used.
Panel default true
Dispatcher State Cells
enumhashiraStateCellsSets the dispatcher state cell count. Larger values can increase generated state and bytecode.
Panel default 64Values 32 · 64 · 128 · 256 · 512
decompileHardeningLevelSelects a hardening level from 0 to 5. Higher levels can increase output size and processing cost.
Panel default 3Values 0 · 1 · 2 · 3 · 4 · 5