diff options
author | Mike Pall <mike> | 2011-01-19 02:05:12 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-01-19 02:05:12 +0100 |
commit | 8407ac0eca109d466b388d04b29f12f21265a1e0 (patch) | |
tree | 0b9a3f45efc93f93993a51a2df028d65372f8a9d /src | |
parent | 925050fe3ffae269f77757679270432dbad7f010 (diff) | |
download | luajit-8407ac0eca109d466b388d04b29f12f21265a1e0.tar.gz luajit-8407ac0eca109d466b388d04b29f12f21265a1e0.tar.bz2 luajit-8407ac0eca109d466b388d04b29f12f21265a1e0.zip |
Add volatile XLOADs.
Diffstat (limited to 'src')
-rw-r--r-- | src/lj_ir.h | 3 | ||||
-rw-r--r-- | src/lj_opt_mem.c | 5 |
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); | 726 | doemit: |
727 | return EMITFOLD; | ||
725 | } | 728 | } |
726 | 729 | ||
727 | /* XSTORE elimination. */ | 730 | /* XSTORE elimination. */ |