aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lj_ffrecord.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c
index e22d8da6..7d83396b 100644
--- a/src/lj_ffrecord.c
+++ b/src/lj_ffrecord.c
@@ -697,7 +697,7 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
697 emitir(IRTGI(IR_EQ), trstart, tr0); 697 emitir(IRTGI(IR_EQ), trstart, tr0);
698 trstart = tr0; 698 trstart = tr0;
699 } else { 699 } else {
700 trstart = emitir(IRTI(IR_ADD), trstart, lj_ir_kint(J, -1)); 700 trstart = emitir(IRTGI(IR_ADDOV), trstart, lj_ir_kint(J, -1));
701 emitir(IRTGI(IR_GE), trstart, tr0); 701 emitir(IRTGI(IR_GE), trstart, tr0);
702 start--; 702 start--;
703 } 703 }
@@ -705,7 +705,7 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
705 if (rd->data) { /* Return string.sub result. */ 705 if (rd->data) { /* Return string.sub result. */
706 if (end - start >= 0) { 706 if (end - start >= 0) {
707 /* Also handle empty range here, to avoid extra traces. */ 707 /* Also handle empty range here, to avoid extra traces. */
708 TRef trptr, trslen = emitir(IRTI(IR_SUB), trend, trstart); 708 TRef trptr, trslen = emitir(IRTGI(IR_SUBOV), trend, trstart);
709 emitir(IRTGI(IR_GE), trslen, tr0); 709 emitir(IRTGI(IR_GE), trslen, tr0);
710 trptr = emitir(IRT(IR_STRREF, IRT_P32), trstr, trstart); 710 trptr = emitir(IRT(IR_STRREF, IRT_P32), trstr, trstart);
711 J->base[0] = emitir(IRT(IR_SNEW, IRT_STR), trptr, trslen); 711 J->base[0] = emitir(IRT(IR_SNEW, IRT_STR), trptr, trslen);
@@ -716,7 +716,7 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
716 } else { /* Return string.byte result(s). */ 716 } else { /* Return string.byte result(s). */
717 ptrdiff_t i, len = end - start; 717 ptrdiff_t i, len = end - start;
718 if (len > 0) { 718 if (len > 0) {
719 TRef trslen = emitir(IRTI(IR_SUB), trend, trstart); 719 TRef trslen = emitir(IRTGI(IR_SUBOV), trend, trstart);
720 emitir(IRTGI(IR_EQ), trslen, lj_ir_kint(J, (int32_t)len)); 720 emitir(IRTGI(IR_EQ), trslen, lj_ir_kint(J, (int32_t)len));
721 if (J->baseslot + len > LJ_MAX_JSLOTS) 721 if (J->baseslot + len > LJ_MAX_JSLOTS)
722 lj_trace_err_info(J, LJ_TRERR_STACKOV); 722 lj_trace_err_info(J, LJ_TRERR_STACKOV);