diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lj_ffrecord.c | 6 |
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); |
