aboutsummaryrefslogtreecommitdiff
path: root/src/lj_opt_split.c
diff options
context:
space:
mode:
authorMike Pall <mike>2016-05-21 00:30:36 +0200
committerMike Pall <mike>2016-05-21 01:00:49 +0200
commit786dbb2ebdde16eadd7464cd5cbeb5d95a5e46f0 (patch)
tree8b66463365b467be31250334ea434a2f572b3c5d /src/lj_opt_split.c
parentcfa188f1349ba4c843394b53f270cb64635b9805 (diff)
downloadluajit-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.c6
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--;