Hashira DocsLog in
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.

RR
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

boolean
skipFlow

Rewrites 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

boolean
chainedControlFlow

Carries encoded state between transformed blocks. Keep verification enabled and test the resulting application.

Panel default true

Aggressive Control Flow

boolean
aggressiveFlow

Uses denser control flow transformations. This can increase build time, output size and runtime overhead.

Panel default true

Opaque Predicates

boolean
bozarFlow

Applies the branch transformation pass alongside the selected flow settings.

Panel default true

Encoded Dispatchers

boolean
skipEncodedDispatcher

Includes the encoded dispatcher pass. Enabled exports skipEncodedDispatcher false.

Panel default false

Analysis Maze

boolean
skipAnalysisMaze

Includes analysis maze transformations where the method passes compatibility checks.

Panel default false

Frame Hardening

boolean
skipBoundedFrameHardening

Includes bounded frame hardening. This setting is separate from JVM bytecode verification.

Panel default false

Application Method Flow

boolean
hashiraHelperAppearance

Applies the application method appearance pass. Decompiled formatting depends on the tool used.

Panel default true

Dispatcher State Cells

enum
hashiraStateCells

Sets the dispatcher state cell count. Larger values can increase generated state and bytecode.

Panel default 64Values 32 · 64 · 128 · 256 · 512

Hardening Level

enum
decompileHardeningLevel

Selects 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