The 'layout' is LIR transformation used to assign relative positions for basic blocks in memory. Three different layout algorithms are supported today:
1) Topological (reverse-postorder) layout of basic blocks 2) Top-down layout algorithm 3) Bottom-up layout algorithm
To read more about top-down and bottom-up algorithm details check "Profile guided code positioning" paper by Hansen & Pettis.
Command line line options:
-XX:jit.arg.codegen.layout.type=topological - enables topological layout -XX:jit.arg.codegen.layout.type=topdown - enables top-down layout -XX:jit.arg.codegen.layout.type=bottomup - enables bottom-up layout -XX:jit.arg.codegen.layout.type=mixed - enables top-down layout for methods without loops and bottom-up for methods with loops
Source files:
src/codegenerator/ia32/Ia32CodeLayout.*
src/codegenerator/ia32/Ia32CodeLayoutTopDown.*
src/codegenerator/ia32/Ia32CodeLayoutBottomUp.*