Description
The JIT emitter design supports any number of instruction groups (insGroup, or IG) for all items (normal code, funclet prologs and epilogs, normal epilogs), except the main function prolog, which much exist completely within a single IG. This group is the first created IG and is pointed to be emitPrologIG
. Functions that use this include emitBegProlog()
, emitMarkPrologEnd()
, emitEndProlog()
, emitIGisInProlog()
, and emitGetPrologOffsetEstimate()
.
This limitation is what causes us to use an overly large (or possibly overly large) "static" instruction group buffer size (size designated by SC_IG_BUFFER_SIZE
), because that size must be big enough for all possible prologs. This size is defined in a way that probably makes no real sense.
Eliminating this restriction would make the code more flexible, and free us from the current static size constraint.
category:implementation
theme:prolog-epilog
skill-level:expert
cost:medium