diff options
author | Mike Pall <mike> | 2012-07-02 23:47:12 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-07-02 23:47:12 +0200 |
commit | 0af3f47ba01b9634f75a1aee38e318d74dab53d0 (patch) | |
tree | 1ab064739041d279a54f89f396ae03bc9cf89864 /src/jit | |
parent | 79e1eaa73b1bb8dd0e2ea7aeaba8504f89e5ff94 (diff) | |
download | luajit-0af3f47ba01b9634f75a1aee38e318d74dab53d0.tar.gz luajit-0af3f47ba01b9634f75a1aee38e318d74dab53d0.tar.bz2 luajit-0af3f47ba01b9634f75a1aee38e318d74dab53d0.zip |
Add allocation sinking and store sinking optimization.
Diffstat (limited to 'src/jit')
-rw-r--r-- | src/jit/dump.lua | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/jit/dump.lua b/src/jit/dump.lua index 3d62c4ea..98933971 100644 --- a/src/jit/dump.lua +++ b/src/jit/dump.lua | |||
@@ -374,10 +374,13 @@ local function dump_snap(tr) | |||
374 | end | 374 | end |
375 | 375 | ||
376 | -- Return a register name or stack slot for a rid/sp location. | 376 | -- Return a register name or stack slot for a rid/sp location. |
377 | local function ridsp_name(ridsp) | 377 | local function ridsp_name(ridsp, ins) |
378 | if not disass then disass = require("jit.dis_"..jit.arch) end | 378 | if not disass then disass = require("jit.dis_"..jit.arch) end |
379 | local rid = band(ridsp, 0xff) | 379 | local rid, slot = band(ridsp, 0xff), shr(ridsp, 8) |
380 | if ridsp > 255 then return format("[%x]", shr(ridsp, 8)*4) end | 380 | if rid == 253 or rid == 254 then |
381 | return slot == 0 and " {sink" or format(" {%04d", ins-slot) | ||
382 | end | ||
383 | if ridsp > 255 then return format("[%x]", slot*4) end | ||
381 | if rid < 128 then return disass.regname(rid) end | 384 | if rid < 128 then return disass.regname(rid) end |
382 | return "" | 385 | return "" |
383 | end | 386 | end |
@@ -458,13 +461,15 @@ local function dump_ir(tr, dumpsnap, dumpreg) | |||
458 | end | 461 | end |
459 | elseif op ~= "NOP " and op ~= "CARG " and | 462 | elseif op ~= "NOP " and op ~= "CARG " and |
460 | (dumpreg or op ~= "RENAME") then | 463 | (dumpreg or op ~= "RENAME") then |
464 | local rid = band(ridsp, 255) | ||
461 | if dumpreg then | 465 | if dumpreg then |
462 | out:write(format("%04d %-5s ", ins, ridsp_name(ridsp))) | 466 | out:write(format("%04d %-6s", ins, ridsp_name(ridsp, ins))) |
463 | else | 467 | else |
464 | out:write(format("%04d ", ins)) | 468 | out:write(format("%04d ", ins)) |
465 | end | 469 | end |
466 | out:write(format("%s%s %s %s ", | 470 | out:write(format("%s%s %s %s ", |
467 | band(ot, 128) == 0 and " " or ">", | 471 | (rid == 254 or rid == 253) and "}" or |
472 | (band(ot, 128) == 0 and " " or ">"), | ||
468 | band(ot, 64) == 0 and " " or "+", | 473 | band(ot, 64) == 0 and " " or "+", |
469 | irtype[t], op)) | 474 | irtype[t], op)) |
470 | local m1, m2 = band(m, 3), band(m, 3*4) | 475 | local m1, m2 = band(m, 3), band(m, 3*4) |