Guides
Calls and Arithmetic
Protect calls and calculations
Configure InvokeDynamic routing, reference protection and instruction mutation. Each pass has its own control so you can enable only the transformations your application needs.
Configuration
These entries belong in the engine block of your RR configuration.
engine ^ {
linkedIndy true;
skipReflection false;
skipConstructorIndy false;
}
Keep the JVM target in mind
The condy backend requires ConstantDynamic support on the target JVM. Expression depth and expression families control different parts of arithmetic generation. Increasing either can add bytecode and execution cost.
Option reference
For options beginning with skip, false enables the pass.
InvokeDynamic Obfuscation
booleanlinkedIndyEnables linked InvokeDynamic protection. Constants, references and constructors have separate controls.
Panel default true
Reference Encryption
booleanskipReflectionProtects supported method and field references. Enabled exports skipReflection false.
Panel default false
skipConstructorIndyTransforms supported constructor calls through InvokeDynamic. JVM initialization rules can exclude individual call sites.
Panel default false
Distributed bootstrap
booleanskipDistributedReferenceBootstrapIncludes distributed bootstrap generation for supported references.
Panel default false
Reference protocols
booleanreferenceProtocolsEnables the reference protocol option. Constant backend selection remains independent.
Panel default true
constantBackendSelects InvokeDynamic compatibility mode or ConstantDynamic. The target JVM must support the chosen backend.
Panel default indyCompatValues indyCompat · condy
Constant transformation
booleanbozarConstTransforms numeric constants. Constant-only expressions may still be simplified by analysis tools.
Panel default true
Instruction Mutation
booleanskipArithmeticReplaces supported arithmetic instructions with equivalent bytecode sequences.
Panel default false
chainedMbaEnables chained mixed Boolean arithmetic. Flow and InvokeDynamic are configured separately.
Panel default true
expressionStepsSets expression depth from 0 to 8. Increasing depth can increase bytecode size and execution cost.
Panel default 0Values 0 · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8
expressionClassesSets the number of expression families from 0 to 6. This is separate from expression depth.
Panel default 5Values 0 · 1 · 2 · 3 · 4 · 5 · 6
Selective inlining
booleanskipSelectiveInliningIncludes selective inlining at supported call sites.
Panel default false