mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
Rework to better describe what is used only during jit generation.
* include/lightning/jit_private.h, lib/jit_arm-cpu.c, lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips-cpu.c, lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc-cpu.c, lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c, lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c, lib/lightning.c: Add an extra structure for data storage during jit generation, and release it after generating jit, to reduce a bit memory usage, and also to make it easier to understand what data is available during jit runtime.
This commit is contained in:
parent
f39eee6694
commit
9afca85921
16 changed files with 1328 additions and 1299 deletions
|
@ -1619,28 +1619,28 @@ static void
|
|||
_prolog(jit_state_t *_jit, jit_node_t *node)
|
||||
{
|
||||
/* align at 16 bytes boundary */
|
||||
_jit->function->stack = ((stack_framesize +
|
||||
_jit->function->self.alen -
|
||||
_jit->function->self.aoff) + 15) & -16;
|
||||
SAVEI(_SP_REGNO, -_jit->function->stack, _SP_REGNO);
|
||||
_jitc->function->stack = ((stack_framesize +
|
||||
_jitc->function->self.alen -
|
||||
_jitc->function->self.aoff) + 15) & -16;
|
||||
SAVEI(_SP_REGNO, -_jitc->function->stack, _SP_REGNO);
|
||||
|
||||
/* (most) other backends do not save incoming arguments, so,
|
||||
* only save locals here */
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L0))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L0))
|
||||
stxi(0, _SP_REGNO, _L0_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L1))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L1))
|
||||
stxi(4, _SP_REGNO, _L1_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L2))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L2))
|
||||
stxi(8, _SP_REGNO, _L2_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L3))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L3))
|
||||
stxi(12, _SP_REGNO, _L3_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L4))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L4))
|
||||
stxi(16, _SP_REGNO, _L4_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L5))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L5))
|
||||
stxi(20, _SP_REGNO, _L5_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L6))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L6))
|
||||
stxi(24, _SP_REGNO, _L6_REGNO);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L7))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L7))
|
||||
stxi(28, _SP_REGNO, _L7_REGNO);
|
||||
}
|
||||
|
||||
|
@ -1649,21 +1649,21 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
|
|||
{
|
||||
/* (most) other backends do not save incoming arguments, so,
|
||||
* only save locals here */
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L0))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L0))
|
||||
ldxi(_L0_REGNO, _SP_REGNO, 0);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L1))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L1))
|
||||
ldxi(_L1_REGNO, _SP_REGNO, 4);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L2))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L2))
|
||||
ldxi(_L2_REGNO, _SP_REGNO, 8);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L3))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L3))
|
||||
ldxi(_L3_REGNO, _SP_REGNO, 12);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L4))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L4))
|
||||
ldxi(_L4_REGNO, _SP_REGNO, 16);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L5))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L5))
|
||||
ldxi(_L5_REGNO, _SP_REGNO, 20);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L6))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L6))
|
||||
ldxi(_L6_REGNO, _SP_REGNO, 24);
|
||||
if (jit_regset_tstbit(_jit->function->regset, _L7))
|
||||
if (jit_regset_tstbit(_jitc->function->regset, _L7))
|
||||
ldxi(_L7_REGNO, _SP_REGNO, 28);
|
||||
RESTOREI(0, 0, 0);
|
||||
RETL();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue