diff options
author | Mike Pall <mike> | 2012-07-18 18:02:32 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-07-18 18:02:32 +0200 |
commit | f1b4fa844b6b2968aa0fd1b2d3ede1d32ba267c3 (patch) | |
tree | 3e33201c743fe2e4b457b89420ecbf5d6c4e7a87 /src/lj_snap.c | |
parent | 4d9c29a78cde2596ea3286744d93d29dd2a6d9ca (diff) | |
download | luajit-f1b4fa844b6b2968aa0fd1b2d3ede1d32ba267c3.tar.gz luajit-f1b4fa844b6b2968aa0fd1b2d3ede1d32ba267c3.tar.bz2 luajit-f1b4fa844b6b2968aa0fd1b2d3ede1d32ba267c3.zip |
Fix restore of sunk CNEWI with implicit P32 to P64 conversion.
Diffstat (limited to 'src/lj_snap.c')
-rw-r--r-- | src/lj_snap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_snap.c b/src/lj_snap.c index b9a82008..0aab7e78 100644 --- a/src/lj_snap.c +++ b/src/lj_snap.c | |||
@@ -662,6 +662,10 @@ static void snap_restoredata(GCtrace *T, ExitState *ex, | |||
662 | rs = snap_renameref(T, snapno, ref, rs); | 662 | rs = snap_renameref(T, snapno, ref, rs); |
663 | if (ra_hasspill(regsp_spill(rs))) { | 663 | if (ra_hasspill(regsp_spill(rs))) { |
664 | src = &ex->spill[regsp_spill(rs)]; | 664 | src = &ex->spill[regsp_spill(rs)]; |
665 | if (sz == 8 && !irt_is64(ir->t)) { | ||
666 | tmp = (uint64_t)(uint32_t)*src; | ||
667 | src = (int32_t *)&tmp; | ||
668 | } | ||
665 | } else { | 669 | } else { |
666 | Reg r = regsp_reg(rs); | 670 | Reg r = regsp_reg(rs); |
667 | if (ra_noreg(r)) { | 671 | if (ra_noreg(r)) { |