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