more better cff docs

This commit is contained in:
cpunch 2025-06-09 19:15:12 -05:00
parent 51b55b3d32
commit 57adc08610

View File

@ -7,7 +7,7 @@ date: "2025-05-01T18:47:58-05:00"
lastmod: "2025-05-01T18:47:58-05:00"
---
This option will enable the Control Flow Flattener (CFF). This feature is conservative in it's estimates of what can be flattened, if a block can't be flattened without side effects, it will be discarded from the flattening queue. CFF is applied recursively to failed blocks, meaning if a block is discarded from the flattening queue, its children may be flattened individually.
This option enables Control Flow Flattening (CFF), restructuring code a dispatch-like state machine. The flattener prioritizes correctness; if flattening a block could cause side effects, it either skips that block or partially flattens it. Failed blocks are re-evaluated recursively, allowing their sub-blocks to be flattened individually.
The control flow flattener supports the following branching syntaxes:
- `if` statements
@ -18,6 +18,6 @@ The control flow flattener supports the following branching syntaxes:
The following child options are available:
- `Expression Decomposition`: Breaks apart expressions into CFF blocks, can kill performance.
- `Wrap CFF blocks`: This will move some CFF blocks into their own closure in a lookup table. Can speed up larger flattening targets.
- `Hoist locals`: Will move local storage into a lookup table for CFF blocks. Useful to cut down on the number of used locals.
- `Expression Decomposition`: Breaks apart expressions into CFF blocks and temporaries, can kill performance.
- `Wrap CFF blocks`: Will move compatible CFF blocks into their own closure in a lookup table. Can speed up larger flattening targets.
- `Hoist locals`: Will move local storage into a lookup table. Useful to cut down on the number of used locals.