aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2011-01-19 02:05:12 +0100
committerMike Pall <mike>2011-01-19 02:05:12 +0100
commit8407ac0eca109d466b388d04b29f12f21265a1e0 (patch)
tree0b9a3f45efc93f93993a51a2df028d65372f8a9d /src
parent925050fe3ffae269f77757679270432dbad7f010 (diff)
downloadluajit-8407ac0eca109d466b388d04b29f12f21265a1e0.tar.gz
luajit-8407ac0eca109d466b388d04b29f12f21265a1e0.tar.bz2
luajit-8407ac0eca109d466b388d04b29f12f21265a1e0.zip
Add volatile XLOADs.
Diffstat (limited to 'src')
-rw-r--r--src/lj_ir.h3
-rw-r--r--src/lj_opt_mem.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/src/lj_ir.h b/src/lj_ir.h
index d3104017..68901325 100644
--- a/src/lj_ir.h
+++ b/src/lj_ir.h
@@ -206,7 +206,8 @@ IRFLDEF(FLENUM)
206 206
207/* XLOAD mode, stored in op2. */ 207/* XLOAD mode, stored in op2. */
208#define IRXLOAD_READONLY 1 /* Load from read-only data. */ 208#define IRXLOAD_READONLY 1 /* Load from read-only data. */
209#define IRXLOAD_UNALIGNED 2 /* Unaligned load. */ 209#define IRXLOAD_VOLATILE 2 /* Load from volatile data. */
210#define IRXLOAD_UNALIGNED 4 /* Unaligned load. */
210 211
211/* CONV mode, stored in op2. */ 212/* CONV mode, stored in op2. */
212#define IRCONV_SRCMASK 0x001f /* Source IRType. */ 213#define IRCONV_SRCMASK 0x001f /* Source IRType. */
diff --git a/src/lj_opt_mem.c b/src/lj_opt_mem.c
index 9c22362b..cad85bb7 100644
--- a/src/lj_opt_mem.c
+++ b/src/lj_opt_mem.c
@@ -669,6 +669,8 @@ TRef LJ_FASTCALL lj_opt_fwd_xload(jit_State *J)
669 669
670 if ((fins->op2 & IRXLOAD_READONLY)) 670 if ((fins->op2 & IRXLOAD_READONLY))
671 goto cselim; 671 goto cselim;
672 if ((fins->op2 & IRXLOAD_VOLATILE))
673 goto doemit;
672 674
673 /* Search for conflicting stores. */ 675 /* Search for conflicting stores. */
674 ref = J->chain[IR_XSTORE]; 676 ref = J->chain[IR_XSTORE];
@@ -721,7 +723,8 @@ cselim:
721 xr = IR(xref); 723 xr = IR(xref);
722 goto retry; /* Retry with the reassociated reference. */ 724 goto retry; /* Retry with the reassociated reference. */
723 } 725 }
724 return lj_ir_emit(J); 726doemit:
727 return EMITFOLD;
725} 728}
726 729
727/* XSTORE elimination. */ 730/* XSTORE elimination. */