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) |
