package jasmin
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=11fec571efb9f7b3a47fea324b4e2a68289e0b73b2248d237eccf139b5218190
doc/jasmin.jasmin/Jasmin/AutoSpill/index.html
Module Jasmin.AutoSpillSource
Naive automatic spilling. The transformation implemented in this module automatically inserts spill and unspill operators in a systematic way: “spillable” variables are spilled after every definition (including arguments on function entry) and unspilled before every use (including returning results at the end of functions).
Which program variables are considered “spillable” (and therefore subject to this transformation) depend on the “strategy”. There are two possible strategies:
- either all reg variables are considered spillable, unless their declaration are annotated with
#[nospill]; - or only reg variables that are explicitly annotated with
#[spill]are considered spillable.
When a function is annotated nospill, then it is preserved: no spill or unspill operator are introduced in its body.
Note that an msf annotation implies nospill.
This transformation is experimental (i.e., subject to change) and trusted (i.e., not proved).
The strategy controls which variables are subject to the spill/unspill operators introduced by this transformation.