Add recursive dump option to jit.bc.dump().

This commit is contained in:
Mike Pall 2011-06-12 23:51:13 +02:00
parent 0c8696dfbf
commit 9da94d1355
2 changed files with 10 additions and 1 deletions

View File

@ -125,9 +125,16 @@ local function bctargets(func)
end end
-- Dump bytecode instructions of a function. -- Dump bytecode instructions of a function.
local function bcdump(func, out) local function bcdump(func, out, all)
if not out then out = stdout end if not out then out = stdout end
local fi = funcinfo(func) local fi = funcinfo(func)
if all and fi.children then
for n=-1,-1000000000,-1 do
local k = funck(func, n)
if not k then break end
if type(k) == "proto" then bcdump(k, out, true) end
end
end
out:write(format("-- BYTECODE -- %s-%d\n", fi.loc, fi.lastlinedefined)) out:write(format("-- BYTECODE -- %s-%d\n", fi.loc, fi.lastlinedefined))
local target = bctargets(func) local target = bctargets(func)
for pc=1,1000000000 do for pc=1,1000000000 do

View File

@ -193,6 +193,8 @@ LJLIB_CF(jit_util_funcinfo)
setintfield(L, t, "currentline", lj_debug_line(pt, pc)); setintfield(L, t, "currentline", lj_debug_line(pt, pc));
lua_pushboolean(L, (pt->flags & PROTO_VARARG)); lua_pushboolean(L, (pt->flags & PROTO_VARARG));
lua_setfield(L, -2, "isvararg"); lua_setfield(L, -2, "isvararg");
lua_pushboolean(L, (pt->flags & PROTO_CHILD));
lua_setfield(L, -2, "children");
setstrV(L, L->top++, proto_chunkname(pt)); setstrV(L, L->top++, proto_chunkname(pt));
lua_setfield(L, -2, "source"); lua_setfield(L, -2, "source");
lj_debug_pushloc(L, pt, pc); lj_debug_pushloc(L, pt, pc);