mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
LJ_GC64: Various fixes.
Contributed by Peter Cawley.
This commit is contained in:
parent
63465fe71d
commit
54b78e7c66
@ -1765,6 +1765,8 @@ static void rec_varg(jit_State *J, BCReg dst, ptrdiff_t nresults)
|
|||||||
int32_t numparams = J->pt->numparams;
|
int32_t numparams = J->pt->numparams;
|
||||||
ptrdiff_t nvararg = frame_delta(J->L->base-1) - numparams - 1 - LJ_FR2;
|
ptrdiff_t nvararg = frame_delta(J->L->base-1) - numparams - 1 - LJ_FR2;
|
||||||
lua_assert(frame_isvarg(J->L->base-1));
|
lua_assert(frame_isvarg(J->L->base-1));
|
||||||
|
if (LJ_FR2 && dst > J->maxslot)
|
||||||
|
J->base[dst-1] = 0; /* Prevent resurrection of unrelated slot. */
|
||||||
if (J->framedepth > 0) { /* Simple case: varargs defined on-trace. */
|
if (J->framedepth > 0) { /* Simple case: varargs defined on-trace. */
|
||||||
ptrdiff_t i;
|
ptrdiff_t i;
|
||||||
if (nvararg < 0) nvararg = 0;
|
if (nvararg < 0) nvararg = 0;
|
||||||
|
@ -31,7 +31,7 @@ enum {
|
|||||||
FPRDEF(RIDENUM) /* Floating-point registers (FPRs). */
|
FPRDEF(RIDENUM) /* Floating-point registers (FPRs). */
|
||||||
RID_MAX,
|
RID_MAX,
|
||||||
RID_MRM = RID_MAX, /* Pseudo-id for ModRM operand. */
|
RID_MRM = RID_MAX, /* Pseudo-id for ModRM operand. */
|
||||||
RID_RIP = RID_MAX+1, /* Pseudo-id for RIP (x64 only). */
|
RID_RIP = RID_MAX+5, /* Pseudo-id for RIP (x64 only), rm bits = 5. */
|
||||||
|
|
||||||
/* Calling conventions. */
|
/* Calling conventions. */
|
||||||
RID_SP = RID_ESP,
|
RID_SP = RID_ESP,
|
||||||
|
Loading…
Reference in New Issue
Block a user