aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-07-02 22:47:20 +0200
committerMike Pall <mike>2012-07-02 22:47:20 +0200
commit0688de5483c04207220223cbb16a3869849129ab (patch)
tree619857d1a5d1646cb06448aefcb7c962ae6b7b42 /src
parent5d0115ef8df093ce9737d00ad35d2fcc693df83f (diff)
downloadluajit-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.c2
-rw-r--r--src/lj_ir.h1
-rw-r--r--src/lj_snap.c2
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 }