diff options
author | Mike Pall <mike> | 2012-07-02 22:47:20 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-07-02 22:47:20 +0200 |
commit | 0688de5483c04207220223cbb16a3869849129ab (patch) | |
tree | 619857d1a5d1646cb06448aefcb7c962ae6b7b42 /src | |
parent | 5d0115ef8df093ce9737d00ad35d2fcc693df83f (diff) | |
download | luajit-0688de5483c04207220223cbb16a3869849129ab.tar.gz luajit-0688de5483c04207220223cbb16a3869849129ab.tar.bz2 luajit-0688de5483c04207220223cbb16a3869849129ab.zip |
Add IR_PVAL instruction for non-slot parent links.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_asm.c | 2 | ||||
-rw-r--r-- | src/lj_ir.h | 1 | ||||
-rw-r--r-- | src/lj_snap.c | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/src/lj_asm.c b/src/lj_asm.c index dccc4eab..9bce9292 100644 --- a/src/lj_asm.c +++ b/src/lj_asm.c | |||
@@ -1287,7 +1287,7 @@ static void asm_head_side(ASMState *as) | |||
1287 | IRIns *ir = IR(i); | 1287 | IRIns *ir = IR(i); |
1288 | RegSP rs; | 1288 | RegSP rs; |
1289 | lua_assert((ir->o == IR_SLOAD && (ir->op2 & IRSLOAD_PARENT)) || | 1289 | lua_assert((ir->o == IR_SLOAD && (ir->op2 & IRSLOAD_PARENT)) || |
1290 | (LJ_SOFTFP && ir->o == IR_HIOP)); | 1290 | (LJ_SOFTFP && ir->o == IR_HIOP) || ir->o == IR_PVAL); |
1291 | rs = as->parentmap[i - REF_FIRST]; | 1291 | rs = as->parentmap[i - REF_FIRST]; |
1292 | if (ra_hasreg(ir->r)) { | 1292 | if (ra_hasreg(ir->r)) { |
1293 | rset_clear(allow, ir->r); | 1293 | rset_clear(allow, ir->r); |
diff --git a/src/lj_ir.h b/src/lj_ir.h index b10c65df..7e14066a 100644 --- a/src/lj_ir.h +++ b/src/lj_ir.h | |||
@@ -33,6 +33,7 @@ | |||
33 | /* Miscellaneous ops. */ \ | 33 | /* Miscellaneous ops. */ \ |
34 | _(NOP, N , ___, ___) \ | 34 | _(NOP, N , ___, ___) \ |
35 | _(BASE, N , lit, lit) \ | 35 | _(BASE, N , lit, lit) \ |
36 | _(PVAL, N , lit, ___) \ | ||
36 | _(GCSTEP, S , ___, ___) \ | 37 | _(GCSTEP, S , ___, ___) \ |
37 | _(HIOP, S , ref, ref) \ | 38 | _(HIOP, S , ref, ref) \ |
38 | _(LOOP, S , ___, ___) \ | 39 | _(LOOP, S , ___, ___) \ |
diff --git a/src/lj_snap.c b/src/lj_snap.c index c04d622d..11d7ad0c 100644 --- a/src/lj_snap.c +++ b/src/lj_snap.c | |||
@@ -339,6 +339,8 @@ IRIns *lj_snap_regspmap(GCtrace *T, SnapNo snapno, IRIns *ir) | |||
339 | } | 339 | } |
340 | } else if (LJ_SOFTFP && ir->o == IR_HIOP) { | 340 | } else if (LJ_SOFTFP && ir->o == IR_HIOP) { |
341 | ref++; | 341 | ref++; |
342 | } else if (ir->o == IR_PVAL) { | ||
343 | ref = ir->op1 + REF_BIAS; | ||
342 | } else { | 344 | } else { |
343 | break; | 345 | break; |
344 | } | 346 | } |