aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ffrecord.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_ffrecord.c')
-rw-r--r--src/lj_ffrecord.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c
index 9ea81e54..527b6c06 100644
--- a/src/lj_ffrecord.c
+++ b/src/lj_ffrecord.c
@@ -796,7 +796,7 @@ static TRef recff_string_start(jit_State *J, GCstr *s, int32_t *st, TRef tr,
796 emitir(IRTGI(IR_EQ), tr, tr0); 796 emitir(IRTGI(IR_EQ), tr, tr0);
797 tr = tr0; 797 tr = tr0;
798 } else { 798 } else {
799 tr = emitir(IRTI(IR_ADD), tr, lj_ir_kint(J, -1)); 799 tr = emitir(IRTGI(IR_ADDOV), tr, lj_ir_kint(J, -1));
800 emitir(IRTGI(IR_GE), tr, tr0); 800 emitir(IRTGI(IR_GE), tr, tr0);
801 start--; 801 start--;
802 } 802 }
@@ -848,7 +848,7 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
848 } else if ((MSize)end <= str->len) { 848 } else if ((MSize)end <= str->len) {
849 emitir(IRTGI(IR_ULE), trend, trlen); 849 emitir(IRTGI(IR_ULE), trend, trlen);
850 } else { 850 } else {
851 emitir(IRTGI(IR_UGT), trend, trlen); 851 emitir(IRTGI(IR_GT), trend, trlen);
852 end = (int32_t)str->len; 852 end = (int32_t)str->len;
853 trend = trlen; 853 trend = trlen;
854 } 854 }
@@ -856,7 +856,7 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
856 if (rd->data) { /* Return string.sub result. */ 856 if (rd->data) { /* Return string.sub result. */
857 if (end - start >= 0) { 857 if (end - start >= 0) {
858 /* Also handle empty range here, to avoid extra traces. */ 858 /* Also handle empty range here, to avoid extra traces. */
859 TRef trptr, trslen = emitir(IRTI(IR_SUB), trend, trstart); 859 TRef trptr, trslen = emitir(IRTGI(IR_SUBOV), trend, trstart);
860 emitir(IRTGI(IR_GE), trslen, tr0); 860 emitir(IRTGI(IR_GE), trslen, tr0);
861 trptr = emitir(IRT(IR_STRREF, IRT_PGC), trstr, trstart); 861 trptr = emitir(IRT(IR_STRREF, IRT_PGC), trstr, trstart);
862 J->base[0] = emitir(IRT(IR_SNEW, IRT_STR), trptr, trslen); 862 J->base[0] = emitir(IRT(IR_SNEW, IRT_STR), trptr, trslen);
@@ -867,7 +867,7 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
867 } else { /* Return string.byte result(s). */ 867 } else { /* Return string.byte result(s). */
868 ptrdiff_t i, len = end - start; 868 ptrdiff_t i, len = end - start;
869 if (len > 0) { 869 if (len > 0) {
870 TRef trslen = emitir(IRTI(IR_SUB), trend, trstart); 870 TRef trslen = emitir(IRTGI(IR_SUBOV), trend, trstart);
871 emitir(IRTGI(IR_EQ), trslen, lj_ir_kint(J, (int32_t)len)); 871 emitir(IRTGI(IR_EQ), trslen, lj_ir_kint(J, (int32_t)len));
872 if (J->baseslot + len > LJ_MAX_JSLOTS) 872 if (J->baseslot + len > LJ_MAX_JSLOTS)
873 lj_trace_err_info(J, LJ_TRERR_STACKOV); 873 lj_trace_err_info(J, LJ_TRERR_STACKOV);