diff options
Diffstat (limited to '')
-rw-r--r-- | src/vm_x86.dasc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc index 85d9d5fe..9c5ae384 100644 --- a/src/vm_x86.dasc +++ b/src/vm_x86.dasc | |||
@@ -1793,6 +1793,9 @@ static void build_subroutines(BuildCtx *ctx) | |||
1793 | |//-- Base library: catch errors ---------------------------------------- | 1793 | |//-- Base library: catch errors ---------------------------------------- |
1794 | | | 1794 | | |
1795 | |.ffunc_1 pcall | 1795 | |.ffunc_1 pcall |
1796 | | mov L:RB, SAVE_L | ||
1797 | | lea RA, [BASE+NARGS:RD*8] | ||
1798 | | cmp RA, L:RB->maxstack; ja ->fff_fallback | ||
1796 | | lea RA, [BASE+8] | 1799 | | lea RA, [BASE+8] |
1797 | | sub NARGS:RD, 1 | 1800 | | sub NARGS:RD, 1 |
1798 | | mov PC, 8+FRAME_PCALL | 1801 | | mov PC, 8+FRAME_PCALL |
@@ -1804,6 +1807,9 @@ static void build_subroutines(BuildCtx *ctx) | |||
1804 | | jmp ->vm_call_dispatch | 1807 | | jmp ->vm_call_dispatch |
1805 | | | 1808 | | |
1806 | |.ffunc_2 xpcall | 1809 | |.ffunc_2 xpcall |
1810 | | mov L:RB, SAVE_L | ||
1811 | | lea RA, [BASE+NARGS:RD*8] | ||
1812 | | cmp RA, L:RB->maxstack; ja ->fff_fallback | ||
1807 | | cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback | 1813 | | cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback |
1808 | | mov RB, [BASE+4] // Swap function and traceback. | 1814 | | mov RB, [BASE+4] // Swap function and traceback. |
1809 | | mov [BASE+12], RB | 1815 | | mov [BASE+12], RB |