diff options
author | Mike Pall <mike> | 2016-05-21 00:30:36 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-05-21 01:00:49 +0200 |
commit | 786dbb2ebdde16eadd7464cd5cbeb5d95a5e46f0 (patch) | |
tree | 8b66463365b467be31250334ea434a2f572b3c5d /src/lj_opt_split.c | |
parent | cfa188f1349ba4c843394b53f270cb64635b9805 (diff) | |
download | luajit-786dbb2ebdde16eadd7464cd5cbeb5d95a5e46f0.tar.gz luajit-786dbb2ebdde16eadd7464cd5cbeb5d95a5e46f0.tar.bz2 luajit-786dbb2ebdde16eadd7464cd5cbeb5d95a5e46f0.zip |
Add IR_FLOAD with REF_NIL for field loads from GG_State.
Contributed by Peter Cawley.
Diffstat (limited to '')
-rw-r--r-- | src/lj_opt_split.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lj_opt_split.c b/src/lj_opt_split.c index 6def4161..49c9ae47 100644 --- a/src/lj_opt_split.c +++ b/src/lj_opt_split.c | |||
@@ -12,6 +12,7 @@ | |||
12 | 12 | ||
13 | #include "lj_err.h" | 13 | #include "lj_err.h" |
14 | #include "lj_buf.h" | 14 | #include "lj_buf.h" |
15 | #include "lj_dispatch.h" | ||
15 | #include "lj_ir.h" | 16 | #include "lj_ir.h" |
16 | #include "lj_jit.h" | 17 | #include "lj_jit.h" |
17 | #include "lj_ircall.h" | 18 | #include "lj_ircall.h" |
@@ -448,6 +449,11 @@ static void split_ir(jit_State *J) | |||
448 | case IR_STRTO: | 449 | case IR_STRTO: |
449 | hi = split_emit(J, IRT(IR_HIOP, IRT_SOFTFP), nref, nref); | 450 | hi = split_emit(J, IRT(IR_HIOP, IRT_SOFTFP), nref, nref); |
450 | break; | 451 | break; |
452 | case IR_FLOAD: | ||
453 | lua_assert(ir->op1 == REF_NIL); | ||
454 | hi = lj_ir_kint(J, *(int32_t*)((char*)J2GG(J) + ir->op2 + LJ_LE*4)); | ||
455 | nir->op2 += LJ_BE*4; | ||
456 | break; | ||
451 | case IR_XLOAD: { | 457 | case IR_XLOAD: { |
452 | IRIns inslo = *nir; /* Save/undo the emit of the lo XLOAD. */ | 458 | IRIns inslo = *nir; /* Save/undo the emit of the lo XLOAD. */ |
453 | J->cur.nins--; | 459 | J->cur.nins--; |