diff --git a/lib/dump.lua b/lib/dump.lua index 7ddc9c07..bb8aa1ce 100644 --- a/lib/dump.lua +++ b/lib/dump.lua @@ -84,7 +84,10 @@ local function fillsymtab(nexit) local t = symtab if nexitsym == 0 then local ircall = vmdef.ircall - for i=0,#ircall do t[ircalladdr(i)] = ircall[i] end + for i=0,#ircall do + local addr = ircalladdr(i) + if addr ~= 0 then t[addr] = ircall[i] end + end end if nexit > nexitsym then for i=nexitsym,nexit-1 do diff --git a/src/buildvm.c b/src/buildvm.c index 122e1262..72c2dd83 100644 --- a/src/buildvm.c +++ b/src/buildvm.c @@ -271,7 +271,7 @@ IRFLDEF(FLNAME) }; const char *const ircall_names[] = { -#define IRCALLNAME(name, nargs, kind, type, flags) #name, +#define IRCALLNAME(cond, name, nargs, kind, type, flags) #name, IRCALLDEF(IRCALLNAME) #undef IRCALLNAME NULL diff --git a/src/lj_ir.c b/src/lj_ir.c index 8f22e085..457d9187 100644 --- a/src/lj_ir.c +++ b/src/lj_ir.c @@ -47,8 +47,8 @@ IRDEF(IRMODE) /* C call info for CALL* instructions. */ LJ_DATADEF const CCallInfo lj_ir_callinfo[] = { -#define IRCALLCI(name, nargs, kind, type, flags) \ - { (ASMFunction)name, \ +#define IRCALLCI(cond, name, nargs, kind, type, flags) \ + { (ASMFunction)IRCALLCOND_##cond(name), \ (nargs)|(CCI_CALL_##kind)|(IRT_##type<