Update LuaJIT.
In particular, the update fixes the build problem on MacOS Mojave (see LuaJIT/LuaJIT#484).
This commit is contained in:
@ -809,9 +809,9 @@ map_op[".template__"] = function(params, template, nparams)
|
||||
elseif p == "X" then
|
||||
op = op + parse_index(params[n]); n = n + 1
|
||||
elseif p == "B" or p == "J" then
|
||||
local mode, n, s = parse_label(params[n], false)
|
||||
if p == "B" then n = n + 2048 end
|
||||
waction("REL_"..mode, n, s, 1)
|
||||
local mode, m, s = parse_label(params[n], false)
|
||||
if p == "B" then m = m + 2048 end
|
||||
waction("REL_"..mode, m, s, 1)
|
||||
n = n + 1
|
||||
elseif p == "A" then
|
||||
op = op + parse_imm(params[n], 5, 6, 0, false); n = n + 1
|
||||
|
||||
@ -1729,9 +1729,9 @@ op_template = function(params, template, nparams)
|
||||
elseif p == "M" then
|
||||
op = op + parse_shiftmask(params[n], false); n = n + 1
|
||||
elseif p == "J" or p == "K" then
|
||||
local mode, n, s = parse_label(params[n], false)
|
||||
if p == "K" then n = n + 2048 end
|
||||
waction("REL_"..mode, n, s, 1)
|
||||
local mode, m, s = parse_label(params[n], false)
|
||||
if p == "K" then m = m + 2048 end
|
||||
waction("REL_"..mode, m, s, 1)
|
||||
n = n + 1
|
||||
elseif p == "0" then
|
||||
if band(shr(op, rs), 31) == 0 then werror("cannot use r0") end
|
||||
|
||||
@ -1537,8 +1537,8 @@ local map_op = {
|
||||
vrcpss_3 = "rrro:F30FV53rM|rrx/ood:",
|
||||
vrsqrtps_2 = "rmoy:0Fu52rM",
|
||||
vrsqrtss_3 = "rrro:F30FV52rM|rrx/ood:",
|
||||
vroundpd_3 = "rmioy:660F3AV09rMU",
|
||||
vroundps_3 = "rmioy:660F3AV08rMU",
|
||||
vroundpd_3 = "rmioy:660F3Au09rMU",
|
||||
vroundps_3 = "rmioy:660F3Au08rMU",
|
||||
vroundsd_4 = "rrrio:660F3AV0BrMU|rrxi/ooq:",
|
||||
vroundss_4 = "rrrio:660F3AV0ArMU|rrxi/ood:",
|
||||
vshufpd_4 = "rrmioy:660FVC6rMU",
|
||||
|
||||
6
third_party/luajit/luajit/src/Makefile
vendored
6
third_party/luajit/luajit/src/Makefile
vendored
@ -165,6 +165,10 @@ else
|
||||
HOST_SYS= Windows
|
||||
HOST_MSYS= mingw
|
||||
endif
|
||||
ifneq (,$(findstring MSYS,$(HOST_SYS)))
|
||||
HOST_SYS= Windows
|
||||
HOST_MSYS= mingw
|
||||
endif
|
||||
ifneq (,$(findstring CYGWIN,$(HOST_SYS)))
|
||||
HOST_SYS= Windows
|
||||
HOST_MSYS= cygwin
|
||||
@ -191,7 +195,7 @@ CCOPTIONS= $(CCDEBUG) $(ASOPTIONS)
|
||||
LDOPTIONS= $(CCDEBUG) $(LDFLAGS)
|
||||
|
||||
HOST_CC= $(CC)
|
||||
HOST_RM= rm -f
|
||||
HOST_RM?= rm -f
|
||||
# If left blank, minilua is built and used. You can supply an installed
|
||||
# copy of (plain) Lua 5.1 or 5.2, plus Lua BitOp. E.g. with: HOST_LUA=lua
|
||||
HOST_LUA=
|
||||
|
||||
11
third_party/luajit/luajit/src/lib_aux.c
vendored
11
third_party/luajit/luajit/src/lib_aux.c
vendored
@ -218,8 +218,15 @@ LUALIB_API char *luaL_prepbuffer(luaL_Buffer *B)
|
||||
|
||||
LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l)
|
||||
{
|
||||
while (l--)
|
||||
luaL_addchar(B, *s++);
|
||||
if (l <= bufffree(B)) {
|
||||
memcpy(B->p, s, l);
|
||||
B->p += l;
|
||||
} else {
|
||||
emptybuffer(B);
|
||||
lua_pushlstring(B->L, s, l);
|
||||
B->lvl++;
|
||||
adjuststack(B);
|
||||
}
|
||||
}
|
||||
|
||||
LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s)
|
||||
|
||||
4
third_party/luajit/luajit/src/lib_os.c
vendored
4
third_party/luajit/luajit/src/lib_os.c
vendored
@ -205,12 +205,12 @@ LJLIB_CF(os_date)
|
||||
setboolfield(L, "isdst", stm->tm_isdst);
|
||||
} else if (*s) {
|
||||
SBuf *sb = &G(L)->tmpbuf;
|
||||
MSize sz = 0;
|
||||
MSize sz = 0, retry = 4;
|
||||
const char *q;
|
||||
for (q = s; *q; q++)
|
||||
sz += (*q == '%') ? 30 : 1; /* Overflow doesn't matter. */
|
||||
setsbufL(sb, L);
|
||||
for (;;) {
|
||||
while (retry--) { /* Limit growth for invalid format or empty result. */
|
||||
char *buf = lj_buf_need(sb, sz);
|
||||
size_t len = strftime(buf, sbufsz(sb), s, stm);
|
||||
if (len) {
|
||||
|
||||
3
third_party/luajit/luajit/src/lj_alloc.c
vendored
3
third_party/luajit/luajit/src/lj_alloc.c
vendored
@ -255,7 +255,8 @@ static void *mmap_probe(size_t size)
|
||||
for (retry = 0; retry < LJ_ALLOC_MMAP_PROBE_MAX; retry++) {
|
||||
void *p = mmap((void *)hint_addr, size, MMAP_PROT, MMAP_FLAGS_PROBE, -1, 0);
|
||||
uintptr_t addr = (uintptr_t)p;
|
||||
if ((addr >> LJ_ALLOC_MBITS) == 0 && addr >= LJ_ALLOC_MMAP_PROBE_LOWER) {
|
||||
if ((addr >> LJ_ALLOC_MBITS) == 0 && addr >= LJ_ALLOC_MMAP_PROBE_LOWER &&
|
||||
((addr + size) >> LJ_ALLOC_MBITS) == 0) {
|
||||
/* We got a suitable address. Bump the hint address. */
|
||||
hint_addr = addr + size;
|
||||
errno = olderr;
|
||||
|
||||
10
third_party/luajit/luajit/src/lj_jit.h
vendored
10
third_party/luajit/luajit/src/lj_jit.h
vendored
@ -166,7 +166,7 @@ typedef struct MCLink {
|
||||
|
||||
/* Stack snapshot header. */
|
||||
typedef struct SnapShot {
|
||||
uint16_t mapofs; /* Offset into snapshot map. */
|
||||
uint32_t mapofs; /* Offset into snapshot map. */
|
||||
IRRef1 ref; /* First IR ref for this snapshot. */
|
||||
uint8_t nslots; /* Number of valid slots. */
|
||||
uint8_t topslot; /* Maximum frame extent. */
|
||||
@ -233,8 +233,7 @@ typedef enum {
|
||||
/* Trace object. */
|
||||
typedef struct GCtrace {
|
||||
GCHeader;
|
||||
uint8_t topslot; /* Top stack slot already checked to be allocated. */
|
||||
uint8_t linktype; /* Type of link. */
|
||||
uint16_t nsnap; /* Number of snapshots. */
|
||||
IRRef nins; /* Next IR instruction. Biased with REF_BIAS. */
|
||||
#if LJ_GC64
|
||||
uint32_t unused_gc64;
|
||||
@ -242,8 +241,7 @@ typedef struct GCtrace {
|
||||
GCRef gclist;
|
||||
IRIns *ir; /* IR instructions/constants. Biased with REF_BIAS. */
|
||||
IRRef nk; /* Lowest IR constant. Biased with REF_BIAS. */
|
||||
uint16_t nsnap; /* Number of snapshots. */
|
||||
uint16_t nsnapmap; /* Number of snapshot map elements. */
|
||||
uint32_t nsnapmap; /* Number of snapshot map elements. */
|
||||
SnapShot *snap; /* Snapshot array. */
|
||||
SnapEntry *snapmap; /* Snapshot map. */
|
||||
GCRef startpt; /* Starting prototype. */
|
||||
@ -260,6 +258,8 @@ typedef struct GCtrace {
|
||||
TraceNo1 nextroot; /* Next root trace for same prototype. */
|
||||
TraceNo1 nextside; /* Next side trace of same root trace. */
|
||||
uint8_t sinktags; /* Trace has SINK tags. */
|
||||
uint8_t topslot; /* Top stack slot already checked to be allocated. */
|
||||
uint8_t linktype; /* Type of link. */
|
||||
uint8_t unused1;
|
||||
#ifdef LUAJIT_USE_GDBJIT
|
||||
void *gdbjit_entry; /* GDB JIT entry. */
|
||||
|
||||
8
third_party/luajit/luajit/src/lj_opt_loop.c
vendored
8
third_party/luajit/luajit/src/lj_opt_loop.c
vendored
@ -223,7 +223,7 @@ static void loop_subst_snap(jit_State *J, SnapShot *osnap,
|
||||
}
|
||||
J->guardemit.irt = 0;
|
||||
/* Setup new snapshot. */
|
||||
snap->mapofs = (uint16_t)nmapofs;
|
||||
snap->mapofs = (uint32_t)nmapofs;
|
||||
snap->ref = (IRRef1)J->cur.nins;
|
||||
snap->nslots = nslots;
|
||||
snap->topslot = osnap->topslot;
|
||||
@ -251,7 +251,7 @@ static void loop_subst_snap(jit_State *J, SnapShot *osnap,
|
||||
nmap += nn;
|
||||
while (omap < nextmap) /* Copy PC + frame links. */
|
||||
*nmap++ = *omap++;
|
||||
J->cur.nsnapmap = (uint16_t)(nmap - J->cur.snapmap);
|
||||
J->cur.nsnapmap = (uint32_t)(nmap - J->cur.snapmap);
|
||||
}
|
||||
|
||||
typedef struct LoopState {
|
||||
@ -369,7 +369,7 @@ static void loop_unroll(LoopState *lps)
|
||||
}
|
||||
}
|
||||
if (!irt_isguard(J->guardemit)) /* Drop redundant snapshot. */
|
||||
J->cur.nsnapmap = (uint16_t)J->cur.snap[--J->cur.nsnap].mapofs;
|
||||
J->cur.nsnapmap = (uint32_t)J->cur.snap[--J->cur.nsnap].mapofs;
|
||||
lua_assert(J->cur.nsnapmap <= J->sizesnapmap);
|
||||
*psentinel = J->cur.snapmap[J->cur.snap[0].nent]; /* Restore PC. */
|
||||
|
||||
@ -383,7 +383,7 @@ static void loop_undo(jit_State *J, IRRef ins, SnapNo nsnap, MSize nsnapmap)
|
||||
SnapShot *snap = &J->cur.snap[nsnap-1];
|
||||
SnapEntry *map = J->cur.snapmap;
|
||||
map[snap->mapofs + snap->nent] = map[J->cur.snap[0].nent]; /* Restore PC. */
|
||||
J->cur.nsnapmap = (uint16_t)nsnapmap;
|
||||
J->cur.nsnapmap = (uint32_t)nsnapmap;
|
||||
J->cur.nsnap = nsnap;
|
||||
J->guardemit.irt = 0;
|
||||
lj_ir_rollback(J, ins);
|
||||
|
||||
5
third_party/luajit/luajit/src/lj_record.c
vendored
5
third_party/luajit/luajit/src/lj_record.c
vendored
@ -2470,8 +2470,9 @@ void lj_record_ins(jit_State *J)
|
||||
#undef rbv
|
||||
#undef rcv
|
||||
|
||||
/* Limit the number of recorded IR instructions. */
|
||||
if (J->cur.nins > REF_FIRST+(IRRef)J->param[JIT_P_maxrecord])
|
||||
/* Limit the number of recorded IR instructions and constants. */
|
||||
if (J->cur.nins > REF_FIRST+(IRRef)J->param[JIT_P_maxrecord] ||
|
||||
J->cur.nk < REF_BIAS-(IRRef)J->param[JIT_P_maxirconst])
|
||||
lj_trace_err(J, LJ_TRERR_TRACEOV);
|
||||
}
|
||||
|
||||
|
||||
6
third_party/luajit/luajit/src/lj_snap.c
vendored
6
third_party/luajit/luajit/src/lj_snap.c
vendored
@ -161,11 +161,11 @@ static void snapshot_stack(jit_State *J, SnapShot *snap, MSize nsnapmap)
|
||||
nent = snapshot_slots(J, p, nslots);
|
||||
snap->nent = (uint8_t)nent;
|
||||
nent += snapshot_framelinks(J, p + nent, &snap->topslot);
|
||||
snap->mapofs = (uint16_t)nsnapmap;
|
||||
snap->mapofs = (uint32_t)nsnapmap;
|
||||
snap->ref = (IRRef1)J->cur.nins;
|
||||
snap->nslots = (uint8_t)nslots;
|
||||
snap->count = 0;
|
||||
J->cur.nsnapmap = (uint16_t)(nsnapmap + nent);
|
||||
J->cur.nsnapmap = (uint32_t)(nsnapmap + nent);
|
||||
}
|
||||
|
||||
/* Add or merge a snapshot. */
|
||||
@ -326,7 +326,7 @@ void lj_snap_shrink(jit_State *J)
|
||||
snap->nent = (uint8_t)m;
|
||||
nlim = J->cur.nsnapmap - snap->mapofs - 1;
|
||||
while (n <= nlim) map[m++] = map[n++]; /* Move PC + frame links down. */
|
||||
J->cur.nsnapmap = (uint16_t)(snap->mapofs + m); /* Free up space in map. */
|
||||
J->cur.nsnapmap = (uint32_t)(snap->mapofs + m); /* Free up space in map. */
|
||||
}
|
||||
|
||||
/* -- Snapshot access ----------------------------------------------------- */
|
||||
|
||||
3
third_party/luajit/luajit/src/lj_state.c
vendored
3
third_party/luajit/luajit/src/lj_state.c
vendored
@ -224,7 +224,6 @@ LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
|
||||
close_state(L);
|
||||
return NULL;
|
||||
}
|
||||
G2J(g)->prngstate = rand();
|
||||
#ifdef LJ_TARGET_JUMPRANGE
|
||||
#if LJ_TARGET_MIPS
|
||||
/* Use the middle of the 256MB-aligned region. */
|
||||
@ -233,8 +232,10 @@ LUA_API lua_State *lua_newstate(lua_Alloc f, void *ud)
|
||||
#else
|
||||
uintptr_t target = (uintptr_t)(void *)lj_vm_exit_handler & ~(uintptr_t)0xffff;
|
||||
#endif
|
||||
#ifdef LJ_HASJIT
|
||||
uintptr_t range = (1u << LJ_TARGET_JUMPRANGE) - (1u << 21);
|
||||
uintptr_t allocbase;
|
||||
G2J(g)->prngstate = rand();
|
||||
if (LJ_PRNG_BITS(G2J(g), 1)) {
|
||||
allocbase = (target - range > target) ? 0 : target - range;
|
||||
} else {
|
||||
|
||||
2
third_party/luajit/luajit/src/vm_mips.dasc
vendored
2
third_party/luajit/luajit/src/vm_mips.dasc
vendored
@ -4317,7 +4317,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
||||
| ins_next2
|
||||
|
|
||||
|7: // Possible table write barrier for the value. Skip valiswhite check.
|
||||
| barrierback TAB:CARG2, TMP3, TMP0, <2
|
||||
| barrierback TAB:CARG2, TMP3, CRET1, <2
|
||||
break;
|
||||
|
||||
case BC_TSETM:
|
||||
|
||||
2
third_party/luajit/luajit/src/vm_mips64.dasc
vendored
2
third_party/luajit/luajit/src/vm_mips64.dasc
vendored
@ -4263,7 +4263,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
|
||||
| ins_next2
|
||||
|
|
||||
|7: // Possible table write barrier for the value. Skip valiswhite check.
|
||||
| barrierback TAB:CARG2, TMP3, TMP0, <2
|
||||
| barrierback TAB:CARG2, TMP3, CRET1, <2
|
||||
break;
|
||||
|
||||
case BC_TSETM:
|
||||
|
||||
Reference in New Issue
Block a user