diff options
| author | Mike Pall <mike> | 2010-09-15 00:51:43 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2010-09-15 00:51:43 +0200 |
| commit | 77267bc5384b4211418a05f0897ff336c4e1279e (patch) | |
| tree | 9109295907b04ce21af9305a8105e8fdb4167a6e | |
| parent | 8dc76ee3276e504d739818322e4dff37e6ae1c11 (diff) | |
| download | luajit-77267bc5384b4211418a05f0897ff336c4e1279e.tar.gz luajit-77267bc5384b4211418a05f0897ff336c4e1279e.tar.bz2 luajit-77267bc5384b4211418a05f0897ff336c4e1279e.zip | |
Show names of IR calls in disassembler output.
| -rw-r--r-- | lib/dump.lua | 8 | ||||
| -rw-r--r-- | src/lib_jit.c | 14 |
2 files changed, 19 insertions, 3 deletions
diff --git a/lib/dump.lua b/lib/dump.lua index a00862d0..b0a334e6 100644 --- a/lib/dump.lua +++ b/lib/dump.lua | |||
| @@ -59,8 +59,8 @@ local jutil = require("jit.util") | |||
| 59 | local vmdef = require("jit.vmdef") | 59 | local vmdef = require("jit.vmdef") |
| 60 | local funcinfo, funcbc = jutil.funcinfo, jutil.funcbc | 60 | local funcinfo, funcbc = jutil.funcinfo, jutil.funcbc |
| 61 | local traceinfo, traceir, tracek = jutil.traceinfo, jutil.traceir, jutil.tracek | 61 | local traceinfo, traceir, tracek = jutil.traceinfo, jutil.traceir, jutil.tracek |
| 62 | local tracemc, traceexitstub = jutil.tracemc, jutil.traceexitstub | 62 | local tracemc, tracesnap = jutil.tracemc, jutil.tracesnap |
| 63 | local tracesnap = jutil.tracesnap | 63 | local traceexitstub, ircalladdr = jutil.traceexitstub, jutil.ircalladdr |
| 64 | local bit = require("bit") | 64 | local bit = require("bit") |
| 65 | local band, shl, shr = bit.band, bit.lshift, bit.rshift | 65 | local band, shl, shr = bit.band, bit.lshift, bit.rshift |
| 66 | local sub, gsub, format = string.sub, string.gsub, string.format | 66 | local sub, gsub, format = string.sub, string.gsub, string.format |
| @@ -82,6 +82,10 @@ local nexitsym = 0 | |||
| 82 | -- Fill symbol table with trace exit addresses. | 82 | -- Fill symbol table with trace exit addresses. |
| 83 | local function fillsymtab(nexit) | 83 | local function fillsymtab(nexit) |
| 84 | local t = symtab | 84 | local t = symtab |
| 85 | if nexitsym == 0 then | ||
| 86 | local ircall = vmdef.ircall | ||
| 87 | for i=0,#ircall do t[ircalladdr(i)] = ircall[i] end | ||
| 88 | end | ||
| 85 | if nexit > nexitsym then | 89 | if nexit > nexitsym then |
| 86 | for i=nexitsym,nexit-1 do t[traceexitstub(i)] = tostring(i) end | 90 | for i=nexitsym,nexit-1 do t[traceexitstub(i)] = tostring(i) end |
| 87 | nexitsym = nexit | 91 | nexitsym = nexit |
diff --git a/src/lib_jit.c b/src/lib_jit.c index bfceab62..57b50749 100644 --- a/src/lib_jit.c +++ b/src/lib_jit.c | |||
| @@ -370,7 +370,18 @@ LJLIB_CF(jit_util_traceexitstub) | |||
| 370 | ExitNo exitno = (ExitNo)lj_lib_checkint(L, 1); | 370 | ExitNo exitno = (ExitNo)lj_lib_checkint(L, 1); |
| 371 | jit_State *J = L2J(L); | 371 | jit_State *J = L2J(L); |
| 372 | if (exitno < EXITSTUBS_PER_GROUP*LJ_MAX_EXITSTUBGR) { | 372 | if (exitno < EXITSTUBS_PER_GROUP*LJ_MAX_EXITSTUBGR) { |
| 373 | setnumV(L->top-1, cast_num((intptr_t)exitstub_addr(J, exitno))); | 373 | setnumV(L->top-1, cast_num((uintptr_t)exitstub_addr(J, exitno))); |
| 374 | return 1; | ||
| 375 | } | ||
| 376 | return 0; | ||
| 377 | } | ||
| 378 | |||
| 379 | /* local addr = jit.util.ircalladdr(idx) */ | ||
| 380 | LJLIB_CF(jit_util_ircalladdr) | ||
| 381 | { | ||
| 382 | uint32_t idx = (uint32_t)lj_lib_checkint(L, 1); | ||
| 383 | if (idx < IRCALL__MAX) { | ||
| 384 | setnumV(L->top-1, cast_num((uintptr_t)(void *)lj_ir_callinfo[idx].func)); | ||
| 374 | return 1; | 385 | return 1; |
| 375 | } | 386 | } |
| 376 | return 0; | 387 | return 0; |
| @@ -389,6 +400,7 @@ static int trace_nojit(lua_State *L) | |||
| 389 | #define lj_cf_jit_util_tracesnap trace_nojit | 400 | #define lj_cf_jit_util_tracesnap trace_nojit |
| 390 | #define lj_cf_jit_util_tracemc trace_nojit | 401 | #define lj_cf_jit_util_tracemc trace_nojit |
| 391 | #define lj_cf_jit_util_traceexitstub trace_nojit | 402 | #define lj_cf_jit_util_traceexitstub trace_nojit |
| 403 | #define lj_cf_jit_util_ircalladdr trace_nojit | ||
| 392 | 404 | ||
| 393 | #endif | 405 | #endif |
| 394 | 406 | ||
