summaryrefslogtreecommitdiff
path: root/src/jit
diff options
context:
space:
mode:
authorMike Pall <mike>2012-07-02 23:47:12 +0200
committerMike Pall <mike>2012-07-02 23:47:12 +0200
commit0af3f47ba01b9634f75a1aee38e318d74dab53d0 (patch)
tree1ab064739041d279a54f89f396ae03bc9cf89864 /src/jit
parent79e1eaa73b1bb8dd0e2ea7aeaba8504f89e5ff94 (diff)
downloadluajit-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.lua15
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)
374end 374end
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.
377local function ridsp_name(ridsp) 377local 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 ""
383end 386end
@@ -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)