aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2023-11-12 15:11:29 +0100
committerMike Pall <mike>2023-11-12 15:11:29 +0100
commit7c9671a043468b27c02301b6261a9e2a8eff787f (patch)
tree0b9d99bcc7b4319a5d9274c7b320a7e07a7dbdb2 /src
parent69bbbf77363ceb00ad2653a7729a5c9e8316e61f (diff)
parenta4c1640432a9d8a60624cdc8065b15078c228e36 (diff)
downloadluajit-7c9671a043468b27c02301b6261a9e2a8eff787f.tar.gz
luajit-7c9671a043468b27c02301b6261a9e2a8eff787f.tar.bz2
luajit-7c9671a043468b27c02301b6261a9e2a8eff787f.zip
Merge branch 'master' into v2.1
Diffstat (limited to 'src')
-rw-r--r--src/vm_arm.dasc7
-rw-r--r--src/vm_arm64.dasc8
-rw-r--r--src/vm_mips.dasc10
-rw-r--r--src/vm_mips64.dasc12
-rw-r--r--src/vm_ppc.dasc9
-rw-r--r--src/vm_x64.dasc6
-rw-r--r--src/vm_x86.dasc6
7 files changed, 55 insertions, 3 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
index 0d1ea95f..fc08c658 100644
--- a/src/vm_arm.dasc
+++ b/src/vm_arm.dasc
@@ -1195,8 +1195,11 @@ static void build_subroutines(BuildCtx *ctx)
1195 |//-- Base library: catch errors ---------------------------------------- 1195 |//-- Base library: catch errors ----------------------------------------
1196 | 1196 |
1197 |.ffunc pcall 1197 |.ffunc pcall
1198 | ldr RB, L->maxstack
1199 | add INS, BASE, NARGS8:RC
1198 | ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)] 1200 | ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)]
1199 | cmp NARGS8:RC, #8 1201 | cmp NARGS8:RC, #8
1202 | cmphs RB, INS
1200 | blo ->fff_fallback 1203 | blo ->fff_fallback
1201 | tst RA, #HOOK_ACTIVE // Remember active hook before pcall. 1204 | tst RA, #HOOK_ACTIVE // Remember active hook before pcall.
1202 | mov RB, BASE 1205 | mov RB, BASE
@@ -1207,7 +1210,11 @@ static void build_subroutines(BuildCtx *ctx)
1207 | b ->vm_call_dispatch 1210 | b ->vm_call_dispatch
1208 | 1211 |
1209 |.ffunc_2 xpcall 1212 |.ffunc_2 xpcall
1213 | ldr RB, L->maxstack
1214 | add INS, BASE, NARGS8:RC
1210 | ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)] 1215 | ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)]
1216 | cmp RB, INS
1217 | blo ->fff_fallback
1211 | checkfunc CARG4, ->fff_fallback // Traceback must be a function. 1218 | checkfunc CARG4, ->fff_fallback // Traceback must be a function.
1212 | mov RB, BASE 1219 | mov RB, BASE
1213 | strd CARG12, [BASE, #8] // Swap function and traceback. 1220 | strd CARG12, [BASE, #8] // Swap function and traceback.
diff --git a/src/vm_arm64.dasc b/src/vm_arm64.dasc
index 2aaa64cb..a6ce0507 100644
--- a/src/vm_arm64.dasc
+++ b/src/vm_arm64.dasc
@@ -1211,6 +1211,10 @@ static void build_subroutines(BuildCtx *ctx)
1211 |//-- Base library: catch errors ---------------------------------------- 1211 |//-- Base library: catch errors ----------------------------------------
1212 | 1212 |
1213 |.ffunc pcall 1213 |.ffunc pcall
1214 | ldr TMP1, L->maxstack
1215 | add TMP2, BASE, NARGS8:RC
1216 | cmp TMP1, TMP2
1217 | blo ->fff_fallback
1214 | cmp NARGS8:RC, #8 1218 | cmp NARGS8:RC, #8
1215 | ldrb TMP0w, GL->hookmask 1219 | ldrb TMP0w, GL->hookmask
1216 | blo ->fff_fallback 1220 | blo ->fff_fallback
@@ -1230,6 +1234,10 @@ static void build_subroutines(BuildCtx *ctx)
1230 | b ->vm_call_dispatch 1234 | b ->vm_call_dispatch
1231 | 1235 |
1232 |.ffunc xpcall 1236 |.ffunc xpcall
1237 | ldr TMP1, L->maxstack
1238 | add TMP2, BASE, NARGS8:RC
1239 | cmp TMP1, TMP2
1240 | blo ->fff_fallback
1233 | ldp CARG1, CARG2, [BASE] 1241 | ldp CARG1, CARG2, [BASE]
1234 | ldrb TMP0w, GL->hookmask 1242 | ldrb TMP0w, GL->hookmask
1235 | subs NARGS8:TMP1, NARGS8:RC, #16 1243 | subs NARGS8:TMP1, NARGS8:RC, #16
diff --git a/src/vm_mips.dasc b/src/vm_mips.dasc
index f276745c..8760a1f6 100644
--- a/src/vm_mips.dasc
+++ b/src/vm_mips.dasc
@@ -1374,9 +1374,13 @@ static void build_subroutines(BuildCtx *ctx)
1374 |//-- Base library: catch errors ---------------------------------------- 1374 |//-- Base library: catch errors ----------------------------------------
1375 | 1375 |
1376 |.ffunc pcall 1376 |.ffunc pcall
1377 | lw TMP1, L->maxstack
1378 | addu TMP2, BASE, NARGS8:RC
1377 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH) 1379 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
1378 | beqz NARGS8:RC, ->fff_fallback 1380 | beqz NARGS8:RC, ->fff_fallback
1379 | move TMP2, BASE 1381 |. sltu AT, TMP1, TMP2
1382 | bnez AT, ->fff_fallback
1383 |. move TMP2, BASE
1380 | addiu BASE, BASE, 8 1384 | addiu BASE, BASE, 8
1381 | // Remember active hook before pcall. 1385 | // Remember active hook before pcall.
1382 | srl TMP3, TMP3, HOOK_ACTIVE_SHIFT 1386 | srl TMP3, TMP3, HOOK_ACTIVE_SHIFT
@@ -1386,8 +1390,12 @@ static void build_subroutines(BuildCtx *ctx)
1386 |. addiu NARGS8:RC, NARGS8:RC, -8 1390 |. addiu NARGS8:RC, NARGS8:RC, -8
1387 | 1391 |
1388 |.ffunc xpcall 1392 |.ffunc xpcall
1393 | lw TMP1, L->maxstack
1394 | addu TMP2, BASE, NARGS8:RC
1389 | sltiu AT, NARGS8:RC, 16 1395 | sltiu AT, NARGS8:RC, 16
1390 | lw CARG4, 8+HI(BASE) 1396 | lw CARG4, 8+HI(BASE)
1397 | sltu TMP1, TMP1, TMP2
1398 | or AT, AT, TMP1
1391 | bnez AT, ->fff_fallback 1399 | bnez AT, ->fff_fallback
1392 |. lw CARG3, 8+LO(BASE) 1400 |. lw CARG3, 8+LO(BASE)
1393 | lw CARG1, LO(BASE) 1401 | lw CARG1, LO(BASE)
diff --git a/src/vm_mips64.dasc b/src/vm_mips64.dasc
index ef0d901d..a8d20413 100644
--- a/src/vm_mips64.dasc
+++ b/src/vm_mips64.dasc
@@ -1415,8 +1415,12 @@ static void build_subroutines(BuildCtx *ctx)
1415 |//-- Base library: catch errors ---------------------------------------- 1415 |//-- Base library: catch errors ----------------------------------------
1416 | 1416 |
1417 |.ffunc pcall 1417 |.ffunc pcall
1418 | ld TMP1, L->maxstack
1419 | daddu TMP2, BASE, NARGS8:RC
1420 | sltu AT, TMP1, TMP2
1421 | bnez AT, ->fff_fallback
1422 |. lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
1418 | daddiu NARGS8:RC, NARGS8:RC, -8 1423 | daddiu NARGS8:RC, NARGS8:RC, -8
1419 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
1420 | bltz NARGS8:RC, ->fff_fallback 1424 | bltz NARGS8:RC, ->fff_fallback
1421 |. move TMP2, BASE 1425 |. move TMP2, BASE
1422 | daddiu BASE, BASE, 16 1426 | daddiu BASE, BASE, 16
@@ -1437,8 +1441,12 @@ static void build_subroutines(BuildCtx *ctx)
1437 |. nop 1441 |. nop
1438 | 1442 |
1439 |.ffunc xpcall 1443 |.ffunc xpcall
1444 | ld TMP1, L->maxstack
1445 | daddu TMP2, BASE, NARGS8:RC
1446 | sltu AT, TMP1, TMP2
1447 | bnez AT, ->fff_fallback
1448 |. ld CARG1, 0(BASE)
1440 | daddiu NARGS8:TMP0, NARGS8:RC, -16 1449 | daddiu NARGS8:TMP0, NARGS8:RC, -16
1441 | ld CARG1, 0(BASE)
1442 | ld CARG2, 8(BASE) 1450 | ld CARG2, 8(BASE)
1443 | bltz NARGS8:TMP0, ->fff_fallback 1451 | bltz NARGS8:TMP0, ->fff_fallback
1444 |. lbu TMP1, DISPATCH_GL(hookmask)(DISPATCH) 1452 |. lbu TMP1, DISPATCH_GL(hookmask)(DISPATCH)
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc
index f2e5a08f..abcc03e5 100644
--- a/src/vm_ppc.dasc
+++ b/src/vm_ppc.dasc
@@ -1735,8 +1735,12 @@ static void build_subroutines(BuildCtx *ctx)
1735 |//-- Base library: catch errors ---------------------------------------- 1735 |//-- Base library: catch errors ----------------------------------------
1736 | 1736 |
1737 |.ffunc pcall 1737 |.ffunc pcall
1738 | lwz TMP1, L->maxstack
1739 | add TMP2, BASE, NARGS8:RC
1738 | cmplwi NARGS8:RC, 8 1740 | cmplwi NARGS8:RC, 8
1739 | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH) 1741 | lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH)
1742 | cmplw cr1, TMP1, TMP2
1743 | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
1740 | blt ->fff_fallback 1744 | blt ->fff_fallback
1741 | mr TMP2, BASE 1745 | mr TMP2, BASE
1742 | la BASE, 8(BASE) 1746 | la BASE, 8(BASE)
@@ -1747,14 +1751,19 @@ static void build_subroutines(BuildCtx *ctx)
1747 | b ->vm_call_dispatch 1751 | b ->vm_call_dispatch
1748 | 1752 |
1749 |.ffunc xpcall 1753 |.ffunc xpcall
1754 | lwz TMP1, L->maxstack
1755 | add TMP2, BASE, NARGS8:RC
1750 | cmplwi NARGS8:RC, 16 1756 | cmplwi NARGS8:RC, 16
1751 | lwz CARG3, 8(BASE) 1757 | lwz CARG3, 8(BASE)
1758 | cmplw cr1, TMP1, TMP2
1752 |.if FPU 1759 |.if FPU
1753 | lfd FARG2, 8(BASE) 1760 | lfd FARG2, 8(BASE)
1761 | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
1754 | lfd FARG1, 0(BASE) 1762 | lfd FARG1, 0(BASE)
1755 |.else 1763 |.else
1756 | lwz CARG1, 0(BASE) 1764 | lwz CARG1, 0(BASE)
1757 | lwz CARG2, 4(BASE) 1765 | lwz CARG2, 4(BASE)
1766 | cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
1758 | lwz CARG4, 12(BASE) 1767 | lwz CARG4, 12(BASE)
1759 |.endif 1768 |.endif
1760 | blt ->fff_fallback 1769 | blt ->fff_fallback
diff --git a/src/vm_x64.dasc b/src/vm_x64.dasc
index 3635ba28..8c46ea59 100644
--- a/src/vm_x64.dasc
+++ b/src/vm_x64.dasc
@@ -1463,6 +1463,9 @@ static void build_subroutines(BuildCtx *ctx)
1463 |//-- Base library: catch errors ---------------------------------------- 1463 |//-- Base library: catch errors ----------------------------------------
1464 | 1464 |
1465 |.ffunc_1 pcall 1465 |.ffunc_1 pcall
1466 | mov L:RB, SAVE_L
1467 | lea RA, [BASE+NARGS:RD*8]
1468 | cmp RA, L:RB->maxstack; ja ->fff_fallback
1466 | lea RA, [BASE+16] 1469 | lea RA, [BASE+16]
1467 | sub NARGS:RDd, 1 1470 | sub NARGS:RDd, 1
1468 | mov PCd, 16+FRAME_PCALL 1471 | mov PCd, 16+FRAME_PCALL
@@ -1481,6 +1484,9 @@ static void build_subroutines(BuildCtx *ctx)
1481 | jmp ->vm_call_dispatch 1484 | jmp ->vm_call_dispatch
1482 | 1485 |
1483 |.ffunc_2 xpcall 1486 |.ffunc_2 xpcall
1487 | mov L:RB, SAVE_L
1488 | lea RA, [BASE+NARGS:RD*8]
1489 | cmp RA, L:RB->maxstack; ja ->fff_fallback
1484 | mov LFUNC:RA, [BASE+8] 1490 | mov LFUNC:RA, [BASE+8]
1485 | checktp_nc LFUNC:RA, LJ_TFUNC, ->fff_fallback 1491 | checktp_nc LFUNC:RA, LJ_TFUNC, ->fff_fallback
1486 | mov LFUNC:RB, [BASE] // Swap function and traceback. 1492 | mov LFUNC:RB, [BASE] // Swap function and traceback.
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