Source:
moonlive_emit.h
moonlive_emit¶
A neutral declaration here, and the implementation per instruction set behind the platform boundary.
Classes¶
| Name | Description |
|---|---|
SpillDetail |
|
RegBudget |
SpillDetail¶
src/core/moonlive/moonlive_emit.h:47Public Attributes¶
uint8_t guard = 0
uint8_t avail = 0
uint8_t temps = 0
uint8_t vregs = 0
uint8_t slots = 0
uint8_t spilled = 0
RegBudget¶
src/core/moonlive/moonlive_emit.h:51Public Attributes¶
uint8_t regs = 0
uint8_t reserved = 0
: Registers the backend keeps for the inline ops this program contains.
uint8_t slots = 0
Public Methods¶
inline uint8_t allocatable() const
: Registers left for the allocator once the backend's inline scratch is taken out.
More info¶
The host-JIT macro¶
It is defined per platform, so the architecture check stays behind the boundary and this header stays neutral. It exists for the test harness alone, and no shipping code branches on it: a build with no backend degrades at run time, reporting the failure and rendering dark. A test that calls render cannot be compiled there at all, which is why it is a macro rather than a constant. One answers the program, the other answers the build.