aboutsummaryrefslogtreecommitdiff
path: root/src/vm_mips.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm_mips.dasc')
-rw-r--r--src/vm_mips.dasc26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/vm_mips.dasc b/src/vm_mips.dasc
index 5808e182..53000411 100644
--- a/src/vm_mips.dasc
+++ b/src/vm_mips.dasc
@@ -1736,14 +1736,15 @@ static void build_subroutines(BuildCtx *ctx)
1736 | beqz AT, ->fff_fallback 1736 | beqz AT, ->fff_fallback
1737 |. lw TMP0, STR:CARG1->len 1737 |. lw TMP0, STR:CARG1->len
1738 | mfc1 CARG3, f0 1738 | mfc1 CARG3, f0
1739 | lw TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 1739 | lw CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
1740 | lw TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
1740 | li AT, 1 1741 | li AT, 1
1741 | blez CARG3, ->fff_emptystr // Count <= 0? 1742 | blez CARG3, ->fff_emptystr // Count <= 0?
1742 |. sltu AT, AT, TMP0 1743 |. sltu AT, AT, TMP0
1743 | beqz TMP0, ->fff_emptystr // Zero length string? 1744 | beqz TMP0, ->fff_emptystr // Zero length string?
1744 |. sltu TMP0, TMP1, CARG3 1745 |. addu TMP3, CARG2, CARG3
1746 | sltu TMP0, TMP1, TMP3
1745 | or AT, AT, TMP0 1747 | or AT, AT, TMP0
1746 | lw CARG2, DISPATCH_GL(tmpbuf.buf)(DISPATCH)
1747 | bnez AT, ->fff_fallback // Fallback for > 1-char strings. 1748 | bnez AT, ->fff_fallback // Fallback for > 1-char strings.
1748 |. lbu TMP0, STR:CARG1[1] 1749 |. lbu TMP0, STR:CARG1[1]
1749 | addu TMP2, CARG2, CARG3 1750 | addu TMP2, CARG2, CARG3
@@ -1762,14 +1763,14 @@ static void build_subroutines(BuildCtx *ctx)
1762 | beqz NARGS8:RC, ->fff_fallback 1763 | beqz NARGS8:RC, ->fff_fallback
1763 |. li AT, LJ_TSTR 1764 |. li AT, LJ_TSTR
1764 | bne CARG3, AT, ->fff_fallback 1765 | bne CARG3, AT, ->fff_fallback
1765 |. lw TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 1766 |. lw CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
1766 | lw CARG3, STR:CARG1->len 1767 | lw CARG3, STR:CARG1->len
1768 | lw TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
1767 | addiu CARG1, STR:CARG1, #STR 1769 | addiu CARG1, STR:CARG1, #STR
1768 | lw CARG2, DISPATCH_GL(tmpbuf.buf)(DISPATCH) 1770 | addu CARG4, CARG2, CARG3
1769 | sltu AT, TMP1, CARG3 1771 | sltu AT, TMP1, CARG4
1770 | bnez AT, ->fff_fallback 1772 | bnez AT, ->fff_fallback
1771 |. addu TMP3, CARG1, CARG3 1773 |. addu TMP3, CARG1, CARG3
1772 | addu CARG4, CARG2, CARG3
1773 |1: // Reverse string copy. 1774 |1: // Reverse string copy.
1774 | lbu TMP1, 0(CARG1) 1775 | lbu TMP1, 0(CARG1)
1775 | sltu AT, CARG1, TMP3 1776 | sltu AT, CARG1, TMP3
@@ -1787,11 +1788,12 @@ static void build_subroutines(BuildCtx *ctx)
1787 | beqz NARGS8:RC, ->fff_fallback 1788 | beqz NARGS8:RC, ->fff_fallback
1788 |. li AT, LJ_TSTR 1789 |. li AT, LJ_TSTR
1789 | bne CARG3, AT, ->fff_fallback 1790 | bne CARG3, AT, ->fff_fallback
1790 |. lw TMP1, DISPATCH_GL(tmpbuf.sz)(DISPATCH) 1791 |. lw CARG2, DISPATCH_GL(tmpbuf.b)(DISPATCH)
1791 | lw CARG3, STR:CARG1->len 1792 | lw CARG3, STR:CARG1->len
1793 | lw TMP1, DISPATCH_GL(tmpbuf.e)(DISPATCH)
1792 | addiu CARG1, STR:CARG1, #STR 1794 | addiu CARG1, STR:CARG1, #STR
1793 | lw CARG2, DISPATCH_GL(tmpbuf.buf)(DISPATCH) 1795 | addu TMP3, CARG2, CARG3
1794 | sltu AT, TMP1, CARG3 1796 | sltu AT, TMP1, TMP3
1795 | bnez AT, ->fff_fallback 1797 | bnez AT, ->fff_fallback
1796 |. addu TMP3, CARG1, CARG3 1798 |. addu TMP3, CARG1, CARG3
1797 | move CARG4, CARG2 1799 | move CARG4, CARG2