package jasmin
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=e7aafd891eb54e89d41d9d7d1bbda9ddb1cddc5fdf0359d88c2b7b417ae4a39b
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.