diff options
author | Mike Pall <mike> | 2012-05-10 16:20:21 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-05-10 16:21:14 +0200 |
commit | 74205dc64b58cbe7dcc56b700d1798622e9e4063 (patch) | |
tree | 737ff2391554a78ebbb9e79299d0b1eb41751d44 /src | |
parent | 3fc5948abf1b2179e54f5d31bf694893b8413f1a (diff) | |
download | luajit-74205dc64b58cbe7dcc56b700d1798622e9e4063.tar.gz luajit-74205dc64b58cbe7dcc56b700d1798622e9e4063.tar.bz2 luajit-74205dc64b58cbe7dcc56b700d1798622e9e4063.zip |
ARM/PPC/MIPS: Fix tailcall from fast function (esp. tostring).
Diffstat (limited to 'src')
-rw-r--r-- | src/buildvm_arm.dasc | 1 | ||||
-rw-r--r-- | src/buildvm_arm.h | 849 | ||||
-rw-r--r-- | src/buildvm_mips.dasc | 1 | ||||
-rw-r--r-- | src/buildvm_mips.h | 409 | ||||
-rw-r--r-- | src/buildvm_ppc.dasc | 1 | ||||
-rw-r--r-- | src/buildvm_ppc.h | 809 |
6 files changed, 1041 insertions, 1029 deletions
diff --git a/src/buildvm_arm.dasc b/src/buildvm_arm.dasc index 3b1b8d7f..6f0e3878 100644 --- a/src/buildvm_arm.dasc +++ b/src/buildvm_arm.dasc | |||
@@ -1809,6 +1809,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1809 | | bic CARG2, PC, #FRAME_TYPEP | 1809 | | bic CARG2, PC, #FRAME_TYPEP |
1810 | | ldreq INS, [PC, #-4] | 1810 | | ldreq INS, [PC, #-4] |
1811 | | andeq CARG2, MASKR8, INS, lsr #5 // Conditional decode_RA8. | 1811 | | andeq CARG2, MASKR8, INS, lsr #5 // Conditional decode_RA8. |
1812 | | addeq CARG2, CARG2, #8 | ||
1812 | | sub RB, BASE, CARG2 | 1813 | | sub RB, BASE, CARG2 |
1813 | | b ->vm_call_dispatch // Resolve again for tailcall. | 1814 | | b ->vm_call_dispatch // Resolve again for tailcall. |
1814 | | | 1815 | | |
diff --git a/src/buildvm_arm.h b/src/buildvm_arm.h index ca94ed18..aec421dd 100644 --- a/src/buildvm_arm.h +++ b/src/buildvm_arm.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #define DASM_SECTION_CODE_OP 0 | 12 | #define DASM_SECTION_CODE_OP 0 |
13 | #define DASM_SECTION_CODE_SUB 1 | 13 | #define DASM_SECTION_CODE_SUB 1 |
14 | #define DASM_MAXSECTION 2 | 14 | #define DASM_MAXSECTION 2 |
15 | static const unsigned int build_actionlist[5777] = { | 15 | static const unsigned int build_actionlist[5784] = { |
16 | 0x00010001, | 16 | 0x00010001, |
17 | 0x00060014, | 17 | 0x00060014, |
18 | 0xe3160000, | 18 | 0xe3160000, |
@@ -1421,6 +1421,8 @@ static const unsigned int build_actionlist[5777] = { | |||
1421 | 0xea000000, | 1421 | 0xea000000, |
1422 | 0x00050049, | 1422 | 0x00050049, |
1423 | 0x0006000c, | 1423 | 0x0006000c, |
1424 | 0x2a000000, | ||
1425 | 0x00050049, | ||
1424 | 0xe1822000, | 1426 | 0xe1822000, |
1425 | 0xe1120fc1, | 1427 | 0xe1120fc1, |
1426 | 0x03a00000, | 1428 | 0x03a00000, |
@@ -1484,6 +1486,8 @@ static const unsigned int build_actionlist[5777] = { | |||
1484 | 0xea000000, | 1486 | 0xea000000, |
1485 | 0x00050049, | 1487 | 0x00050049, |
1486 | 0x0006000c, | 1488 | 0x0006000c, |
1489 | 0x2a000000, | ||
1490 | 0x00050049, | ||
1487 | 0xe1822000, | 1491 | 0xe1822000, |
1488 | 0xe1d22fc1, | 1492 | 0xe1d22fc1, |
1489 | 0x03a00000, | 1493 | 0x03a00000, |
@@ -1501,9 +1505,9 @@ static const unsigned int build_actionlist[5777] = { | |||
1501 | 0x4a000000, | 1505 | 0x4a000000, |
1502 | 0x0005000b, | 1506 | 0x0005000b, |
1503 | 0x0006000e, | 1507 | 0x0006000e, |
1508 | 0x00000000, | ||
1504 | 0xeb000000, | 1509 | 0xeb000000, |
1505 | 0x0005005c, | 1510 | 0x0005005c, |
1506 | 0x00000000, | ||
1507 | 0xea000000, | 1511 | 0xea000000, |
1508 | 0x00050049, | 1512 | 0x00050049, |
1509 | 0x00040007, | 1513 | 0x00040007, |
@@ -1563,11 +1567,11 @@ static const unsigned int build_actionlist[5777] = { | |||
1563 | 0xea000000, | 1567 | 0xea000000, |
1564 | 0x0005000f, | 1568 | 0x0005000f, |
1565 | 0x0006005f, | 1569 | 0x0006005f, |
1570 | 0x00000000, | ||
1566 | 0xe1c900d0, | 1571 | 0xe1c900d0, |
1567 | 0xe35b0008, | 1572 | 0xe35b0008, |
1568 | 0x3a000000, | 1573 | 0x3a000000, |
1569 | 0x00050046, | 1574 | 0x00050046, |
1570 | 0x00000000, | ||
1571 | 0xe3710000, | 1575 | 0xe3710000, |
1572 | 0x000a0000, | 1576 | 0x000a0000, |
1573 | 0x2a000000, | 1577 | 0x2a000000, |
@@ -2711,6 +2715,7 @@ static const unsigned int build_actionlist[5777] = { | |||
2711 | 0x0516e004, | 2715 | 0x0516e004, |
2712 | 0x00020000, | 2716 | 0x00020000, |
2713 | 0x000412ae, | 2717 | 0x000412ae, |
2718 | 0x02811008, | ||
2714 | 0xe049c001, | 2719 | 0xe049c001, |
2715 | 0xea000000, | 2720 | 0xea000000, |
2716 | 0x00050024, | 2721 | 0x00050024, |
@@ -2995,6 +3000,7 @@ static const unsigned int build_actionlist[5777] = { | |||
2995 | 0xe0c11002, | 3000 | 0xe0c11002, |
2996 | 0xe12fff1e, | 3001 | 0xe12fff1e, |
2997 | 0x0006000c, | 3002 | 0x0006000c, |
3003 | 0x212fff1e, | ||
2998 | 0xe1822000, | 3004 | 0xe1822000, |
2999 | 0xe1120fc1, | 3005 | 0xe1120fc1, |
3000 | 0xe3a00000, | 3006 | 0xe3a00000, |
@@ -3030,6 +3036,7 @@ static const unsigned int build_actionlist[5777] = { | |||
3030 | 0xe0c11002, | 3036 | 0xe0c11002, |
3031 | 0xe12fff1e, | 3037 | 0xe12fff1e, |
3032 | 0x0006000c, | 3038 | 0x0006000c, |
3039 | 0x212fff1e, | ||
3033 | 0xe1822000, | 3040 | 0xe1822000, |
3034 | 0xe1d22fc1, | 3041 | 0xe1d22fc1, |
3035 | 0xe3a00000, | 3042 | 0xe3a00000, |
@@ -6299,235 +6306,235 @@ static void build_subroutines(BuildCtx *ctx) | |||
6299 | dasm_put(Dst, 1246, Dt8(->upvalue[0].gcr), Dt1(->base), Dt1(->top), Dt1(->status), Dt1(->base), Dt1(->maxstack), Dt1(->cframe), LUA_YIELD, Dt1(->top), Dt1(->top), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), LUA_YIELD); | 6306 | dasm_put(Dst, 1246, Dt8(->upvalue[0].gcr), Dt1(->base), Dt1(->top), Dt1(->status), Dt1(->base), Dt1(->maxstack), Dt1(->cframe), LUA_YIELD, Dt1(->top), Dt1(->top), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), LUA_YIELD); |
6300 | dasm_put(Dst, 1302, Dt1(->base), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, Dt1(->cframe), Dt1(->base), CFRAME_RESUME, Dt1(->top)); | 6307 | dasm_put(Dst, 1302, Dt1(->base), Dt1(->maxstack), Dt1(->top), FRAME_TYPE, Dt1(->cframe), Dt1(->base), CFRAME_RESUME, Dt1(->top)); |
6301 | dasm_put(Dst, 1361, LUA_YIELD, Dt1(->cframe), Dt1(->status), -LJ_TISNUM, ~LJ_TISNUM, ~LJ_TISNUM); | 6308 | dasm_put(Dst, 1361, LUA_YIELD, Dt1(->cframe), Dt1(->status), -LJ_TISNUM, ~LJ_TISNUM, ~LJ_TISNUM); |
6302 | dasm_put(Dst, 1427, -LJ_TISNUM, ~LJ_TISNUM, ~LJ_TISNUM); | 6309 | dasm_put(Dst, 1429, -LJ_TISNUM, ~LJ_TISNUM, ~LJ_TISNUM); |
6303 | dasm_put(Dst, 1491, -LJ_TISNUM, (1+1)*8, FRAME_TYPE, ~LJ_TNIL); | 6310 | dasm_put(Dst, 1493, -LJ_TISNUM, (1+1)*8, FRAME_TYPE, ~LJ_TNIL); |
6304 | dasm_put(Dst, 1555, -LJ_TISNUM); | 6311 | dasm_put(Dst, 1555, -LJ_TISNUM); |
6305 | if (LJ_TARGET_OSX) { | 6312 | if (LJ_TARGET_OSX) { |
6306 | dasm_put(Dst, 1560); | 6313 | dasm_put(Dst, 1564); |
6307 | } | 6314 | } |
6308 | dasm_put(Dst, 1562); | 6315 | dasm_put(Dst, 1566); |
6309 | if (LJ_TARGET_OSX) { | 6316 | if (LJ_TARGET_OSX) { |
6310 | dasm_put(Dst, 1565); | 6317 | dasm_put(Dst, 1569); |
6311 | } | 6318 | } |
6312 | dasm_put(Dst, 1567, -LJ_TISNUM); | 6319 | dasm_put(Dst, 1571, -LJ_TISNUM); |
6313 | if (LJ_TARGET_OSX) { | 6320 | if (LJ_TARGET_OSX) { |
6314 | dasm_put(Dst, 1579); | 6321 | dasm_put(Dst, 1583); |
6315 | } | 6322 | } |
6316 | dasm_put(Dst, 1581); | 6323 | dasm_put(Dst, 1585); |
6317 | if (LJ_TARGET_OSX) { | 6324 | if (LJ_TARGET_OSX) { |
6318 | dasm_put(Dst, 1584); | 6325 | dasm_put(Dst, 1588); |
6319 | } | 6326 | } |
6320 | dasm_put(Dst, 1586, -LJ_TISNUM); | 6327 | dasm_put(Dst, 1590, -LJ_TISNUM); |
6321 | if (LJ_TARGET_OSX) { | 6328 | if (LJ_TARGET_OSX) { |
6322 | dasm_put(Dst, 1598); | 6329 | dasm_put(Dst, 1602); |
6323 | } | 6330 | } |
6324 | dasm_put(Dst, 1600); | 6331 | dasm_put(Dst, 1604); |
6325 | if (LJ_TARGET_OSX) { | 6332 | if (LJ_TARGET_OSX) { |
6326 | dasm_put(Dst, 1603); | 6333 | dasm_put(Dst, 1607); |
6327 | } | 6334 | } |
6328 | dasm_put(Dst, 1605, -LJ_TISNUM); | 6335 | dasm_put(Dst, 1609, -LJ_TISNUM); |
6329 | if (LJ_TARGET_OSX) { | 6336 | if (LJ_TARGET_OSX) { |
6330 | dasm_put(Dst, 1617); | 6337 | dasm_put(Dst, 1621); |
6331 | } | 6338 | } |
6332 | dasm_put(Dst, 1619); | 6339 | dasm_put(Dst, 1623); |
6333 | if (LJ_TARGET_OSX) { | 6340 | if (LJ_TARGET_OSX) { |
6334 | dasm_put(Dst, 1622); | 6341 | dasm_put(Dst, 1626); |
6335 | } | 6342 | } |
6336 | dasm_put(Dst, 1624, -LJ_TISNUM); | 6343 | dasm_put(Dst, 1628, -LJ_TISNUM); |
6337 | if (LJ_TARGET_OSX) { | 6344 | if (LJ_TARGET_OSX) { |
6338 | dasm_put(Dst, 1636); | 6345 | dasm_put(Dst, 1640); |
6339 | } | 6346 | } |
6340 | dasm_put(Dst, 1638); | 6347 | dasm_put(Dst, 1642); |
6341 | if (LJ_TARGET_OSX) { | 6348 | if (LJ_TARGET_OSX) { |
6342 | dasm_put(Dst, 1641); | 6349 | dasm_put(Dst, 1645); |
6343 | } | 6350 | } |
6344 | dasm_put(Dst, 1643, -LJ_TISNUM); | 6351 | dasm_put(Dst, 1647, -LJ_TISNUM); |
6345 | if (LJ_TARGET_OSX) { | 6352 | if (LJ_TARGET_OSX) { |
6346 | dasm_put(Dst, 1655); | 6353 | dasm_put(Dst, 1659); |
6347 | } | 6354 | } |
6348 | dasm_put(Dst, 1657); | 6355 | dasm_put(Dst, 1661); |
6349 | if (LJ_TARGET_OSX) { | 6356 | if (LJ_TARGET_OSX) { |
6350 | dasm_put(Dst, 1660); | 6357 | dasm_put(Dst, 1664); |
6351 | } | 6358 | } |
6352 | dasm_put(Dst, 1662, -LJ_TISNUM); | 6359 | dasm_put(Dst, 1666, -LJ_TISNUM); |
6353 | if (LJ_TARGET_OSX) { | 6360 | if (LJ_TARGET_OSX) { |
6354 | dasm_put(Dst, 1674); | 6361 | dasm_put(Dst, 1678); |
6355 | } | 6362 | } |
6356 | dasm_put(Dst, 1676); | 6363 | dasm_put(Dst, 1680); |
6357 | if (LJ_TARGET_OSX) { | 6364 | if (LJ_TARGET_OSX) { |
6358 | dasm_put(Dst, 1679); | 6365 | dasm_put(Dst, 1683); |
6359 | } | 6366 | } |
6360 | dasm_put(Dst, 1681, -LJ_TISNUM); | 6367 | dasm_put(Dst, 1685, -LJ_TISNUM); |
6361 | if (LJ_TARGET_OSX) { | 6368 | if (LJ_TARGET_OSX) { |
6362 | dasm_put(Dst, 1693); | 6369 | dasm_put(Dst, 1697); |
6363 | } | 6370 | } |
6364 | dasm_put(Dst, 1695); | 6371 | dasm_put(Dst, 1699); |
6365 | if (LJ_TARGET_OSX) { | 6372 | if (LJ_TARGET_OSX) { |
6366 | dasm_put(Dst, 1698); | 6373 | dasm_put(Dst, 1702); |
6367 | } | 6374 | } |
6368 | dasm_put(Dst, 1700, -LJ_TISNUM); | 6375 | dasm_put(Dst, 1704, -LJ_TISNUM); |
6369 | if (LJ_TARGET_OSX) { | 6376 | if (LJ_TARGET_OSX) { |
6370 | dasm_put(Dst, 1712); | 6377 | dasm_put(Dst, 1716); |
6371 | } | 6378 | } |
6372 | dasm_put(Dst, 1714); | 6379 | dasm_put(Dst, 1718); |
6373 | if (LJ_TARGET_OSX) { | 6380 | if (LJ_TARGET_OSX) { |
6374 | dasm_put(Dst, 1717); | 6381 | dasm_put(Dst, 1721); |
6375 | } | 6382 | } |
6376 | dasm_put(Dst, 1719, -LJ_TISNUM); | 6383 | dasm_put(Dst, 1723, -LJ_TISNUM); |
6377 | if (LJ_TARGET_OSX) { | 6384 | if (LJ_TARGET_OSX) { |
6378 | dasm_put(Dst, 1731); | 6385 | dasm_put(Dst, 1735); |
6379 | } | 6386 | } |
6380 | dasm_put(Dst, 1733); | 6387 | dasm_put(Dst, 1737); |
6381 | if (LJ_TARGET_OSX) { | 6388 | if (LJ_TARGET_OSX) { |
6382 | dasm_put(Dst, 1736); | 6389 | dasm_put(Dst, 1740); |
6383 | } | 6390 | } |
6384 | dasm_put(Dst, 1738, -LJ_TISNUM); | 6391 | dasm_put(Dst, 1742, -LJ_TISNUM); |
6385 | if (LJ_TARGET_OSX) { | 6392 | if (LJ_TARGET_OSX) { |
6386 | dasm_put(Dst, 1750); | 6393 | dasm_put(Dst, 1754); |
6387 | } | 6394 | } |
6388 | dasm_put(Dst, 1752); | 6395 | dasm_put(Dst, 1756); |
6389 | if (LJ_TARGET_OSX) { | 6396 | if (LJ_TARGET_OSX) { |
6390 | dasm_put(Dst, 1755); | 6397 | dasm_put(Dst, 1759); |
6391 | } | 6398 | } |
6392 | dasm_put(Dst, 1757, -LJ_TISNUM); | 6399 | dasm_put(Dst, 1761, -LJ_TISNUM); |
6393 | if (LJ_TARGET_OSX) { | 6400 | if (LJ_TARGET_OSX) { |
6394 | dasm_put(Dst, 1769); | 6401 | dasm_put(Dst, 1773); |
6395 | } | 6402 | } |
6396 | dasm_put(Dst, 1771); | 6403 | dasm_put(Dst, 1775); |
6397 | if (LJ_TARGET_OSX) { | 6404 | if (LJ_TARGET_OSX) { |
6398 | dasm_put(Dst, 1774); | 6405 | dasm_put(Dst, 1778); |
6399 | } | 6406 | } |
6400 | dasm_put(Dst, 1776, -LJ_TISNUM); | 6407 | dasm_put(Dst, 1780, -LJ_TISNUM); |
6401 | if (LJ_TARGET_OSX) { | 6408 | if (LJ_TARGET_OSX) { |
6402 | dasm_put(Dst, 1788); | 6409 | dasm_put(Dst, 1792); |
6403 | } | 6410 | } |
6404 | dasm_put(Dst, 1790); | 6411 | dasm_put(Dst, 1794); |
6405 | if (LJ_TARGET_OSX) { | 6412 | if (LJ_TARGET_OSX) { |
6406 | dasm_put(Dst, 1793); | 6413 | dasm_put(Dst, 1797); |
6407 | } | 6414 | } |
6408 | dasm_put(Dst, 1795, -LJ_TISNUM, -LJ_TISNUM); | 6415 | dasm_put(Dst, 1799, -LJ_TISNUM, -LJ_TISNUM); |
6409 | if (LJ_TARGET_OSX) { | 6416 | if (LJ_TARGET_OSX) { |
6410 | dasm_put(Dst, 1810); | 6417 | dasm_put(Dst, 1814); |
6411 | } | 6418 | } |
6412 | dasm_put(Dst, 1812); | 6419 | dasm_put(Dst, 1816); |
6413 | if (LJ_TARGET_OSX) { | 6420 | if (LJ_TARGET_OSX) { |
6414 | dasm_put(Dst, 1815); | 6421 | dasm_put(Dst, 1819); |
6415 | } | 6422 | } |
6416 | dasm_put(Dst, 1817, -LJ_TISNUM, -LJ_TISNUM); | 6423 | dasm_put(Dst, 1821, -LJ_TISNUM, -LJ_TISNUM); |
6417 | if (LJ_TARGET_OSX) { | 6424 | if (LJ_TARGET_OSX) { |
6418 | dasm_put(Dst, 1832); | 6425 | dasm_put(Dst, 1836); |
6419 | } | 6426 | } |
6420 | dasm_put(Dst, 1834); | 6427 | dasm_put(Dst, 1838); |
6421 | if (LJ_TARGET_OSX) { | 6428 | if (LJ_TARGET_OSX) { |
6422 | dasm_put(Dst, 1837); | 6429 | dasm_put(Dst, 1841); |
6423 | } | 6430 | } |
6424 | dasm_put(Dst, 1839, -LJ_TISNUM, -LJ_TISNUM); | 6431 | dasm_put(Dst, 1843, -LJ_TISNUM, -LJ_TISNUM); |
6425 | if (LJ_TARGET_OSX) { | 6432 | if (LJ_TARGET_OSX) { |
6426 | dasm_put(Dst, 1854); | 6433 | dasm_put(Dst, 1858); |
6427 | } | 6434 | } |
6428 | dasm_put(Dst, 1856); | 6435 | dasm_put(Dst, 1860); |
6429 | if (LJ_TARGET_OSX) { | 6436 | if (LJ_TARGET_OSX) { |
6430 | dasm_put(Dst, 1859); | 6437 | dasm_put(Dst, 1863); |
6431 | } | 6438 | } |
6432 | dasm_put(Dst, 1861, -LJ_TISNUM, Dt8(->upvalue[0]), -LJ_TISNUM, -LJ_TISNUM); | 6439 | dasm_put(Dst, 1865, -LJ_TISNUM, Dt8(->upvalue[0]), -LJ_TISNUM, -LJ_TISNUM); |
6433 | if (LJ_TARGET_OSX) { | 6440 | if (LJ_TARGET_OSX) { |
6434 | dasm_put(Dst, 1894); | 6441 | dasm_put(Dst, 1898); |
6435 | } | 6442 | } |
6436 | dasm_put(Dst, 1896); | 6443 | dasm_put(Dst, 1900); |
6437 | if (LJ_TARGET_OSX) { | 6444 | if (LJ_TARGET_OSX) { |
6438 | dasm_put(Dst, 1899); | 6445 | dasm_put(Dst, 1903); |
6439 | } | 6446 | } |
6440 | dasm_put(Dst, 1901, -LJ_TISNUM); | 6447 | dasm_put(Dst, 1905, -LJ_TISNUM); |
6441 | if (LJ_TARGET_OSX) { | 6448 | if (LJ_TARGET_OSX) { |
6442 | dasm_put(Dst, 1914); | 6449 | dasm_put(Dst, 1918); |
6443 | } | 6450 | } |
6444 | dasm_put(Dst, 1916); | 6451 | dasm_put(Dst, 1920); |
6445 | if (LJ_TARGET_OSX) { | 6452 | if (LJ_TARGET_OSX) { |
6446 | dasm_put(Dst, 1919); | 6453 | dasm_put(Dst, 1923); |
6447 | } | 6454 | } |
6448 | dasm_put(Dst, 1921, ~LJ_TISNUM, (2+1)*8, -LJ_TISNUM); | 6455 | dasm_put(Dst, 1925, ~LJ_TISNUM, (2+1)*8, -LJ_TISNUM); |
6449 | if (LJ_TARGET_OSX) { | 6456 | if (LJ_TARGET_OSX) { |
6450 | dasm_put(Dst, 1943); | 6457 | dasm_put(Dst, 1947); |
6451 | } | 6458 | } |
6452 | dasm_put(Dst, 1945); | 6459 | dasm_put(Dst, 1949); |
6453 | if (LJ_TARGET_OSX) { | 6460 | if (LJ_TARGET_OSX) { |
6454 | dasm_put(Dst, 1948); | 6461 | dasm_put(Dst, 1952); |
6455 | } | 6462 | } |
6456 | dasm_put(Dst, 1950, (2+1)*8, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); | 6463 | dasm_put(Dst, 1954, (2+1)*8, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); |
6457 | dasm_put(Dst, 2001, -LJ_TISNUM, -LJ_TISNUM); | 6464 | dasm_put(Dst, 2005, -LJ_TISNUM, -LJ_TISNUM); |
6458 | dasm_put(Dst, 2055, -LJ_TISNUM, -LJ_TSTR, Dt5(->len), ~LJ_TISNUM, -LJ_TSTR, Dt5(->len), Dt5([1])); | 6465 | dasm_put(Dst, 2059, -LJ_TISNUM, -LJ_TSTR, Dt5(->len), ~LJ_TISNUM, -LJ_TSTR, Dt5(->len), Dt5([1])); |
6459 | dasm_put(Dst, 2109, ~LJ_TISNUM, (0+1)*8, (1+1)*8, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TISNUM, Dt1(->base), Dt1(->base), ~LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | 6466 | dasm_put(Dst, 2113, ~LJ_TISNUM, (0+1)*8, (1+1)*8, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TISNUM, Dt1(->base), Dt1(->base), ~LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); |
6460 | dasm_put(Dst, 2168, -LJ_TISNUM, -LJ_TSTR, Dt5(->len), -LJ_TISNUM, sizeof(GCstr)-1, -DISPATCH_GL(strempty), ~LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, -LJ_TISNUM, Dt5(->len)); | 6467 | dasm_put(Dst, 2172, -LJ_TISNUM, -LJ_TSTR, Dt5(->len), -LJ_TISNUM, sizeof(GCstr)-1, -DISPATCH_GL(strempty), ~LJ_TSTR, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, -LJ_TISNUM, Dt5(->len)); |
6461 | dasm_put(Dst, 2230, DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr)); | 6468 | dasm_put(Dst, 2234, DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), Dt5([1]), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr)); |
6462 | dasm_put(Dst, 2283, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); | 6469 | dasm_put(Dst, 2287, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr), DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold)); |
6463 | dasm_put(Dst, 2343, -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr), -LJ_TTAB); | 6470 | dasm_put(Dst, 2347, -LJ_TSTR, Dt5(->len), DISPATCH_GL(tmpbuf.sz), DISPATCH_GL(tmpbuf.buf), sizeof(GCstr), -LJ_TTAB); |
6464 | if (LJ_TARGET_OSX) { | 6471 | if (LJ_TARGET_OSX) { |
6465 | dasm_put(Dst, 2381); | 6472 | dasm_put(Dst, 2385); |
6466 | } | 6473 | } |
6467 | dasm_put(Dst, 2383); | 6474 | dasm_put(Dst, 2387); |
6468 | if (LJ_TARGET_OSX) { | 6475 | if (LJ_TARGET_OSX) { |
6469 | dasm_put(Dst, 2386); | 6476 | dasm_put(Dst, 2390); |
6470 | } | 6477 | } |
6471 | dasm_put(Dst, 2388, ~LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); | 6478 | dasm_put(Dst, 2392, ~LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); |
6472 | dasm_put(Dst, 2459, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM); | 6479 | dasm_put(Dst, 2463, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM); |
6473 | dasm_put(Dst, 2519, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM); | 6480 | dasm_put(Dst, 2523, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM); |
6474 | dasm_put(Dst, 2575, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM); | 6481 | dasm_put(Dst, 2579, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM); |
6475 | dasm_put(Dst, 2632, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, Dt1(->maxstack), Dt1(->top), Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->base), Dt1(->top), Dt7(->field_pc), FRAME_TYPE, FRAME_TYPEP); | 6482 | dasm_put(Dst, 2636, -LJ_TISNUM, -LJ_TISNUM, ~LJ_TISNUM, Dt1(->maxstack), Dt1(->top), Dt8(->f), Dt1(->base), 8*LUA_MINSTACK, Dt1(->base), Dt1(->top), Dt7(->field_pc), FRAME_TYPE, FRAME_TYPEP); |
6476 | dasm_put(Dst, 2695, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base)); | 6483 | dasm_put(Dst, 2699, LUA_MINSTACK, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base)); |
6477 | #if LJ_HASJIT | 6484 | #if LJ_HASJIT |
6478 | dasm_put(Dst, 2729, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); | 6485 | dasm_put(Dst, 2734, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); |
6479 | #endif | 6486 | #endif |
6480 | dasm_put(Dst, 2749, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); | 6487 | dasm_put(Dst, 2754, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, Dt1(->base), Dt1(->base)); |
6481 | dasm_put(Dst, 2795, GG_DISP2STATIC); | 6488 | dasm_put(Dst, 2800, GG_DISP2STATIC); |
6482 | #if LJ_HASJIT | 6489 | #if LJ_HASJIT |
6483 | dasm_put(Dst, 2811, -GG_DISP2J, Dt7(->field_pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), Dt1(->top)); | 6490 | dasm_put(Dst, 2816, -GG_DISP2J, Dt7(->field_pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), Dt1(->top)); |
6484 | #endif | 6491 | #endif |
6485 | dasm_put(Dst, 2832); | 6492 | dasm_put(Dst, 2837); |
6486 | #if LJ_HASJIT | 6493 | #if LJ_HASJIT |
6487 | dasm_put(Dst, 2835); | 6494 | dasm_put(Dst, 2840); |
6488 | #endif | 6495 | #endif |
6489 | dasm_put(Dst, 2838); | 6496 | dasm_put(Dst, 2843); |
6490 | #if LJ_HASJIT | 6497 | #if LJ_HASJIT |
6491 | dasm_put(Dst, 2840); | 6498 | dasm_put(Dst, 2845); |
6492 | #endif | 6499 | #endif |
6493 | dasm_put(Dst, 2843, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); | 6500 | dasm_put(Dst, 2848, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); |
6494 | #if LJ_HASJIT | 6501 | #if LJ_HASJIT |
6495 | dasm_put(Dst, 2866, LJ_VMST_EXIT, DISPATCH_GL(vmstate), DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(exitno), DISPATCH_J(L), Dt1(->base), DISPATCH_GL(jit_L), -GG_DISP2J, Dt1(->cframe), Dt1(->base), ~CFRAME_RAWMASK); | 6502 | dasm_put(Dst, 2871, LJ_VMST_EXIT, DISPATCH_GL(vmstate), DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_J(exitno), DISPATCH_J(L), Dt1(->base), DISPATCH_GL(jit_L), -GG_DISP2J, Dt1(->cframe), Dt1(->base), ~CFRAME_RAWMASK); |
6496 | #endif | 6503 | #endif |
6497 | dasm_put(Dst, 2914); | 6504 | dasm_put(Dst, 2919); |
6498 | #if LJ_HASJIT | 6505 | #if LJ_HASJIT |
6499 | dasm_put(Dst, 2916, Dt7(->field_pc), DISPATCH_GL(jit_L), LJ_VMST_INTERP, PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF); | 6506 | dasm_put(Dst, 2921, Dt7(->field_pc), DISPATCH_GL(jit_L), LJ_VMST_INTERP, PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF); |
6500 | #endif | 6507 | #endif |
6501 | dasm_put(Dst, 2953); | 6508 | dasm_put(Dst, 2958); |
6502 | #if LJ_HASJIT | 6509 | #if LJ_HASJIT |
6503 | dasm_put(Dst, 3027); | 6510 | dasm_put(Dst, 3034); |
6504 | #endif | 6511 | #endif |
6505 | dasm_put(Dst, 3041); | 6512 | dasm_put(Dst, 3048); |
6506 | { | 6513 | { |
6507 | int i; | 6514 | int i; |
6508 | for (i = 31; i >= 0; i--) { | 6515 | for (i = 31; i >= 0; i--) { |
6509 | dasm_put(Dst, 3077, i, i); | 6516 | dasm_put(Dst, 3084, i, i); |
6510 | } | 6517 | } |
6511 | } | 6518 | } |
6512 | dasm_put(Dst, 3082); | 6519 | dasm_put(Dst, 3089); |
6513 | #if LJ_HASJIT | 6520 | #if LJ_HASJIT |
6514 | dasm_put(Dst, 3111); | 6521 | dasm_put(Dst, 3118); |
6515 | #else | 6522 | #else |
6516 | dasm_put(Dst, 3136); | 6523 | dasm_put(Dst, 3143); |
6517 | #endif | 6524 | #endif |
6518 | dasm_put(Dst, 3138); | 6525 | dasm_put(Dst, 3145); |
6519 | #if LJ_HASFFI | 6526 | #if LJ_HASFFI |
6520 | #define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) | 6527 | #define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) |
6521 | dasm_put(Dst, 3140, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.gpr[0]), DtE(->cb.gpr[2]), CFRAME_SIZE, DtE(->cb.stack), DtE(->cb.slot), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), Dt7(->field_pc)); | 6528 | dasm_put(Dst, 3147, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.gpr[0]), DtE(->cb.gpr[2]), CFRAME_SIZE, DtE(->cb.stack), DtE(->cb.slot), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate), Dt7(->field_pc)); |
6522 | #endif | 6529 | #endif |
6523 | dasm_put(Dst, 3183); | 6530 | dasm_put(Dst, 3190); |
6524 | #if LJ_HASFFI | 6531 | #if LJ_HASFFI |
6525 | dasm_put(Dst, 3185, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0])); | 6532 | dasm_put(Dst, 3192, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0])); |
6526 | #endif | 6533 | #endif |
6527 | dasm_put(Dst, 3202); | 6534 | dasm_put(Dst, 3209); |
6528 | #if LJ_HASFFI | 6535 | #if LJ_HASFFI |
6529 | #define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) | 6536 | #define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) |
6530 | dasm_put(Dst, 3204, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[0]), DtF(->gpr[1])); | 6537 | dasm_put(Dst, 3211, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->gpr[0]), DtF(->gpr[1])); |
6531 | #endif | 6538 | #endif |
6532 | } | 6539 | } |
6533 | 6540 | ||
@@ -6535,7 +6542,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
6535 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) | 6542 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) |
6536 | { | 6543 | { |
6537 | int vk = 0; | 6544 | int vk = 0; |
6538 | dasm_put(Dst, 3242, defop); | 6545 | dasm_put(Dst, 3249, defop); |
6539 | 6546 | ||
6540 | switch (op) { | 6547 | switch (op) { |
6541 | 6548 | ||
@@ -6544,174 +6551,174 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
6544 | /* Remember: all ops branch for a true comparison, fall through otherwise. */ | 6551 | /* Remember: all ops branch for a true comparison, fall through otherwise. */ |
6545 | 6552 | ||
6546 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: | 6553 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: |
6547 | dasm_put(Dst, 3244, -LJ_TISNUM, -LJ_TISNUM); | 6554 | dasm_put(Dst, 3251, -LJ_TISNUM, -LJ_TISNUM); |
6548 | if (op == BC_ISLT) { | 6555 | if (op == BC_ISLT) { |
6549 | dasm_put(Dst, 3260); | 6556 | dasm_put(Dst, 3267); |
6550 | } else if (op == BC_ISGE) { | 6557 | } else if (op == BC_ISGE) { |
6551 | dasm_put(Dst, 3262); | 6558 | dasm_put(Dst, 3269); |
6552 | } else if (op == BC_ISLE) { | 6559 | } else if (op == BC_ISLE) { |
6553 | dasm_put(Dst, 3264); | 6560 | dasm_put(Dst, 3271); |
6554 | } else { | 6561 | } else { |
6555 | dasm_put(Dst, 3266); | 6562 | dasm_put(Dst, 3273); |
6556 | } | 6563 | } |
6557 | dasm_put(Dst, 3268, -LJ_TISNUM); | 6564 | dasm_put(Dst, 3275, -LJ_TISNUM); |
6558 | if (op == BC_ISLT) { | 6565 | if (op == BC_ISLT) { |
6559 | dasm_put(Dst, 3304); | 6566 | dasm_put(Dst, 3311); |
6560 | } else if (op == BC_ISGE) { | 6567 | } else if (op == BC_ISGE) { |
6561 | dasm_put(Dst, 3306); | 6568 | dasm_put(Dst, 3313); |
6562 | } else if (op == BC_ISLE) { | 6569 | } else if (op == BC_ISLE) { |
6563 | dasm_put(Dst, 3308); | 6570 | dasm_put(Dst, 3315); |
6564 | } else { | 6571 | } else { |
6565 | dasm_put(Dst, 3310); | 6572 | dasm_put(Dst, 3317); |
6566 | } | 6573 | } |
6567 | dasm_put(Dst, 3312); | 6574 | dasm_put(Dst, 3319); |
6568 | break; | 6575 | break; |
6569 | 6576 | ||
6570 | case BC_ISEQV: case BC_ISNEV: | 6577 | case BC_ISEQV: case BC_ISNEV: |
6571 | vk = op == BC_ISEQV; | 6578 | vk = op == BC_ISEQV; |
6572 | dasm_put(Dst, 3315, -LJ_TISNUM, -LJ_TISNUM); | 6579 | dasm_put(Dst, 3322, -LJ_TISNUM, -LJ_TISNUM); |
6573 | if (vk) { | 6580 | if (vk) { |
6574 | dasm_put(Dst, 3326); | 6581 | dasm_put(Dst, 3333); |
6575 | } else { | 6582 | } else { |
6576 | dasm_put(Dst, 3329); | 6583 | dasm_put(Dst, 3336); |
6577 | } | 6584 | } |
6578 | if (LJ_HASFFI) { | 6585 | if (LJ_HASFFI) { |
6579 | dasm_put(Dst, 3332, -LJ_TCDATA, -LJ_TCDATA); | 6586 | dasm_put(Dst, 3339, -LJ_TCDATA, -LJ_TCDATA); |
6580 | } | 6587 | } |
6581 | dasm_put(Dst, 3339, -LJ_TISPRI); | 6588 | dasm_put(Dst, 3346, -LJ_TISPRI); |
6582 | if (vk) { | 6589 | if (vk) { |
6583 | dasm_put(Dst, 3348, -LJ_TISTABUD); | 6590 | dasm_put(Dst, 3355, -LJ_TISTABUD); |
6584 | } else { | 6591 | } else { |
6585 | dasm_put(Dst, 3365, -LJ_TISTABUD); | 6592 | dasm_put(Dst, 3372, -LJ_TISTABUD); |
6586 | } | 6593 | } |
6587 | dasm_put(Dst, 3372, Dt6(->metatable)); | 6594 | dasm_put(Dst, 3379, Dt6(->metatable)); |
6588 | if (vk) { | 6595 | if (vk) { |
6589 | dasm_put(Dst, 3376); | 6596 | dasm_put(Dst, 3383); |
6590 | } else { | 6597 | } else { |
6591 | dasm_put(Dst, 3379); | 6598 | dasm_put(Dst, 3386); |
6592 | } | 6599 | } |
6593 | dasm_put(Dst, 3382, Dt6(->nomm), 1-vk, 1<<MM_eq); | 6600 | dasm_put(Dst, 3389, Dt6(->nomm), 1-vk, 1<<MM_eq); |
6594 | if (vk) { | 6601 | if (vk) { |
6595 | dasm_put(Dst, 3392); | 6602 | dasm_put(Dst, 3399); |
6596 | } else { | 6603 | } else { |
6597 | dasm_put(Dst, 3395); | 6604 | dasm_put(Dst, 3402); |
6598 | } | 6605 | } |
6599 | break; | 6606 | break; |
6600 | 6607 | ||
6601 | case BC_ISEQS: case BC_ISNES: | 6608 | case BC_ISEQS: case BC_ISNES: |
6602 | vk = op == BC_ISEQS; | 6609 | vk = op == BC_ISEQS; |
6603 | dasm_put(Dst, 3405, -LJ_TSTR); | 6610 | dasm_put(Dst, 3412, -LJ_TSTR); |
6604 | if (LJ_HASFFI) { | 6611 | if (LJ_HASFFI) { |
6605 | dasm_put(Dst, 3414); | 6612 | dasm_put(Dst, 3421); |
6606 | } else { | 6613 | } else { |
6607 | dasm_put(Dst, 3418); | 6614 | dasm_put(Dst, 3425); |
6608 | } | 6615 | } |
6609 | if (vk) { | 6616 | if (vk) { |
6610 | dasm_put(Dst, 3420); | 6617 | dasm_put(Dst, 3427); |
6611 | } else { | 6618 | } else { |
6612 | dasm_put(Dst, 3423); | 6619 | dasm_put(Dst, 3430); |
6613 | } | 6620 | } |
6614 | dasm_put(Dst, 3426); | 6621 | dasm_put(Dst, 3433); |
6615 | if (LJ_HASFFI) { | 6622 | if (LJ_HASFFI) { |
6616 | dasm_put(Dst, 3433, -LJ_TCDATA); | 6623 | dasm_put(Dst, 3440, -LJ_TCDATA); |
6617 | } | 6624 | } |
6618 | break; | 6625 | break; |
6619 | 6626 | ||
6620 | case BC_ISEQN: case BC_ISNEN: | 6627 | case BC_ISEQN: case BC_ISNEN: |
6621 | vk = op == BC_ISEQN; | 6628 | vk = op == BC_ISEQN; |
6622 | dasm_put(Dst, 3441); | 6629 | dasm_put(Dst, 3448); |
6623 | if (vk) { | 6630 | if (vk) { |
6624 | dasm_put(Dst, 3448); | 6631 | dasm_put(Dst, 3455); |
6625 | } else { | 6632 | } else { |
6626 | dasm_put(Dst, 3450); | 6633 | dasm_put(Dst, 3457); |
6627 | } | 6634 | } |
6628 | dasm_put(Dst, 3452, -LJ_TISNUM, -LJ_TISNUM); | 6635 | dasm_put(Dst, 3459, -LJ_TISNUM, -LJ_TISNUM); |
6629 | if (vk) { | 6636 | if (vk) { |
6630 | dasm_put(Dst, 3462); | 6637 | dasm_put(Dst, 3469); |
6631 | } else { | 6638 | } else { |
6632 | dasm_put(Dst, 3465); | 6639 | dasm_put(Dst, 3472); |
6633 | } | 6640 | } |
6634 | dasm_put(Dst, 3468); | 6641 | dasm_put(Dst, 3475); |
6635 | if (LJ_HASFFI) { | 6642 | if (LJ_HASFFI) { |
6636 | dasm_put(Dst, 3477); | 6643 | dasm_put(Dst, 3484); |
6637 | } else { | 6644 | } else { |
6638 | if (!vk) { | 6645 | if (!vk) { |
6639 | dasm_put(Dst, 3480); | 6646 | dasm_put(Dst, 3487); |
6640 | } | 6647 | } |
6641 | dasm_put(Dst, 3482); | 6648 | dasm_put(Dst, 3489); |
6642 | } | 6649 | } |
6643 | dasm_put(Dst, 3485, -LJ_TISNUM); | 6650 | dasm_put(Dst, 3492, -LJ_TISNUM); |
6644 | if (vk) { | 6651 | if (vk) { |
6645 | dasm_put(Dst, 3501); | 6652 | dasm_put(Dst, 3508); |
6646 | } else { | 6653 | } else { |
6647 | dasm_put(Dst, 3503); | 6654 | dasm_put(Dst, 3510); |
6648 | } | 6655 | } |
6649 | dasm_put(Dst, 3505); | 6656 | dasm_put(Dst, 3512); |
6650 | if (LJ_HASFFI) { | 6657 | if (LJ_HASFFI) { |
6651 | dasm_put(Dst, 3508, -LJ_TCDATA); | 6658 | dasm_put(Dst, 3515, -LJ_TCDATA); |
6652 | } | 6659 | } |
6653 | break; | 6660 | break; |
6654 | 6661 | ||
6655 | case BC_ISEQP: case BC_ISNEP: | 6662 | case BC_ISEQP: case BC_ISNEP: |
6656 | vk = op == BC_ISEQP; | 6663 | vk = op == BC_ISEQP; |
6657 | dasm_put(Dst, 3516); | 6664 | dasm_put(Dst, 3523); |
6658 | if (LJ_HASFFI) { | 6665 | if (LJ_HASFFI) { |
6659 | dasm_put(Dst, 3522, -LJ_TCDATA); | 6666 | dasm_put(Dst, 3529, -LJ_TCDATA); |
6660 | } | 6667 | } |
6661 | dasm_put(Dst, 3527); | 6668 | dasm_put(Dst, 3534); |
6662 | if (vk) { | 6669 | if (vk) { |
6663 | dasm_put(Dst, 3529); | 6670 | dasm_put(Dst, 3536); |
6664 | } else { | 6671 | } else { |
6665 | dasm_put(Dst, 3531); | 6672 | dasm_put(Dst, 3538); |
6666 | } | 6673 | } |
6667 | dasm_put(Dst, 3533); | 6674 | dasm_put(Dst, 3540); |
6668 | break; | 6675 | break; |
6669 | 6676 | ||
6670 | /* -- Unary test and copy ops ------------------------------------------- */ | 6677 | /* -- Unary test and copy ops ------------------------------------------- */ |
6671 | 6678 | ||
6672 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: | 6679 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: |
6673 | dasm_put(Dst, 3540, -LJ_TTRUE); | 6680 | dasm_put(Dst, 3547, -LJ_TTRUE); |
6674 | if (op == BC_ISTC || op == BC_IST) { | 6681 | if (op == BC_ISTC || op == BC_IST) { |
6675 | dasm_put(Dst, 3548); | 6682 | dasm_put(Dst, 3555); |
6676 | if (op == BC_ISTC) { | 6683 | if (op == BC_ISTC) { |
6677 | dasm_put(Dst, 3550); | 6684 | dasm_put(Dst, 3557); |
6678 | } | 6685 | } |
6679 | } else { | 6686 | } else { |
6680 | dasm_put(Dst, 3552); | 6687 | dasm_put(Dst, 3559); |
6681 | if (op == BC_ISFC) { | 6688 | if (op == BC_ISFC) { |
6682 | dasm_put(Dst, 3554); | 6689 | dasm_put(Dst, 3561); |
6683 | } | 6690 | } |
6684 | } | 6691 | } |
6685 | dasm_put(Dst, 3556); | 6692 | dasm_put(Dst, 3563); |
6686 | break; | 6693 | break; |
6687 | 6694 | ||
6688 | /* -- Unary ops --------------------------------------------------------- */ | 6695 | /* -- Unary ops --------------------------------------------------------- */ |
6689 | 6696 | ||
6690 | case BC_MOV: | 6697 | case BC_MOV: |
6691 | dasm_put(Dst, 3563); | 6698 | dasm_put(Dst, 3570); |
6692 | break; | 6699 | break; |
6693 | case BC_NOT: | 6700 | case BC_NOT: |
6694 | dasm_put(Dst, 3573, -LJ_TTRUE, ~LJ_TFALSE, ~LJ_TTRUE); | 6701 | dasm_put(Dst, 3580, -LJ_TTRUE, ~LJ_TFALSE, ~LJ_TTRUE); |
6695 | break; | 6702 | break; |
6696 | case BC_UNM: | 6703 | case BC_UNM: |
6697 | dasm_put(Dst, 3590, -LJ_TISNUM); | 6704 | dasm_put(Dst, 3597, -LJ_TISNUM); |
6698 | break; | 6705 | break; |
6699 | case BC_LEN: | 6706 | case BC_LEN: |
6700 | dasm_put(Dst, 3616, -LJ_TSTR, Dt5(->len), ~LJ_TISNUM, -LJ_TTAB); | 6707 | dasm_put(Dst, 3623, -LJ_TSTR, Dt5(->len), ~LJ_TISNUM, -LJ_TTAB); |
6701 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 6708 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
6702 | dasm_put(Dst, 3640, Dt6(->metatable)); | 6709 | dasm_put(Dst, 3647, Dt6(->metatable)); |
6703 | #endif | 6710 | #endif |
6704 | dasm_put(Dst, 3647); | 6711 | dasm_put(Dst, 3654); |
6705 | if (LJ_TARGET_OSX) { | 6712 | if (LJ_TARGET_OSX) { |
6706 | dasm_put(Dst, 3649); | 6713 | dasm_put(Dst, 3656); |
6707 | } | 6714 | } |
6708 | dasm_put(Dst, 3651); | 6715 | dasm_put(Dst, 3658); |
6709 | if (LJ_TARGET_OSX) { | 6716 | if (LJ_TARGET_OSX) { |
6710 | dasm_put(Dst, 3654); | 6717 | dasm_put(Dst, 3661); |
6711 | } | 6718 | } |
6712 | dasm_put(Dst, 3656); | 6719 | dasm_put(Dst, 3663); |
6713 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 6720 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
6714 | dasm_put(Dst, 3659, Dt6(->nomm), 1<<MM_len); | 6721 | dasm_put(Dst, 3666, Dt6(->nomm), 1<<MM_len); |
6715 | #endif | 6722 | #endif |
6716 | break; | 6723 | break; |
6717 | 6724 | ||
@@ -6719,403 +6726,403 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
6719 | 6726 | ||
6720 | 6727 | ||
6721 | case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: | 6728 | case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: |
6722 | dasm_put(Dst, 3669); | 6729 | dasm_put(Dst, 3676); |
6723 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6730 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6724 | switch (vk) { | 6731 | switch (vk) { |
6725 | case 0: | 6732 | case 0: |
6726 | dasm_put(Dst, 3672); | 6733 | dasm_put(Dst, 3679); |
6727 | break; | 6734 | break; |
6728 | case 1: | 6735 | case 1: |
6729 | dasm_put(Dst, 3675); | 6736 | dasm_put(Dst, 3682); |
6730 | break; | 6737 | break; |
6731 | default: | 6738 | default: |
6732 | dasm_put(Dst, 3678); | 6739 | dasm_put(Dst, 3685); |
6733 | break; | 6740 | break; |
6734 | } | 6741 | } |
6735 | dasm_put(Dst, 3681); | 6742 | dasm_put(Dst, 3688); |
6736 | if (vk == 1) { | 6743 | if (vk == 1) { |
6737 | dasm_put(Dst, 3683, -LJ_TISNUM, -LJ_TISNUM); | 6744 | dasm_put(Dst, 3690, -LJ_TISNUM, -LJ_TISNUM); |
6738 | } else { | 6745 | } else { |
6739 | dasm_put(Dst, 3688, -LJ_TISNUM, -LJ_TISNUM); | 6746 | dasm_put(Dst, 3695, -LJ_TISNUM, -LJ_TISNUM); |
6740 | } | 6747 | } |
6741 | dasm_put(Dst, 3693); | 6748 | dasm_put(Dst, 3700); |
6742 | switch (vk) { | 6749 | switch (vk) { |
6743 | case 0: | 6750 | case 0: |
6744 | dasm_put(Dst, 3697); | 6751 | dasm_put(Dst, 3704); |
6745 | break; | 6752 | break; |
6746 | case 1: | 6753 | case 1: |
6747 | dasm_put(Dst, 3700); | 6754 | dasm_put(Dst, 3707); |
6748 | break; | 6755 | break; |
6749 | default: | 6756 | default: |
6750 | dasm_put(Dst, 3703); | 6757 | dasm_put(Dst, 3710); |
6751 | break; | 6758 | break; |
6752 | } | 6759 | } |
6753 | dasm_put(Dst, 3706); | 6760 | dasm_put(Dst, 3713); |
6754 | switch (vk) { | 6761 | switch (vk) { |
6755 | case 0: | 6762 | case 0: |
6756 | if (vk == 1) { | 6763 | if (vk == 1) { |
6757 | dasm_put(Dst, 3715, -LJ_TISNUM, -LJ_TISNUM); | 6764 | dasm_put(Dst, 3722, -LJ_TISNUM, -LJ_TISNUM); |
6758 | } else { | 6765 | } else { |
6759 | dasm_put(Dst, 3720, -LJ_TISNUM, -LJ_TISNUM); | 6766 | dasm_put(Dst, 3727, -LJ_TISNUM, -LJ_TISNUM); |
6760 | } | 6767 | } |
6761 | dasm_put(Dst, 3725); | 6768 | dasm_put(Dst, 3732); |
6762 | break; | 6769 | break; |
6763 | case 1: | 6770 | case 1: |
6764 | if (vk == 1) { | 6771 | if (vk == 1) { |
6765 | dasm_put(Dst, 3728, -LJ_TISNUM, -LJ_TISNUM); | 6772 | dasm_put(Dst, 3735, -LJ_TISNUM, -LJ_TISNUM); |
6766 | } else { | 6773 | } else { |
6767 | dasm_put(Dst, 3733, -LJ_TISNUM, -LJ_TISNUM); | 6774 | dasm_put(Dst, 3740, -LJ_TISNUM, -LJ_TISNUM); |
6768 | } | 6775 | } |
6769 | dasm_put(Dst, 3738); | 6776 | dasm_put(Dst, 3745); |
6770 | break; | 6777 | break; |
6771 | default: | 6778 | default: |
6772 | if (vk == 1) { | 6779 | if (vk == 1) { |
6773 | dasm_put(Dst, 3741, -LJ_TISNUM, -LJ_TISNUM); | 6780 | dasm_put(Dst, 3748, -LJ_TISNUM, -LJ_TISNUM); |
6774 | } else { | 6781 | } else { |
6775 | dasm_put(Dst, 3746, -LJ_TISNUM, -LJ_TISNUM); | 6782 | dasm_put(Dst, 3753, -LJ_TISNUM, -LJ_TISNUM); |
6776 | } | 6783 | } |
6777 | dasm_put(Dst, 3751); | 6784 | dasm_put(Dst, 3758); |
6778 | break; | 6785 | break; |
6779 | } | 6786 | } |
6780 | dasm_put(Dst, 3754); | 6787 | dasm_put(Dst, 3761); |
6781 | break; | 6788 | break; |
6782 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: | 6789 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: |
6783 | dasm_put(Dst, 3760); | 6790 | dasm_put(Dst, 3767); |
6784 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6791 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6785 | switch (vk) { | 6792 | switch (vk) { |
6786 | case 0: | 6793 | case 0: |
6787 | dasm_put(Dst, 3763); | 6794 | dasm_put(Dst, 3770); |
6788 | break; | 6795 | break; |
6789 | case 1: | 6796 | case 1: |
6790 | dasm_put(Dst, 3766); | 6797 | dasm_put(Dst, 3773); |
6791 | break; | 6798 | break; |
6792 | default: | 6799 | default: |
6793 | dasm_put(Dst, 3769); | 6800 | dasm_put(Dst, 3776); |
6794 | break; | 6801 | break; |
6795 | } | 6802 | } |
6796 | dasm_put(Dst, 3772); | 6803 | dasm_put(Dst, 3779); |
6797 | if (vk == 1) { | 6804 | if (vk == 1) { |
6798 | dasm_put(Dst, 3774, -LJ_TISNUM, -LJ_TISNUM); | 6805 | dasm_put(Dst, 3781, -LJ_TISNUM, -LJ_TISNUM); |
6799 | } else { | 6806 | } else { |
6800 | dasm_put(Dst, 3779, -LJ_TISNUM, -LJ_TISNUM); | 6807 | dasm_put(Dst, 3786, -LJ_TISNUM, -LJ_TISNUM); |
6801 | } | 6808 | } |
6802 | dasm_put(Dst, 3784); | 6809 | dasm_put(Dst, 3791); |
6803 | switch (vk) { | 6810 | switch (vk) { |
6804 | case 0: | 6811 | case 0: |
6805 | dasm_put(Dst, 3788); | 6812 | dasm_put(Dst, 3795); |
6806 | break; | 6813 | break; |
6807 | case 1: | 6814 | case 1: |
6808 | dasm_put(Dst, 3791); | 6815 | dasm_put(Dst, 3798); |
6809 | break; | 6816 | break; |
6810 | default: | 6817 | default: |
6811 | dasm_put(Dst, 3794); | 6818 | dasm_put(Dst, 3801); |
6812 | break; | 6819 | break; |
6813 | } | 6820 | } |
6814 | dasm_put(Dst, 3797); | 6821 | dasm_put(Dst, 3804); |
6815 | switch (vk) { | 6822 | switch (vk) { |
6816 | case 0: | 6823 | case 0: |
6817 | if (vk == 1) { | 6824 | if (vk == 1) { |
6818 | dasm_put(Dst, 3806, -LJ_TISNUM, -LJ_TISNUM); | 6825 | dasm_put(Dst, 3813, -LJ_TISNUM, -LJ_TISNUM); |
6819 | } else { | 6826 | } else { |
6820 | dasm_put(Dst, 3811, -LJ_TISNUM, -LJ_TISNUM); | 6827 | dasm_put(Dst, 3818, -LJ_TISNUM, -LJ_TISNUM); |
6821 | } | 6828 | } |
6822 | dasm_put(Dst, 3816); | 6829 | dasm_put(Dst, 3823); |
6823 | break; | 6830 | break; |
6824 | case 1: | 6831 | case 1: |
6825 | if (vk == 1) { | 6832 | if (vk == 1) { |
6826 | dasm_put(Dst, 3819, -LJ_TISNUM, -LJ_TISNUM); | 6833 | dasm_put(Dst, 3826, -LJ_TISNUM, -LJ_TISNUM); |
6827 | } else { | 6834 | } else { |
6828 | dasm_put(Dst, 3824, -LJ_TISNUM, -LJ_TISNUM); | 6835 | dasm_put(Dst, 3831, -LJ_TISNUM, -LJ_TISNUM); |
6829 | } | 6836 | } |
6830 | dasm_put(Dst, 3829); | 6837 | dasm_put(Dst, 3836); |
6831 | break; | 6838 | break; |
6832 | default: | 6839 | default: |
6833 | if (vk == 1) { | 6840 | if (vk == 1) { |
6834 | dasm_put(Dst, 3832, -LJ_TISNUM, -LJ_TISNUM); | 6841 | dasm_put(Dst, 3839, -LJ_TISNUM, -LJ_TISNUM); |
6835 | } else { | 6842 | } else { |
6836 | dasm_put(Dst, 3837, -LJ_TISNUM, -LJ_TISNUM); | 6843 | dasm_put(Dst, 3844, -LJ_TISNUM, -LJ_TISNUM); |
6837 | } | 6844 | } |
6838 | dasm_put(Dst, 3842); | 6845 | dasm_put(Dst, 3849); |
6839 | break; | 6846 | break; |
6840 | } | 6847 | } |
6841 | dasm_put(Dst, 3845); | 6848 | dasm_put(Dst, 3852); |
6842 | break; | 6849 | break; |
6843 | case BC_MULVN: case BC_MULNV: case BC_MULVV: | 6850 | case BC_MULVN: case BC_MULNV: case BC_MULVV: |
6844 | dasm_put(Dst, 3851); | 6851 | dasm_put(Dst, 3858); |
6845 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6852 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6846 | switch (vk) { | 6853 | switch (vk) { |
6847 | case 0: | 6854 | case 0: |
6848 | dasm_put(Dst, 3854); | 6855 | dasm_put(Dst, 3861); |
6849 | break; | 6856 | break; |
6850 | case 1: | 6857 | case 1: |
6851 | dasm_put(Dst, 3857); | 6858 | dasm_put(Dst, 3864); |
6852 | break; | 6859 | break; |
6853 | default: | 6860 | default: |
6854 | dasm_put(Dst, 3860); | 6861 | dasm_put(Dst, 3867); |
6855 | break; | 6862 | break; |
6856 | } | 6863 | } |
6857 | dasm_put(Dst, 3863); | 6864 | dasm_put(Dst, 3870); |
6858 | if (vk == 1) { | 6865 | if (vk == 1) { |
6859 | dasm_put(Dst, 3865, -LJ_TISNUM, -LJ_TISNUM); | 6866 | dasm_put(Dst, 3872, -LJ_TISNUM, -LJ_TISNUM); |
6860 | } else { | 6867 | } else { |
6861 | dasm_put(Dst, 3870, -LJ_TISNUM, -LJ_TISNUM); | 6868 | dasm_put(Dst, 3877, -LJ_TISNUM, -LJ_TISNUM); |
6862 | } | 6869 | } |
6863 | dasm_put(Dst, 3875); | 6870 | dasm_put(Dst, 3882); |
6864 | switch (vk) { | 6871 | switch (vk) { |
6865 | case 0: | 6872 | case 0: |
6866 | dasm_put(Dst, 3880); | 6873 | dasm_put(Dst, 3887); |
6867 | break; | 6874 | break; |
6868 | case 1: | 6875 | case 1: |
6869 | dasm_put(Dst, 3883); | 6876 | dasm_put(Dst, 3890); |
6870 | break; | 6877 | break; |
6871 | default: | 6878 | default: |
6872 | dasm_put(Dst, 3886); | 6879 | dasm_put(Dst, 3893); |
6873 | break; | 6880 | break; |
6874 | } | 6881 | } |
6875 | dasm_put(Dst, 3889); | 6882 | dasm_put(Dst, 3896); |
6876 | switch (vk) { | 6883 | switch (vk) { |
6877 | case 0: | 6884 | case 0: |
6878 | if (vk == 1) { | 6885 | if (vk == 1) { |
6879 | dasm_put(Dst, 3898, -LJ_TISNUM, -LJ_TISNUM); | 6886 | dasm_put(Dst, 3905, -LJ_TISNUM, -LJ_TISNUM); |
6880 | } else { | 6887 | } else { |
6881 | dasm_put(Dst, 3903, -LJ_TISNUM, -LJ_TISNUM); | 6888 | dasm_put(Dst, 3910, -LJ_TISNUM, -LJ_TISNUM); |
6882 | } | 6889 | } |
6883 | dasm_put(Dst, 3908); | 6890 | dasm_put(Dst, 3915); |
6884 | break; | 6891 | break; |
6885 | case 1: | 6892 | case 1: |
6886 | if (vk == 1) { | 6893 | if (vk == 1) { |
6887 | dasm_put(Dst, 3911, -LJ_TISNUM, -LJ_TISNUM); | 6894 | dasm_put(Dst, 3918, -LJ_TISNUM, -LJ_TISNUM); |
6888 | } else { | 6895 | } else { |
6889 | dasm_put(Dst, 3916, -LJ_TISNUM, -LJ_TISNUM); | 6896 | dasm_put(Dst, 3923, -LJ_TISNUM, -LJ_TISNUM); |
6890 | } | 6897 | } |
6891 | dasm_put(Dst, 3921); | 6898 | dasm_put(Dst, 3928); |
6892 | break; | 6899 | break; |
6893 | default: | 6900 | default: |
6894 | if (vk == 1) { | 6901 | if (vk == 1) { |
6895 | dasm_put(Dst, 3924, -LJ_TISNUM, -LJ_TISNUM); | 6902 | dasm_put(Dst, 3931, -LJ_TISNUM, -LJ_TISNUM); |
6896 | } else { | 6903 | } else { |
6897 | dasm_put(Dst, 3929, -LJ_TISNUM, -LJ_TISNUM); | 6904 | dasm_put(Dst, 3936, -LJ_TISNUM, -LJ_TISNUM); |
6898 | } | 6905 | } |
6899 | dasm_put(Dst, 3934); | 6906 | dasm_put(Dst, 3941); |
6900 | break; | 6907 | break; |
6901 | } | 6908 | } |
6902 | dasm_put(Dst, 3937); | 6909 | dasm_put(Dst, 3944); |
6903 | break; | 6910 | break; |
6904 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: | 6911 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: |
6905 | dasm_put(Dst, 3943); | 6912 | dasm_put(Dst, 3950); |
6906 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6913 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6907 | switch (vk) { | 6914 | switch (vk) { |
6908 | case 0: | 6915 | case 0: |
6909 | dasm_put(Dst, 3946); | 6916 | dasm_put(Dst, 3953); |
6910 | break; | 6917 | break; |
6911 | case 1: | 6918 | case 1: |
6912 | dasm_put(Dst, 3949); | 6919 | dasm_put(Dst, 3956); |
6913 | break; | 6920 | break; |
6914 | default: | 6921 | default: |
6915 | dasm_put(Dst, 3952); | 6922 | dasm_put(Dst, 3959); |
6916 | break; | 6923 | break; |
6917 | } | 6924 | } |
6918 | switch (vk) { | 6925 | switch (vk) { |
6919 | case 0: | 6926 | case 0: |
6920 | if (vk == 1) { | 6927 | if (vk == 1) { |
6921 | dasm_put(Dst, 3955, -LJ_TISNUM, -LJ_TISNUM); | 6928 | dasm_put(Dst, 3962, -LJ_TISNUM, -LJ_TISNUM); |
6922 | } else { | 6929 | } else { |
6923 | dasm_put(Dst, 3960, -LJ_TISNUM, -LJ_TISNUM); | 6930 | dasm_put(Dst, 3967, -LJ_TISNUM, -LJ_TISNUM); |
6924 | } | 6931 | } |
6925 | dasm_put(Dst, 3965); | 6932 | dasm_put(Dst, 3972); |
6926 | break; | 6933 | break; |
6927 | case 1: | 6934 | case 1: |
6928 | if (vk == 1) { | 6935 | if (vk == 1) { |
6929 | dasm_put(Dst, 3968, -LJ_TISNUM, -LJ_TISNUM); | 6936 | dasm_put(Dst, 3975, -LJ_TISNUM, -LJ_TISNUM); |
6930 | } else { | 6937 | } else { |
6931 | dasm_put(Dst, 3973, -LJ_TISNUM, -LJ_TISNUM); | 6938 | dasm_put(Dst, 3980, -LJ_TISNUM, -LJ_TISNUM); |
6932 | } | 6939 | } |
6933 | dasm_put(Dst, 3978); | 6940 | dasm_put(Dst, 3985); |
6934 | break; | 6941 | break; |
6935 | default: | 6942 | default: |
6936 | if (vk == 1) { | 6943 | if (vk == 1) { |
6937 | dasm_put(Dst, 3981, -LJ_TISNUM, -LJ_TISNUM); | 6944 | dasm_put(Dst, 3988, -LJ_TISNUM, -LJ_TISNUM); |
6938 | } else { | 6945 | } else { |
6939 | dasm_put(Dst, 3986, -LJ_TISNUM, -LJ_TISNUM); | 6946 | dasm_put(Dst, 3993, -LJ_TISNUM, -LJ_TISNUM); |
6940 | } | 6947 | } |
6941 | dasm_put(Dst, 3991); | 6948 | dasm_put(Dst, 3998); |
6942 | break; | 6949 | break; |
6943 | } | 6950 | } |
6944 | dasm_put(Dst, 3994); | 6951 | dasm_put(Dst, 4001); |
6945 | break; | 6952 | break; |
6946 | case BC_MODVN: case BC_MODNV: case BC_MODVV: | 6953 | case BC_MODVN: case BC_MODNV: case BC_MODVV: |
6947 | dasm_put(Dst, 4004); | 6954 | dasm_put(Dst, 4011); |
6948 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6955 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6949 | switch (vk) { | 6956 | switch (vk) { |
6950 | case 0: | 6957 | case 0: |
6951 | dasm_put(Dst, 4007); | 6958 | dasm_put(Dst, 4014); |
6952 | break; | 6959 | break; |
6953 | case 1: | 6960 | case 1: |
6954 | dasm_put(Dst, 4010); | 6961 | dasm_put(Dst, 4017); |
6955 | break; | 6962 | break; |
6956 | default: | 6963 | default: |
6957 | dasm_put(Dst, 4013); | 6964 | dasm_put(Dst, 4020); |
6958 | break; | 6965 | break; |
6959 | } | 6966 | } |
6960 | if (vk == 1) { | 6967 | if (vk == 1) { |
6961 | dasm_put(Dst, 4016, -LJ_TISNUM, -LJ_TISNUM); | 6968 | dasm_put(Dst, 4023, -LJ_TISNUM, -LJ_TISNUM); |
6962 | } else { | 6969 | } else { |
6963 | dasm_put(Dst, 4021, -LJ_TISNUM, -LJ_TISNUM); | 6970 | dasm_put(Dst, 4028, -LJ_TISNUM, -LJ_TISNUM); |
6964 | } | 6971 | } |
6965 | dasm_put(Dst, 4026); | 6972 | dasm_put(Dst, 4033); |
6966 | switch (vk) { | 6973 | switch (vk) { |
6967 | case 0: | 6974 | case 0: |
6968 | dasm_put(Dst, 4030); | 6975 | dasm_put(Dst, 4037); |
6969 | break; | 6976 | break; |
6970 | case 1: | 6977 | case 1: |
6971 | dasm_put(Dst, 4033); | 6978 | dasm_put(Dst, 4040); |
6972 | break; | 6979 | break; |
6973 | default: | 6980 | default: |
6974 | dasm_put(Dst, 4036); | 6981 | dasm_put(Dst, 4043); |
6975 | break; | 6982 | break; |
6976 | } | 6983 | } |
6977 | dasm_put(Dst, 4039, ~LJ_TISNUM); | 6984 | dasm_put(Dst, 4046, ~LJ_TISNUM); |
6978 | switch (vk) { | 6985 | switch (vk) { |
6979 | case 0: | 6986 | case 0: |
6980 | if (vk == 1) { | 6987 | if (vk == 1) { |
6981 | dasm_put(Dst, 4053, -LJ_TISNUM, -LJ_TISNUM); | 6988 | dasm_put(Dst, 4060, -LJ_TISNUM, -LJ_TISNUM); |
6982 | } else { | 6989 | } else { |
6983 | dasm_put(Dst, 4058, -LJ_TISNUM, -LJ_TISNUM); | 6990 | dasm_put(Dst, 4065, -LJ_TISNUM, -LJ_TISNUM); |
6984 | } | 6991 | } |
6985 | dasm_put(Dst, 4063); | 6992 | dasm_put(Dst, 4070); |
6986 | break; | 6993 | break; |
6987 | case 1: | 6994 | case 1: |
6988 | if (vk == 1) { | 6995 | if (vk == 1) { |
6989 | dasm_put(Dst, 4066, -LJ_TISNUM, -LJ_TISNUM); | 6996 | dasm_put(Dst, 4073, -LJ_TISNUM, -LJ_TISNUM); |
6990 | } else { | 6997 | } else { |
6991 | dasm_put(Dst, 4071, -LJ_TISNUM, -LJ_TISNUM); | 6998 | dasm_put(Dst, 4078, -LJ_TISNUM, -LJ_TISNUM); |
6992 | } | 6999 | } |
6993 | dasm_put(Dst, 4076); | 7000 | dasm_put(Dst, 4083); |
6994 | break; | 7001 | break; |
6995 | default: | 7002 | default: |
6996 | if (vk == 1) { | 7003 | if (vk == 1) { |
6997 | dasm_put(Dst, 4079, -LJ_TISNUM, -LJ_TISNUM); | 7004 | dasm_put(Dst, 4086, -LJ_TISNUM, -LJ_TISNUM); |
6998 | } else { | 7005 | } else { |
6999 | dasm_put(Dst, 4084, -LJ_TISNUM, -LJ_TISNUM); | 7006 | dasm_put(Dst, 4091, -LJ_TISNUM, -LJ_TISNUM); |
7000 | } | 7007 | } |
7001 | dasm_put(Dst, 4089); | 7008 | dasm_put(Dst, 4096); |
7002 | break; | 7009 | break; |
7003 | } | 7010 | } |
7004 | dasm_put(Dst, 4092); | 7011 | dasm_put(Dst, 4099); |
7005 | break; | 7012 | break; |
7006 | case BC_POW: | 7013 | case BC_POW: |
7007 | dasm_put(Dst, 4097); | 7014 | dasm_put(Dst, 4104); |
7008 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 7015 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
7009 | switch (vk) { | 7016 | switch (vk) { |
7010 | case 0: | 7017 | case 0: |
7011 | dasm_put(Dst, 4100); | 7018 | dasm_put(Dst, 4107); |
7012 | break; | 7019 | break; |
7013 | case 1: | 7020 | case 1: |
7014 | dasm_put(Dst, 4103); | 7021 | dasm_put(Dst, 4110); |
7015 | break; | 7022 | break; |
7016 | default: | 7023 | default: |
7017 | dasm_put(Dst, 4106); | 7024 | dasm_put(Dst, 4113); |
7018 | break; | 7025 | break; |
7019 | } | 7026 | } |
7020 | switch (vk) { | 7027 | switch (vk) { |
7021 | case 0: | 7028 | case 0: |
7022 | if (vk == 1) { | 7029 | if (vk == 1) { |
7023 | dasm_put(Dst, 4109, -LJ_TISNUM, -LJ_TISNUM); | 7030 | dasm_put(Dst, 4116, -LJ_TISNUM, -LJ_TISNUM); |
7024 | } else { | 7031 | } else { |
7025 | dasm_put(Dst, 4114, -LJ_TISNUM, -LJ_TISNUM); | 7032 | dasm_put(Dst, 4121, -LJ_TISNUM, -LJ_TISNUM); |
7026 | } | 7033 | } |
7027 | dasm_put(Dst, 4119); | 7034 | dasm_put(Dst, 4126); |
7028 | break; | 7035 | break; |
7029 | case 1: | 7036 | case 1: |
7030 | if (vk == 1) { | 7037 | if (vk == 1) { |
7031 | dasm_put(Dst, 4122, -LJ_TISNUM, -LJ_TISNUM); | 7038 | dasm_put(Dst, 4129, -LJ_TISNUM, -LJ_TISNUM); |
7032 | } else { | 7039 | } else { |
7033 | dasm_put(Dst, 4127, -LJ_TISNUM, -LJ_TISNUM); | 7040 | dasm_put(Dst, 4134, -LJ_TISNUM, -LJ_TISNUM); |
7034 | } | 7041 | } |
7035 | dasm_put(Dst, 4132); | 7042 | dasm_put(Dst, 4139); |
7036 | break; | 7043 | break; |
7037 | default: | 7044 | default: |
7038 | if (vk == 1) { | 7045 | if (vk == 1) { |
7039 | dasm_put(Dst, 4135, -LJ_TISNUM, -LJ_TISNUM); | 7046 | dasm_put(Dst, 4142, -LJ_TISNUM, -LJ_TISNUM); |
7040 | } else { | 7047 | } else { |
7041 | dasm_put(Dst, 4140, -LJ_TISNUM, -LJ_TISNUM); | 7048 | dasm_put(Dst, 4147, -LJ_TISNUM, -LJ_TISNUM); |
7042 | } | 7049 | } |
7043 | dasm_put(Dst, 4145); | 7050 | dasm_put(Dst, 4152); |
7044 | break; | 7051 | break; |
7045 | } | 7052 | } |
7046 | if (LJ_TARGET_OSX) { | 7053 | if (LJ_TARGET_OSX) { |
7047 | dasm_put(Dst, 4148); | 7054 | dasm_put(Dst, 4155); |
7048 | } | 7055 | } |
7049 | dasm_put(Dst, 4150); | 7056 | dasm_put(Dst, 4157); |
7050 | if (LJ_TARGET_OSX) { | 7057 | if (LJ_TARGET_OSX) { |
7051 | dasm_put(Dst, 4153); | 7058 | dasm_put(Dst, 4160); |
7052 | } | 7059 | } |
7053 | dasm_put(Dst, 4155); | 7060 | dasm_put(Dst, 4162); |
7054 | break; | 7061 | break; |
7055 | 7062 | ||
7056 | case BC_CAT: | 7063 | case BC_CAT: |
7057 | dasm_put(Dst, 4163, Dt1(->base), Dt1(->base)); | 7064 | dasm_put(Dst, 4170, Dt1(->base), Dt1(->base)); |
7058 | break; | 7065 | break; |
7059 | 7066 | ||
7060 | /* -- Constant ops ------------------------------------------------------ */ | 7067 | /* -- Constant ops ------------------------------------------------------ */ |
7061 | 7068 | ||
7062 | case BC_KSTR: | 7069 | case BC_KSTR: |
7063 | dasm_put(Dst, 4189, ~LJ_TSTR); | 7070 | dasm_put(Dst, 4196, ~LJ_TSTR); |
7064 | break; | 7071 | break; |
7065 | case BC_KCDATA: | 7072 | case BC_KCDATA: |
7066 | #if LJ_HASFFI | 7073 | #if LJ_HASFFI |
7067 | dasm_put(Dst, 4201, ~LJ_TCDATA); | 7074 | dasm_put(Dst, 4208, ~LJ_TCDATA); |
7068 | #endif | 7075 | #endif |
7069 | break; | 7076 | break; |
7070 | case BC_KSHORT: | 7077 | case BC_KSHORT: |
7071 | dasm_put(Dst, 4213, ~LJ_TISNUM); | 7078 | dasm_put(Dst, 4220, ~LJ_TISNUM); |
7072 | break; | 7079 | break; |
7073 | case BC_KNUM: | 7080 | case BC_KNUM: |
7074 | dasm_put(Dst, 4224); | 7081 | dasm_put(Dst, 4231); |
7075 | break; | 7082 | break; |
7076 | case BC_KPRI: | 7083 | case BC_KPRI: |
7077 | dasm_put(Dst, 4234); | 7084 | dasm_put(Dst, 4241); |
7078 | break; | 7085 | break; |
7079 | case BC_KNIL: | 7086 | case BC_KNIL: |
7080 | dasm_put(Dst, 4244, ~LJ_TNIL); | 7087 | dasm_put(Dst, 4251, ~LJ_TNIL); |
7081 | break; | 7088 | break; |
7082 | 7089 | ||
7083 | /* -- Upvalue and function ops ------------------------------------------ */ | 7090 | /* -- Upvalue and function ops ------------------------------------------ */ |
7084 | 7091 | ||
7085 | case BC_UGET: | 7092 | case BC_UGET: |
7086 | dasm_put(Dst, 4263, offsetof(GCfuncL, uvptr), DtA(->v)); | 7093 | dasm_put(Dst, 4270, offsetof(GCfuncL, uvptr), DtA(->v)); |
7087 | break; | 7094 | break; |
7088 | case BC_USETV: | 7095 | case BC_USETV: |
7089 | dasm_put(Dst, 4279, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->closed), DtA(->v), LJ_GC_BLACK, -LJ_TISGCV, -(LJ_TISNUM - LJ_TISGCV), Dt4(->gch.marked), -GG_DISP2G, LJ_GC_WHITES); | 7096 | dasm_put(Dst, 4286, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->closed), DtA(->v), LJ_GC_BLACK, -LJ_TISGCV, -(LJ_TISNUM - LJ_TISGCV), Dt4(->gch.marked), -GG_DISP2G, LJ_GC_WHITES); |
7090 | if (LJ_TARGET_OSX) { | 7097 | if (LJ_TARGET_OSX) { |
7091 | dasm_put(Dst, 4319); | ||
7092 | } else { | ||
7093 | dasm_put(Dst, 4326); | 7098 | dasm_put(Dst, 4326); |
7099 | } else { | ||
7100 | dasm_put(Dst, 4333); | ||
7094 | } | 7101 | } |
7095 | dasm_put(Dst, 4329); | 7102 | dasm_put(Dst, 4336); |
7096 | break; | 7103 | break; |
7097 | case BC_USETS: | 7104 | case BC_USETS: |
7098 | dasm_put(Dst, 4332, offsetof(GCfuncL, uvptr), ~LJ_TSTR, DtA(->marked), DtA(->v), DtA(->closed), LJ_GC_BLACK, Dt5(->marked), LJ_GC_WHITES, -GG_DISP2G); | 7105 | dasm_put(Dst, 4339, offsetof(GCfuncL, uvptr), ~LJ_TSTR, DtA(->marked), DtA(->v), DtA(->closed), LJ_GC_BLACK, Dt5(->marked), LJ_GC_WHITES, -GG_DISP2G); |
7099 | if (LJ_TARGET_OSX) { | 7106 | if (LJ_TARGET_OSX) { |
7100 | dasm_put(Dst, 4368); | ||
7101 | } else { | ||
7102 | dasm_put(Dst, 4375); | 7107 | dasm_put(Dst, 4375); |
7108 | } else { | ||
7109 | dasm_put(Dst, 4382); | ||
7103 | } | 7110 | } |
7104 | dasm_put(Dst, 4378); | 7111 | dasm_put(Dst, 4385); |
7105 | break; | 7112 | break; |
7106 | case BC_USETN: | 7113 | case BC_USETN: |
7107 | dasm_put(Dst, 4381, offsetof(GCfuncL, uvptr), DtA(->v)); | 7114 | dasm_put(Dst, 4388, offsetof(GCfuncL, uvptr), DtA(->v)); |
7108 | break; | 7115 | break; |
7109 | case BC_USETP: | 7116 | case BC_USETP: |
7110 | dasm_put(Dst, 4398, offsetof(GCfuncL, uvptr), DtA(->v)); | 7117 | dasm_put(Dst, 4405, offsetof(GCfuncL, uvptr), DtA(->v)); |
7111 | break; | 7118 | break; |
7112 | 7119 | ||
7113 | case BC_UCLO: | 7120 | case BC_UCLO: |
7114 | dasm_put(Dst, 4414, Dt1(->openupval), Dt1(->base), Dt1(->base)); | 7121 | dasm_put(Dst, 4421, Dt1(->openupval), Dt1(->base), Dt1(->base)); |
7115 | break; | 7122 | break; |
7116 | 7123 | ||
7117 | case BC_FNEW: | 7124 | case BC_FNEW: |
7118 | dasm_put(Dst, 4437, Dt1(->base), Dt1(->base), ~LJ_TFUNC); | 7125 | dasm_put(Dst, 4444, Dt1(->base), Dt1(->base), ~LJ_TFUNC); |
7119 | break; | 7126 | break; |
7120 | 7127 | ||
7121 | /* -- Table ops --------------------------------------------------------- */ | 7128 | /* -- Table ops --------------------------------------------------------- */ |
@@ -7123,115 +7130,115 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7123 | case BC_TNEW: | 7130 | case BC_TNEW: |
7124 | case BC_TDUP: | 7131 | case BC_TDUP: |
7125 | if (op == BC_TDUP) { | 7132 | if (op == BC_TDUP) { |
7126 | dasm_put(Dst, 4458); | 7133 | dasm_put(Dst, 4465); |
7127 | } | 7134 | } |
7128 | dasm_put(Dst, 4460, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); | 7135 | dasm_put(Dst, 4467, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); |
7129 | if (op == BC_TNEW) { | 7136 | if (op == BC_TNEW) { |
7130 | dasm_put(Dst, 4473); | 7137 | dasm_put(Dst, 4480); |
7131 | } else { | 7138 | } else { |
7132 | dasm_put(Dst, 4482); | 7139 | dasm_put(Dst, 4489); |
7133 | } | 7140 | } |
7134 | dasm_put(Dst, 4486, Dt1(->base), ~LJ_TTAB); | 7141 | dasm_put(Dst, 4493, Dt1(->base), ~LJ_TTAB); |
7135 | break; | 7142 | break; |
7136 | 7143 | ||
7137 | case BC_GGET: | 7144 | case BC_GGET: |
7138 | case BC_GSET: | 7145 | case BC_GSET: |
7139 | dasm_put(Dst, 4504, Dt7(->env)); | 7146 | dasm_put(Dst, 4511, Dt7(->env)); |
7140 | if (op == BC_GGET) { | 7147 | if (op == BC_GGET) { |
7141 | dasm_put(Dst, 4510); | 7148 | dasm_put(Dst, 4517); |
7142 | } else { | 7149 | } else { |
7143 | dasm_put(Dst, 4513); | 7150 | dasm_put(Dst, 4520); |
7144 | } | 7151 | } |
7145 | break; | 7152 | break; |
7146 | 7153 | ||
7147 | case BC_TGETV: | 7154 | case BC_TGETV: |
7148 | dasm_put(Dst, 4516, -LJ_TTAB, -LJ_TISNUM, Dt6(->array), Dt6(->asize), -LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, -LJ_TSTR); | 7155 | dasm_put(Dst, 4523, -LJ_TTAB, -LJ_TISNUM, Dt6(->array), Dt6(->asize), -LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, -LJ_TSTR); |
7149 | break; | 7156 | break; |
7150 | case BC_TGETS: | 7157 | case BC_TGETS: |
7151 | dasm_put(Dst, 4573, -LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), DtB(->key), DtB(->val), DtB(->next), -LJ_TSTR, -LJ_TNIL, Dt6(->metatable), ~LJ_TNIL, Dt6(->nomm)); | 7158 | dasm_put(Dst, 4580, -LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), DtB(->key), DtB(->val), DtB(->next), -LJ_TSTR, -LJ_TNIL, Dt6(->metatable), ~LJ_TNIL, Dt6(->nomm)); |
7152 | dasm_put(Dst, 4633, 1<<MM_index); | 7159 | dasm_put(Dst, 4640, 1<<MM_index); |
7153 | break; | 7160 | break; |
7154 | case BC_TGETB: | 7161 | case BC_TGETB: |
7155 | dasm_put(Dst, 4640, -LJ_TTAB, Dt6(->asize), Dt6(->array), -LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 7162 | dasm_put(Dst, 4647, -LJ_TTAB, Dt6(->asize), Dt6(->array), -LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
7156 | break; | 7163 | break; |
7157 | 7164 | ||
7158 | case BC_TSETV: | 7165 | case BC_TSETV: |
7159 | dasm_put(Dst, 4683, -LJ_TTAB, -LJ_TISNUM, Dt6(->array), Dt6(->asize), -LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); | 7166 | dasm_put(Dst, 4690, -LJ_TTAB, -LJ_TISNUM, Dt6(->array), Dt6(->asize), -LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); |
7160 | dasm_put(Dst, 4743, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), -LJ_TSTR); | 7167 | dasm_put(Dst, 4750, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist), -LJ_TSTR); |
7161 | break; | 7168 | break; |
7162 | case BC_TSETS: | 7169 | case BC_TSETS: |
7163 | dasm_put(Dst, 4764, -LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), DtB(->key), DtB(->val.it), DtB(->next), -LJ_TSTR, Dt6(->marked), -LJ_TNIL, LJ_GC_BLACK, DtB(->val)); | 7170 | dasm_put(Dst, 4771, -LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), DtB(->key), DtB(->val.it), DtB(->next), -LJ_TSTR, Dt6(->marked), -LJ_TNIL, LJ_GC_BLACK, DtB(->val)); |
7164 | dasm_put(Dst, 4822, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, ~LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), LJ_GC_BLACK); | 7171 | dasm_put(Dst, 4829, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, ~LJ_TSTR, Dt1(->base), DISPATCH_GL(gc.grayagain), LJ_GC_BLACK); |
7165 | dasm_put(Dst, 4875, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 7172 | dasm_put(Dst, 4882, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
7166 | break; | 7173 | break; |
7167 | case BC_TSETB: | 7174 | case BC_TSETB: |
7168 | dasm_put(Dst, 4884, -LJ_TTAB, Dt6(->asize), Dt6(->array), -LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK); | 7175 | dasm_put(Dst, 4891, -LJ_TTAB, Dt6(->asize), Dt6(->array), -LJ_TNIL, Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK); |
7169 | dasm_put(Dst, 4942, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 7176 | dasm_put(Dst, 4949, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
7170 | break; | 7177 | break; |
7171 | 7178 | ||
7172 | case BC_TSETM: | 7179 | case BC_TSETM: |
7173 | dasm_put(Dst, 4951, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt1(->base)); | 7180 | dasm_put(Dst, 4958, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_GC_BLACK, Dt1(->base)); |
7174 | if (LJ_TARGET_OSX) { | 7181 | if (LJ_TARGET_OSX) { |
7175 | dasm_put(Dst, 4996, Dt1(->base)); | 7182 | dasm_put(Dst, 5003, Dt1(->base)); |
7176 | } | 7183 | } |
7177 | dasm_put(Dst, 4999, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 7184 | dasm_put(Dst, 5006, DISPATCH_GL(gc.grayagain), LJ_GC_BLACK, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
7178 | break; | 7185 | break; |
7179 | 7186 | ||
7180 | /* -- Calls and vararg handling ----------------------------------------- */ | 7187 | /* -- Calls and vararg handling ----------------------------------------- */ |
7181 | 7188 | ||
7182 | case BC_CALLM: | 7189 | case BC_CALLM: |
7183 | dasm_put(Dst, 5015); | 7190 | dasm_put(Dst, 5022); |
7184 | break; | 7191 | break; |
7185 | case BC_CALL: | 7192 | case BC_CALL: |
7186 | dasm_put(Dst, 5021, -LJ_TFUNC, Dt7(->field_pc)); | 7193 | dasm_put(Dst, 5028, -LJ_TFUNC, Dt7(->field_pc)); |
7187 | break; | 7194 | break; |
7188 | 7195 | ||
7189 | case BC_CALLMT: | 7196 | case BC_CALLMT: |
7190 | dasm_put(Dst, 5041); | 7197 | dasm_put(Dst, 5048); |
7191 | break; | 7198 | break; |
7192 | case BC_CALLT: | 7199 | case BC_CALLT: |
7193 | dasm_put(Dst, 5046, -LJ_TFUNC, Dt7(->ffid), FRAME_TYPE, Dt7(->field_pc), Dt7(->field_pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP); | 7200 | dasm_put(Dst, 5053, -LJ_TFUNC, Dt7(->ffid), FRAME_TYPE, Dt7(->field_pc), Dt7(->field_pc), PC2PROTO(k), FRAME_VARG, FRAME_TYPEP); |
7194 | dasm_put(Dst, 5107, FRAME_TYPE); | 7201 | dasm_put(Dst, 5114, FRAME_TYPE); |
7195 | break; | 7202 | break; |
7196 | 7203 | ||
7197 | case BC_ITERC: | 7204 | case BC_ITERC: |
7198 | dasm_put(Dst, 5118, -LJ_TFUNC, Dt7(->field_pc)); | 7205 | dasm_put(Dst, 5125, -LJ_TFUNC, Dt7(->field_pc)); |
7199 | break; | 7206 | break; |
7200 | 7207 | ||
7201 | case BC_ITERN: | 7208 | case BC_ITERN: |
7202 | #if LJ_HASJIT | 7209 | #if LJ_HASJIT |
7203 | #endif | 7210 | #endif |
7204 | dasm_put(Dst, 5142, Dt6(->asize), Dt6(->array), -LJ_TNIL, ~LJ_TISNUM, Dt6(->hmask), Dt6(->node), DtB(->val), -LJ_TNIL, DtB(->key)); | 7211 | dasm_put(Dst, 5149, Dt6(->asize), Dt6(->array), -LJ_TNIL, ~LJ_TISNUM, Dt6(->hmask), Dt6(->node), DtB(->val), -LJ_TNIL, DtB(->key)); |
7205 | break; | 7212 | break; |
7206 | 7213 | ||
7207 | case BC_ISNEXT: | 7214 | case BC_ISNEXT: |
7208 | dasm_put(Dst, 5207, -LJ_TFUNC, Dt8(->ffid), -LJ_TTAB, -LJ_TNIL, FF_next_N, BC_JMP, BC_ITERC); | 7215 | dasm_put(Dst, 5214, -LJ_TFUNC, Dt8(->ffid), -LJ_TTAB, -LJ_TNIL, FF_next_N, BC_JMP, BC_ITERC); |
7209 | break; | 7216 | break; |
7210 | 7217 | ||
7211 | case BC_VARG: | 7218 | case BC_VARG: |
7212 | dasm_put(Dst, 5246, FRAME_VARG, ~LJ_TNIL, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->base)); | 7219 | dasm_put(Dst, 5253, FRAME_VARG, ~LJ_TNIL, Dt1(->maxstack), Dt1(->top), Dt1(->base), Dt1(->base)); |
7213 | break; | 7220 | break; |
7214 | 7221 | ||
7215 | /* -- Returns ----------------------------------------------------------- */ | 7222 | /* -- Returns ----------------------------------------------------------- */ |
7216 | 7223 | ||
7217 | case BC_RETM: | 7224 | case BC_RETM: |
7218 | dasm_put(Dst, 5318); | 7225 | dasm_put(Dst, 5325); |
7219 | break; | 7226 | break; |
7220 | 7227 | ||
7221 | case BC_RET: | 7228 | case BC_RET: |
7222 | dasm_put(Dst, 5325, FRAME_TYPE, FRAME_VARG, Dt7(->field_pc), PC2PROTO(k), ~LJ_TNIL, FRAME_TYPEP); | 7229 | dasm_put(Dst, 5332, FRAME_TYPE, FRAME_VARG, Dt7(->field_pc), PC2PROTO(k), ~LJ_TNIL, FRAME_TYPEP); |
7223 | break; | 7230 | break; |
7224 | 7231 | ||
7225 | case BC_RET0: case BC_RET1: | 7232 | case BC_RET0: case BC_RET1: |
7226 | dasm_put(Dst, 5390, FRAME_TYPE, FRAME_VARG); | 7233 | dasm_put(Dst, 5397, FRAME_TYPE, FRAME_VARG); |
7227 | if (op == BC_RET1) { | 7234 | if (op == BC_RET1) { |
7228 | dasm_put(Dst, 5401); | 7235 | dasm_put(Dst, 5408); |
7229 | } | 7236 | } |
7230 | dasm_put(Dst, 5403); | 7237 | dasm_put(Dst, 5410); |
7231 | if (op == BC_RET1) { | 7238 | if (op == BC_RET1) { |
7232 | dasm_put(Dst, 5406); | 7239 | dasm_put(Dst, 5413); |
7233 | } | 7240 | } |
7234 | dasm_put(Dst, 5408, Dt7(->field_pc), PC2PROTO(k), ~LJ_TNIL); | 7241 | dasm_put(Dst, 5415, Dt7(->field_pc), PC2PROTO(k), ~LJ_TNIL); |
7235 | break; | 7242 | break; |
7236 | 7243 | ||
7237 | /* -- Loops and branches ------------------------------------------------ */ | 7244 | /* -- Loops and branches ------------------------------------------------ */ |
@@ -7239,7 +7246,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7239 | 7246 | ||
7240 | case BC_FORL: | 7247 | case BC_FORL: |
7241 | #if LJ_HASJIT | 7248 | #if LJ_HASJIT |
7242 | dasm_put(Dst, 5434, -GG_DISP2HOT, HOTCOUNT_LOOP); | 7249 | dasm_put(Dst, 5441, -GG_DISP2HOT, HOTCOUNT_LOOP); |
7243 | #endif | 7250 | #endif |
7244 | break; | 7251 | break; |
7245 | 7252 | ||
@@ -7251,68 +7258,68 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7251 | case BC_FORI: | 7258 | case BC_FORI: |
7252 | case BC_IFORL: | 7259 | case BC_IFORL: |
7253 | vk = (op == BC_IFORL || op == BC_JFORL); | 7260 | vk = (op == BC_IFORL || op == BC_JFORL); |
7254 | dasm_put(Dst, 5445); | 7261 | dasm_put(Dst, 5452); |
7255 | if (op != BC_JFORL) { | 7262 | if (op != BC_JFORL) { |
7256 | dasm_put(Dst, 5447); | 7263 | dasm_put(Dst, 5454); |
7257 | } | 7264 | } |
7258 | if (!vk) { | 7265 | if (!vk) { |
7259 | dasm_put(Dst, 5449, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); | 7266 | dasm_put(Dst, 5456, -LJ_TISNUM, -LJ_TISNUM, -LJ_TISNUM); |
7260 | } else { | 7267 | } else { |
7261 | dasm_put(Dst, 5467, -LJ_TISNUM); | 7268 | dasm_put(Dst, 5474, -LJ_TISNUM); |
7262 | if (op == BC_IFORL) { | 7269 | if (op == BC_IFORL) { |
7263 | dasm_put(Dst, 5475); | 7270 | dasm_put(Dst, 5482); |
7264 | } else { | 7271 | } else { |
7265 | dasm_put(Dst, 5477); | 7272 | dasm_put(Dst, 5484); |
7266 | } | 7273 | } |
7267 | dasm_put(Dst, 5480); | 7274 | dasm_put(Dst, 5487); |
7268 | } | 7275 | } |
7269 | dasm_put(Dst, 5485); | 7276 | dasm_put(Dst, 5492); |
7270 | if (op == BC_FORI) { | 7277 | if (op == BC_FORI) { |
7271 | dasm_put(Dst, 5487); | 7278 | dasm_put(Dst, 5494); |
7272 | } else if (op == BC_JFORI) { | 7279 | } else if (op == BC_JFORI) { |
7273 | dasm_put(Dst, 5489); | 7280 | dasm_put(Dst, 5496); |
7274 | } else if (op == BC_IFORL) { | 7281 | } else if (op == BC_IFORL) { |
7275 | dasm_put(Dst, 5492); | 7282 | dasm_put(Dst, 5499); |
7276 | } | 7283 | } |
7277 | if (vk) { | 7284 | if (vk) { |
7278 | dasm_put(Dst, 5494); | 7285 | dasm_put(Dst, 5501); |
7279 | } | 7286 | } |
7280 | dasm_put(Dst, 5496); | 7287 | dasm_put(Dst, 5503); |
7281 | if (op == BC_JFORI || op == BC_JFORL) { | 7288 | if (op == BC_JFORI || op == BC_JFORL) { |
7282 | dasm_put(Dst, 5501, BC_JLOOP); | 7289 | dasm_put(Dst, 5508, BC_JLOOP); |
7283 | } | 7290 | } |
7284 | dasm_put(Dst, 5504); | 7291 | dasm_put(Dst, 5511); |
7285 | if (!vk) { | 7292 | if (!vk) { |
7286 | dasm_put(Dst, 5511); | 7293 | dasm_put(Dst, 5518); |
7287 | } else { | 7294 | } else { |
7288 | dasm_put(Dst, 5513); | 7295 | dasm_put(Dst, 5520); |
7289 | } | 7296 | } |
7290 | dasm_put(Dst, 5515); | 7297 | dasm_put(Dst, 5522); |
7291 | if (!vk) { | 7298 | if (!vk) { |
7292 | dasm_put(Dst, 5519, -LJ_TISNUM, -LJ_TISNUM); | 7299 | dasm_put(Dst, 5526, -LJ_TISNUM, -LJ_TISNUM); |
7293 | } else { | 7300 | } else { |
7294 | dasm_put(Dst, 5531); | 7301 | dasm_put(Dst, 5538); |
7295 | } | 7302 | } |
7296 | dasm_put(Dst, 5540); | 7303 | dasm_put(Dst, 5547); |
7297 | if (op == BC_FORI) { | 7304 | if (op == BC_FORI) { |
7298 | dasm_put(Dst, 5544); | 7305 | dasm_put(Dst, 5551); |
7299 | } else if (op == BC_JFORI) { | 7306 | } else if (op == BC_JFORI) { |
7300 | dasm_put(Dst, 5546, BC_JLOOP); | 7307 | dasm_put(Dst, 5553, BC_JLOOP); |
7301 | } else if (op == BC_IFORL) { | 7308 | } else if (op == BC_IFORL) { |
7302 | dasm_put(Dst, 5551); | 7309 | dasm_put(Dst, 5558); |
7303 | } else { | 7310 | } else { |
7304 | dasm_put(Dst, 5553, BC_JLOOP); | 7311 | dasm_put(Dst, 5560, BC_JLOOP); |
7305 | } | 7312 | } |
7306 | dasm_put(Dst, 5556); | 7313 | dasm_put(Dst, 5563); |
7307 | if (vk) { | 7314 | if (vk) { |
7308 | dasm_put(Dst, 5562); | 7315 | dasm_put(Dst, 5569); |
7309 | } | 7316 | } |
7310 | dasm_put(Dst, 5567); | 7317 | dasm_put(Dst, 5574); |
7311 | break; | 7318 | break; |
7312 | 7319 | ||
7313 | case BC_ITERL: | 7320 | case BC_ITERL: |
7314 | #if LJ_HASJIT | 7321 | #if LJ_HASJIT |
7315 | dasm_put(Dst, 5573, -GG_DISP2HOT, HOTCOUNT_LOOP); | 7322 | dasm_put(Dst, 5580, -GG_DISP2HOT, HOTCOUNT_LOOP); |
7316 | #endif | 7323 | #endif |
7317 | break; | 7324 | break; |
7318 | 7325 | ||
@@ -7321,40 +7328,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7321 | break; | 7328 | break; |
7322 | #endif | 7329 | #endif |
7323 | case BC_IITERL: | 7330 | case BC_IITERL: |
7324 | dasm_put(Dst, 5584); | 7331 | dasm_put(Dst, 5591); |
7325 | if (op == BC_JITERL) { | 7332 | if (op == BC_JITERL) { |
7326 | dasm_put(Dst, 5586, -LJ_TNIL, BC_JLOOP); | 7333 | dasm_put(Dst, 5593, -LJ_TNIL, BC_JLOOP); |
7327 | } else { | 7334 | } else { |
7328 | dasm_put(Dst, 5592, -LJ_TNIL); | 7335 | dasm_put(Dst, 5599, -LJ_TNIL); |
7329 | } | 7336 | } |
7330 | dasm_put(Dst, 5598); | 7337 | dasm_put(Dst, 5605); |
7331 | break; | 7338 | break; |
7332 | 7339 | ||
7333 | case BC_LOOP: | 7340 | case BC_LOOP: |
7334 | #if LJ_HASJIT | 7341 | #if LJ_HASJIT |
7335 | dasm_put(Dst, 5605, -GG_DISP2HOT, HOTCOUNT_LOOP); | 7342 | dasm_put(Dst, 5612, -GG_DISP2HOT, HOTCOUNT_LOOP); |
7336 | #endif | 7343 | #endif |
7337 | break; | 7344 | break; |
7338 | 7345 | ||
7339 | case BC_ILOOP: | 7346 | case BC_ILOOP: |
7340 | dasm_put(Dst, 5616); | 7347 | dasm_put(Dst, 5623); |
7341 | break; | 7348 | break; |
7342 | 7349 | ||
7343 | case BC_JLOOP: | 7350 | case BC_JLOOP: |
7344 | #if LJ_HASJIT | 7351 | #if LJ_HASJIT |
7345 | dasm_put(Dst, 5623, DISPATCH_J(trace), DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); | 7352 | dasm_put(Dst, 5630, DISPATCH_J(trace), DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L)); |
7346 | #endif | 7353 | #endif |
7347 | break; | 7354 | break; |
7348 | 7355 | ||
7349 | case BC_JMP: | 7356 | case BC_JMP: |
7350 | dasm_put(Dst, 5637); | 7357 | dasm_put(Dst, 5644); |
7351 | break; | 7358 | break; |
7352 | 7359 | ||
7353 | /* -- Function headers -------------------------------------------------- */ | 7360 | /* -- Function headers -------------------------------------------------- */ |
7354 | 7361 | ||
7355 | case BC_FUNCF: | 7362 | case BC_FUNCF: |
7356 | #if LJ_HASJIT | 7363 | #if LJ_HASJIT |
7357 | dasm_put(Dst, 5646, -GG_DISP2HOT, HOTCOUNT_CALL); | 7364 | dasm_put(Dst, 5653, -GG_DISP2HOT, HOTCOUNT_CALL); |
7358 | #endif | 7365 | #endif |
7359 | case BC_FUNCV: /* NYI: compiled vararg functions. */ | 7366 | case BC_FUNCV: /* NYI: compiled vararg functions. */ |
7360 | break; | 7367 | break; |
@@ -7364,42 +7371,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7364 | break; | 7371 | break; |
7365 | #endif | 7372 | #endif |
7366 | case BC_IFUNCF: | 7373 | case BC_IFUNCF: |
7367 | dasm_put(Dst, 5657, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); | 7374 | dasm_put(Dst, 5664, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); |
7368 | if (op != BC_JFUNCF) { | 7375 | if (op != BC_JFUNCF) { |
7369 | dasm_put(Dst, 5667); | 7376 | dasm_put(Dst, 5674); |
7370 | } | 7377 | } |
7371 | dasm_put(Dst, 5670, ~LJ_TNIL); | 7378 | dasm_put(Dst, 5677, ~LJ_TNIL); |
7372 | if (op == BC_JFUNCF) { | 7379 | if (op == BC_JFUNCF) { |
7373 | dasm_put(Dst, 5677, BC_JLOOP); | 7380 | dasm_put(Dst, 5684, BC_JLOOP); |
7374 | } else { | 7381 | } else { |
7375 | dasm_put(Dst, 5681); | 7382 | dasm_put(Dst, 5688); |
7376 | } | 7383 | } |
7377 | dasm_put(Dst, 5686); | 7384 | dasm_put(Dst, 5693); |
7378 | break; | 7385 | break; |
7379 | 7386 | ||
7380 | case BC_JFUNCV: | 7387 | case BC_JFUNCV: |
7381 | #if !LJ_HASJIT | 7388 | #if !LJ_HASJIT |
7382 | break; | 7389 | break; |
7383 | #endif | 7390 | #endif |
7384 | dasm_put(Dst, 5692); | 7391 | dasm_put(Dst, 5699); |
7385 | break; /* NYI: compiled vararg functions. */ | 7392 | break; /* NYI: compiled vararg functions. */ |
7386 | 7393 | ||
7387 | case BC_IFUNCV: | 7394 | case BC_IFUNCV: |
7388 | dasm_put(Dst, 5694, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), ~LJ_TNIL); | 7395 | dasm_put(Dst, 5701, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), ~LJ_TNIL); |
7389 | break; | 7396 | break; |
7390 | 7397 | ||
7391 | case BC_FUNCC: | 7398 | case BC_FUNCC: |
7392 | case BC_FUNCCW: | 7399 | case BC_FUNCCW: |
7393 | if (op == BC_FUNCC) { | 7400 | if (op == BC_FUNCC) { |
7394 | dasm_put(Dst, 5735, Dt8(->f)); | 7401 | dasm_put(Dst, 5742, Dt8(->f)); |
7395 | } else { | 7402 | } else { |
7396 | dasm_put(Dst, 5738, DISPATCH_GL(wrapf)); | 7403 | dasm_put(Dst, 5745, DISPATCH_GL(wrapf)); |
7397 | } | 7404 | } |
7398 | dasm_put(Dst, 5741, Dt1(->maxstack), Dt1(->base), Dt1(->top)); | 7405 | dasm_put(Dst, 5748, Dt1(->maxstack), Dt1(->base), Dt1(->top)); |
7399 | if (op == BC_FUNCCW) { | 7406 | if (op == BC_FUNCCW) { |
7400 | dasm_put(Dst, 5751, Dt8(->f)); | 7407 | dasm_put(Dst, 5758, Dt8(->f)); |
7401 | } | 7408 | } |
7402 | dasm_put(Dst, 5754, LJ_VMST_C, DISPATCH_GL(vmstate), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate)); | 7409 | dasm_put(Dst, 5761, LJ_VMST_C, DISPATCH_GL(vmstate), Dt1(->base), LJ_VMST_INTERP, Dt1(->top), DISPATCH_GL(vmstate)); |
7403 | break; | 7410 | break; |
7404 | 7411 | ||
7405 | /* ---------------------------------------------------------------------- */ | 7412 | /* ---------------------------------------------------------------------- */ |
@@ -7419,7 +7426,7 @@ static int build_backend(BuildCtx *ctx) | |||
7419 | 7426 | ||
7420 | build_subroutines(ctx); | 7427 | build_subroutines(ctx); |
7421 | 7428 | ||
7422 | dasm_put(Dst, 5776); | 7429 | dasm_put(Dst, 5783); |
7423 | for (op = 0; op < BC__MAX; op++) | 7430 | for (op = 0; op < BC__MAX; op++) |
7424 | build_ins(ctx, (BCOp)op, op); | 7431 | build_ins(ctx, (BCOp)op, op); |
7425 | 7432 | ||
diff --git a/src/buildvm_mips.dasc b/src/buildvm_mips.dasc index 9e984189..a7c3b4ae 100644 --- a/src/buildvm_mips.dasc +++ b/src/buildvm_mips.dasc | |||
@@ -1900,6 +1900,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1900 | |. and TMP1, PC, AT | 1900 | |. and TMP1, PC, AT |
1901 | | lbu TMP1, OFS_RA(PC) | 1901 | | lbu TMP1, OFS_RA(PC) |
1902 | | sll TMP1, TMP1, 3 | 1902 | | sll TMP1, TMP1, 3 |
1903 | | addiu TMP1, TMP1, 8 | ||
1903 | |3: | 1904 | |3: |
1904 | | b ->vm_call_dispatch // Resolve again for tailcall. | 1905 | | b ->vm_call_dispatch // Resolve again for tailcall. |
1905 | |. subu TMP2, BASE, TMP1 | 1906 | |. subu TMP2, BASE, TMP1 |
diff --git a/src/buildvm_mips.h b/src/buildvm_mips.h index 7c0f90bf..bab93343 100644 --- a/src/buildvm_mips.h +++ b/src/buildvm_mips.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #define DASM_SECTION_CODE_OP 0 | 12 | #define DASM_SECTION_CODE_OP 0 |
13 | #define DASM_SECTION_CODE_SUB 1 | 13 | #define DASM_SECTION_CODE_SUB 1 |
14 | #define DASM_MAXSECTION 2 | 14 | #define DASM_MAXSECTION 2 |
15 | static const unsigned int build_actionlist[6323] = { | 15 | static const unsigned int build_actionlist[6324] = { |
16 | 0xff010001, | 16 | 0xff010001, |
17 | 0xff060014, | 17 | 0xff060014, |
18 | 0x32410000, | 18 | 0x32410000, |
@@ -2930,6 +2930,7 @@ static const unsigned int build_actionlist[6323] = { | |||
2930 | 0x924d0000, | 2930 | 0x924d0000, |
2931 | 0xff098200, | 2931 | 0xff098200, |
2932 | 0x000d68c0, | 2932 | 0x000d68c0, |
2933 | 0x25ad0008, | ||
2933 | 0xff06000d, | 2934 | 0xff06000d, |
2934 | 0x10000000, | 2935 | 0x10000000, |
2935 | 0xff050824, | 2936 | 0xff050824, |
@@ -6736,51 +6737,51 @@ static void build_subroutines(BuildCtx *ctx) | |||
6736 | dasm_put(Dst, 2719, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); | 6737 | dasm_put(Dst, 2719, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0)); |
6737 | dasm_put(Dst, 2790, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, Dt8(->f)); | 6738 | dasm_put(Dst, 2790, 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), 8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, Dt8(->f)); |
6738 | dasm_put(Dst, 2863, LJ_ENDIAN_SELECT(-4,-8), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), FRAME_TYPE, LJ_ENDIAN_SELECT(1,2), DISPATCH_GOT(lj_state_growstack), LUA_MINSTACK, Dt1(->base)); | 6739 | dasm_put(Dst, 2863, LJ_ENDIAN_SELECT(-4,-8), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), FRAME_TYPE, LJ_ENDIAN_SELECT(1,2), DISPATCH_GOT(lj_state_growstack), LUA_MINSTACK, Dt1(->base)); |
6739 | dasm_put(Dst, 2931, DISPATCH_GOT(lj_gc_step), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); | 6740 | dasm_put(Dst, 2932, DISPATCH_GOT(lj_gc_step), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); |
6740 | #if LJ_HASJIT | 6741 | #if LJ_HASJIT |
6741 | dasm_put(Dst, 2957, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); | 6742 | dasm_put(Dst, 2958, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); |
6742 | #endif | 6743 | #endif |
6743 | dasm_put(Dst, 2980, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, DISPATCH_GOT(lj_dispatch_ins), Dt1(->base), Dt1(->base)); | 6744 | dasm_put(Dst, 2981, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount), LUA_MASKLINE, DISPATCH_GOT(lj_dispatch_ins), Dt1(->base), Dt1(->base)); |
6744 | dasm_put(Dst, 3028, GG_DISP2STATIC, -24+LJ_ENDIAN_SELECT(0,4)); | 6745 | dasm_put(Dst, 3029, GG_DISP2STATIC, -24+LJ_ENDIAN_SELECT(0,4)); |
6745 | #if LJ_HASJIT | 6746 | #if LJ_HASJIT |
6746 | dasm_put(Dst, 3047, LJ_ENDIAN_SELECT(-8,-4), GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), DISPATCH_GOT(lj_trace_hot), Dt1(->base), Dt1(->top)); | 6747 | dasm_put(Dst, 3048, LJ_ENDIAN_SELECT(-8,-4), GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), DISPATCH_GOT(lj_trace_hot), Dt1(->base), Dt1(->top)); |
6747 | #endif | 6748 | #endif |
6748 | dasm_put(Dst, 3072); | 6749 | dasm_put(Dst, 3073); |
6749 | #if LJ_HASJIT | 6750 | #if LJ_HASJIT |
6750 | dasm_put(Dst, 3074); | 6751 | dasm_put(Dst, 3075); |
6751 | #endif | 6752 | #endif |
6752 | dasm_put(Dst, 3077); | 6753 | dasm_put(Dst, 3078); |
6753 | #if LJ_HASJIT | 6754 | #if LJ_HASJIT |
6754 | dasm_put(Dst, 3080); | 6755 | dasm_put(Dst, 3081); |
6755 | #endif | 6756 | #endif |
6756 | dasm_put(Dst, 3083, DISPATCH_GOT(lj_dispatch_call), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); | 6757 | dasm_put(Dst, 3084, DISPATCH_GOT(lj_dispatch_call), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4)); |
6757 | #if LJ_HASJIT | 6758 | #if LJ_HASJIT |
6758 | dasm_put(Dst, 3107, -(16+32*8+32*4), 16+0*8, 16+32*8+0*4, 16+32*8+1*4, 16+2*8, 16+32*8+2*4, 16+32*8+3*4, 16+4*8, 16+32*8+4*4, 16+32*8+5*4, 16+6*8, 16+32*8+6*4, 16+32*8+7*4, 16+8*8, 16+32*8+8*4, 16+32*8+9*4, 16+10*8, 16+32*8+10*4, 16+32*8+11*4, 16+12*8, 16+32*8+12*4, 16+32*8+13*4, 16+14*8); | 6759 | dasm_put(Dst, 3108, -(16+32*8+32*4), 16+0*8, 16+32*8+0*4, 16+32*8+1*4, 16+2*8, 16+32*8+2*4, 16+32*8+3*4, 16+4*8, 16+32*8+4*4, 16+32*8+5*4, 16+6*8, 16+32*8+6*4, 16+32*8+7*4, 16+8*8, 16+32*8+8*4, 16+32*8+9*4, 16+10*8, 16+32*8+10*4, 16+32*8+11*4, 16+12*8, 16+32*8+12*4, 16+32*8+13*4, 16+14*8); |
6759 | dasm_put(Dst, 3154, 16+32*8+14*4, 16+32*8+15*4, 16+16*8, 16+32*8+16*4, 16+32*8+17*4, 16+18*8, 16+32*8+18*4, 16+32*8+19*4, 16+20*8, 16+32*8+20*4, 16+32*8+21*4, 16+22*8, 16+32*8+22*4, 16+32*8+23*4, 16+24*8, 16+32*8+24*4, 16+32*8+25*4, 16+26*8, 16+32*8+26*4, 16+32*8+27*4, 16+28*8, 16+32*8+28*4, 16+30*8); | 6760 | dasm_put(Dst, 3155, 16+32*8+14*4, 16+32*8+15*4, 16+16*8, 16+32*8+16*4, 16+32*8+17*4, 16+18*8, 16+32*8+18*4, 16+32*8+19*4, 16+20*8, 16+32*8+20*4, 16+32*8+21*4, 16+22*8, 16+32*8+22*4, 16+32*8+23*4, 16+24*8, 16+32*8+24*4, 16+32*8+25*4, 16+26*8, 16+32*8+26*4, 16+32*8+27*4, 16+28*8, 16+32*8+28*4, 16+30*8); |
6760 | dasm_put(Dst, 3201, 16+32*8+30*4, 16+32*8+31*4, ~LJ_VMST_EXIT, 16+32*8+32*4, -GG_DISP2G-32768, DISPATCH_GL(vmstate), 16+32*8+29*4, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_GOT(lj_trace_exit), DISPATCH_J(L), DISPATCH_J(parent), DISPATCH_J(exitno), GG_DISP2J, Dt1(->base), Dt1(->cframe), Dt1(->base)); | 6761 | dasm_put(Dst, 3202, 16+32*8+30*4, 16+32*8+31*4, ~LJ_VMST_EXIT, 16+32*8+32*4, -GG_DISP2G-32768, DISPATCH_GL(vmstate), 16+32*8+29*4, DISPATCH_GL(jit_L), DISPATCH_GL(jit_base), DISPATCH_GOT(lj_trace_exit), DISPATCH_J(L), DISPATCH_J(parent), DISPATCH_J(exitno), GG_DISP2J, Dt1(->base), Dt1(->cframe), Dt1(->base)); |
6761 | #endif | 6762 | #endif |
6762 | dasm_put(Dst, 3245); | 6763 | dasm_put(Dst, 3246); |
6763 | #if LJ_HASJIT | 6764 | #if LJ_HASJIT |
6764 | dasm_put(Dst, 3247, -GG_DISP2G-32768, LJ_ENDIAN_SELECT(-8,-4), LJ_TNIL, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF*4, DISPATCH_GOT(lj_err_throw)); | 6765 | dasm_put(Dst, 3248, -GG_DISP2G-32768, LJ_ENDIAN_SELECT(-8,-4), LJ_TNIL, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), DISPATCH_GL(vmstate), BC_FUNCF*4, DISPATCH_GOT(lj_err_throw)); |
6765 | #endif | 6766 | #endif |
6766 | dasm_put(Dst, 3296); | 6767 | dasm_put(Dst, 3297); |
6767 | #if LJ_HASJIT | 6768 | #if LJ_HASJIT |
6768 | dasm_put(Dst, 3344); | 6769 | dasm_put(Dst, 3345); |
6769 | #endif | 6770 | #endif |
6770 | dasm_put(Dst, 3367); | 6771 | dasm_put(Dst, 3368); |
6771 | #if LJ_HASFFI | 6772 | #if LJ_HASFFI |
6772 | #define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) | 6773 | #define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) |
6773 | dasm_put(Dst, 3369, 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt2(->ctype_state), GG_G2DISP, DISPATCH_GOT(lj_ccallback_enter), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[0])); | 6774 | dasm_put(Dst, 3370, 72+9*4, 72+8*4, 24+5*8, 72+7*4, 72+6*4, 24+4*8, 72+5*4, 72+4*4, 24+3*8, 72+3*4, 72+2*4, 24+2*8, 72+1*4, 72+0*4, 24+1*8, 24+0*8, Dt2(->ctype_state), GG_G2DISP, DISPATCH_GOT(lj_ccallback_enter), DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[0])); |
6774 | dasm_put(Dst, 3417, DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[1]), 112+16, DtE(->cb.stack), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), Dt7(->pc)); | 6775 | dasm_put(Dst, 3418, DtE(->cb.gpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[1]), 112+16, DtE(->cb.stack), Dt1(->base), Dt1(->top), LJ_ENDIAN_SELECT(-8,-4), ~LJ_VMST_INTERP, LJ_TNIL, DISPATCH_GL(vmstate), Dt7(->pc)); |
6775 | #endif | 6776 | #endif |
6776 | dasm_put(Dst, 3461); | 6777 | dasm_put(Dst, 3462); |
6777 | #if LJ_HASFFI | 6778 | #if LJ_HASFFI |
6778 | dasm_put(Dst, 3463, DISPATCH_GOT(lj_ccallback_leave), DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1])); | 6779 | dasm_put(Dst, 3464, DISPATCH_GOT(lj_ccallback_leave), DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1])); |
6779 | #endif | 6780 | #endif |
6780 | dasm_put(Dst, 3487); | 6781 | dasm_put(Dst, 3488); |
6781 | #if LJ_HASFFI | 6782 | #if LJ_HASFFI |
6782 | #define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) | 6783 | #define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) |
6783 | dasm_put(Dst, 3489, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->fpr[0]), DtF(->fpr[1])); | 6784 | dasm_put(Dst, 3490, DtF(->spadj), DtF(->nsp), offsetof(CCallState, stack), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3]), DtF(->fpr[0]), DtF(->fpr[1]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->gpr[1]), DtF(->fpr[0]), DtF(->fpr[1])); |
6784 | #endif | 6785 | #endif |
6785 | } | 6786 | } |
6786 | 6787 | ||
@@ -6788,7 +6789,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
6788 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) | 6789 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) |
6789 | { | 6790 | { |
6790 | int vk = 0; | 6791 | int vk = 0; |
6791 | dasm_put(Dst, 3545, defop); | 6792 | dasm_put(Dst, 3546, defop); |
6792 | 6793 | ||
6793 | switch (op) { | 6794 | switch (op) { |
6794 | 6795 | ||
@@ -6797,138 +6798,138 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
6797 | /* Remember: all ops branch for a true comparison, fall through otherwise. */ | 6798 | /* Remember: all ops branch for a true comparison, fall through otherwise. */ |
6798 | 6799 | ||
6799 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: | 6800 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: |
6800 | dasm_put(Dst, 3547, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535)); | 6801 | dasm_put(Dst, 3548, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535)); |
6801 | if (op == BC_ISLT || op == BC_ISGE) { | 6802 | if (op == BC_ISLT || op == BC_ISGE) { |
6802 | dasm_put(Dst, 3570); | 6803 | dasm_put(Dst, 3571); |
6803 | } else { | 6804 | } else { |
6804 | dasm_put(Dst, 3572); | 6805 | dasm_put(Dst, 3573); |
6805 | } | 6806 | } |
6806 | if (op == BC_ISLT || op == BC_ISLE) { | 6807 | if (op == BC_ISLT || op == BC_ISLE) { |
6807 | dasm_put(Dst, 3574); | 6808 | dasm_put(Dst, 3575); |
6808 | } else { | 6809 | } else { |
6809 | dasm_put(Dst, 3576); | 6810 | dasm_put(Dst, 3577); |
6810 | } | 6811 | } |
6811 | dasm_put(Dst, 3578); | 6812 | dasm_put(Dst, 3579); |
6812 | break; | 6813 | break; |
6813 | 6814 | ||
6814 | case BC_ISEQV: case BC_ISNEV: | 6815 | case BC_ISEQV: case BC_ISNEV: |
6815 | vk = op == BC_ISEQV; | 6816 | vk = op == BC_ISEQV; |
6816 | dasm_put(Dst, 3592, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM, LJ_TISNUM); | 6817 | dasm_put(Dst, 3593, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM, LJ_TISNUM); |
6817 | if (vk) { | 6818 | if (vk) { |
6818 | dasm_put(Dst, 3616); | 6819 | dasm_put(Dst, 3617); |
6819 | } else { | 6820 | } else { |
6820 | dasm_put(Dst, 3618); | 6821 | dasm_put(Dst, 3619); |
6821 | } | 6822 | } |
6822 | dasm_put(Dst, 3620, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4)); | 6823 | dasm_put(Dst, 3621, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4)); |
6823 | if (LJ_HASFFI) { | 6824 | if (LJ_HASFFI) { |
6824 | dasm_put(Dst, 3639, LJ_TCDATA); | 6825 | dasm_put(Dst, 3640, LJ_TCDATA); |
6825 | } | 6826 | } |
6826 | dasm_put(Dst, 3644, LJ_TISPRI); | 6827 | dasm_put(Dst, 3645, LJ_TISPRI); |
6827 | if (LJ_HASFFI) { | 6828 | if (LJ_HASFFI) { |
6828 | dasm_put(Dst, 3647); | 6829 | dasm_put(Dst, 3648); |
6829 | } | 6830 | } |
6830 | dasm_put(Dst, 3650, LJ_TISTABUD+1); | 6831 | dasm_put(Dst, 3651, LJ_TISTABUD+1); |
6831 | if (vk) { | 6832 | if (vk) { |
6832 | dasm_put(Dst, 3661); | 6833 | dasm_put(Dst, 3662); |
6833 | } else { | 6834 | } else { |
6834 | dasm_put(Dst, 3663); | 6835 | dasm_put(Dst, 3664); |
6835 | } | 6836 | } |
6836 | dasm_put(Dst, 3665, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq, 1-vk); | 6837 | dasm_put(Dst, 3666, Dt6(->metatable), Dt6(->nomm), 1<<MM_eq, 1-vk); |
6837 | break; | 6838 | break; |
6838 | 6839 | ||
6839 | case BC_ISEQS: case BC_ISNES: | 6840 | case BC_ISEQS: case BC_ISNES: |
6840 | vk = op == BC_ISEQS; | 6841 | vk = op == BC_ISEQS; |
6841 | dasm_put(Dst, 3682, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), -4+LJ_ENDIAN_SELECT(2,0)); | 6842 | dasm_put(Dst, 3683, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), -4+LJ_ENDIAN_SELECT(2,0)); |
6842 | if (LJ_HASFFI) { | 6843 | if (LJ_HASFFI) { |
6843 | dasm_put(Dst, 3693, LJ_TCDATA); | 6844 | dasm_put(Dst, 3694, LJ_TCDATA); |
6844 | } | 6845 | } |
6845 | dasm_put(Dst, 3698, -LJ_TSTR, (-(BCBIAS_J*4 >> 16) & 65535)); | 6846 | dasm_put(Dst, 3699, -LJ_TSTR, (-(BCBIAS_J*4 >> 16) & 65535)); |
6846 | if (vk) { | 6847 | if (vk) { |
6847 | dasm_put(Dst, 3708); | 6848 | dasm_put(Dst, 3709); |
6848 | } else { | 6849 | } else { |
6849 | dasm_put(Dst, 3710); | 6850 | dasm_put(Dst, 3711); |
6850 | } | 6851 | } |
6851 | dasm_put(Dst, 3712); | 6852 | dasm_put(Dst, 3713); |
6852 | break; | 6853 | break; |
6853 | 6854 | ||
6854 | case BC_ISEQN: case BC_ISNEN: | 6855 | case BC_ISEQN: case BC_ISNEN: |
6855 | vk = op == BC_ISEQN; | 6856 | vk = op == BC_ISEQN; |
6856 | dasm_put(Dst, 3725, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM); | 6857 | dasm_put(Dst, 3726, LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), LJ_TISNUM); |
6857 | if (LJ_HASFFI) { | 6858 | if (LJ_HASFFI) { |
6858 | dasm_put(Dst, 3740); | 6859 | dasm_put(Dst, 3741); |
6859 | } else { | 6860 | } else { |
6860 | dasm_put(Dst, 3743); | 6861 | dasm_put(Dst, 3744); |
6861 | } | 6862 | } |
6862 | dasm_put(Dst, 3746); | 6863 | dasm_put(Dst, 3747); |
6863 | if (vk) { | 6864 | if (vk) { |
6864 | dasm_put(Dst, 3749); | 6865 | dasm_put(Dst, 3750); |
6865 | } else { | 6866 | } else { |
6866 | dasm_put(Dst, 3753); | 6867 | dasm_put(Dst, 3754); |
6867 | } | 6868 | } |
6868 | dasm_put(Dst, 3757); | 6869 | dasm_put(Dst, 3758); |
6869 | if (LJ_HASFFI) { | 6870 | if (LJ_HASFFI) { |
6870 | dasm_put(Dst, 3769, LJ_TCDATA); | 6871 | dasm_put(Dst, 3770, LJ_TCDATA); |
6871 | } | 6872 | } |
6872 | break; | 6873 | break; |
6873 | 6874 | ||
6874 | case BC_ISEQP: case BC_ISNEP: | 6875 | case BC_ISEQP: case BC_ISNEP: |
6875 | vk = op == BC_ISEQP; | 6876 | vk = op == BC_ISEQP; |
6876 | dasm_put(Dst, 3779, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(2,0)); | 6877 | dasm_put(Dst, 3780, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(2,0)); |
6877 | if (LJ_HASFFI) { | 6878 | if (LJ_HASFFI) { |
6878 | dasm_put(Dst, 3788, LJ_TCDATA); | 6879 | dasm_put(Dst, 3789, LJ_TCDATA); |
6879 | } | 6880 | } |
6880 | dasm_put(Dst, 3793, (-(BCBIAS_J*4 >> 16) & 65535)); | 6881 | dasm_put(Dst, 3794, (-(BCBIAS_J*4 >> 16) & 65535)); |
6881 | if (vk) { | 6882 | if (vk) { |
6882 | dasm_put(Dst, 3799); | 6883 | dasm_put(Dst, 3800); |
6883 | } else { | 6884 | } else { |
6884 | dasm_put(Dst, 3801); | 6885 | dasm_put(Dst, 3802); |
6885 | } | 6886 | } |
6886 | dasm_put(Dst, 3803); | 6887 | dasm_put(Dst, 3804); |
6887 | break; | 6888 | break; |
6888 | 6889 | ||
6889 | /* -- Unary test and copy ops ------------------------------------------- */ | 6890 | /* -- Unary test and copy ops ------------------------------------------- */ |
6890 | 6891 | ||
6891 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: | 6892 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: |
6892 | dasm_put(Dst, 3816, LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0)); | 6893 | dasm_put(Dst, 3817, LJ_ENDIAN_SELECT(2,0), LJ_ENDIAN_SELECT(4,0)); |
6893 | if (op == BC_IST || op == BC_ISF) { | 6894 | if (op == BC_IST || op == BC_ISF) { |
6894 | dasm_put(Dst, 3823, LJ_TISTRUECOND, (-(BCBIAS_J*4 >> 16) & 65535)); | 6895 | dasm_put(Dst, 3824, LJ_TISTRUECOND, (-(BCBIAS_J*4 >> 16) & 65535)); |
6895 | if (op == BC_IST) { | 6896 | if (op == BC_IST) { |
6896 | dasm_put(Dst, 3830); | 6897 | dasm_put(Dst, 3831); |
6897 | } else { | 6898 | } else { |
6898 | dasm_put(Dst, 3832); | 6899 | dasm_put(Dst, 3833); |
6899 | } | 6900 | } |
6900 | dasm_put(Dst, 3834); | 6901 | dasm_put(Dst, 3835); |
6901 | } else { | 6902 | } else { |
6902 | dasm_put(Dst, 3836, LJ_TISTRUECOND); | 6903 | dasm_put(Dst, 3837, LJ_TISTRUECOND); |
6903 | if (op == BC_ISTC) { | 6904 | if (op == BC_ISTC) { |
6904 | dasm_put(Dst, 3840); | 6905 | dasm_put(Dst, 3841); |
6905 | } else { | 6906 | } else { |
6906 | dasm_put(Dst, 3843); | 6907 | dasm_put(Dst, 3844); |
6907 | } | 6908 | } |
6908 | dasm_put(Dst, 3846, (-(BCBIAS_J*4 >> 16) & 65535)); | 6909 | dasm_put(Dst, 3847, (-(BCBIAS_J*4 >> 16) & 65535)); |
6909 | } | 6910 | } |
6910 | dasm_put(Dst, 3855); | 6911 | dasm_put(Dst, 3856); |
6911 | break; | 6912 | break; |
6912 | 6913 | ||
6913 | /* -- Unary ops --------------------------------------------------------- */ | 6914 | /* -- Unary ops --------------------------------------------------------- */ |
6914 | 6915 | ||
6915 | case BC_MOV: | 6916 | case BC_MOV: |
6916 | dasm_put(Dst, 3867); | 6917 | dasm_put(Dst, 3868); |
6917 | break; | 6918 | break; |
6918 | case BC_NOT: | 6919 | case BC_NOT: |
6919 | dasm_put(Dst, 3883, LJ_ENDIAN_SELECT(4,0), LJ_TFALSE, LJ_TISTRUECOND, LJ_TTRUE, LJ_ENDIAN_SELECT(4,0)); | 6920 | dasm_put(Dst, 3884, LJ_ENDIAN_SELECT(4,0), LJ_TFALSE, LJ_TISTRUECOND, LJ_TTRUE, LJ_ENDIAN_SELECT(4,0)); |
6920 | break; | 6921 | break; |
6921 | case BC_UNM: | 6922 | case BC_UNM: |
6922 | dasm_put(Dst, 3907, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6923 | dasm_put(Dst, 3908, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6923 | break; | 6924 | break; |
6924 | case BC_LEN: | 6925 | case BC_LEN: |
6925 | dasm_put(Dst, 3930, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, LJ_TTAB, Dt5(->len)); | 6926 | dasm_put(Dst, 3931, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TSTR, LJ_TTAB, Dt5(->len)); |
6926 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 6927 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
6927 | dasm_put(Dst, 3964, Dt6(->metatable)); | 6928 | dasm_put(Dst, 3965, Dt6(->metatable)); |
6928 | #endif | 6929 | #endif |
6929 | dasm_put(Dst, 3971, DISPATCH_GOT(lj_tab_len)); | 6930 | dasm_put(Dst, 3972, DISPATCH_GOT(lj_tab_len)); |
6930 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 6931 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
6931 | dasm_put(Dst, 3980, Dt6(->nomm), 1<<MM_len); | 6932 | dasm_put(Dst, 3981, Dt6(->nomm), 1<<MM_len); |
6932 | #endif | 6933 | #endif |
6933 | break; | 6934 | break; |
6934 | 6935 | ||
@@ -6937,273 +6938,273 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
6937 | 6938 | ||
6938 | case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: | 6939 | case BC_ADDVN: case BC_ADDNV: case BC_ADDVV: |
6939 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6940 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6940 | dasm_put(Dst, 3992); | 6941 | dasm_put(Dst, 3993); |
6941 | switch (vk) { | 6942 | switch (vk) { |
6942 | case 0: | 6943 | case 0: |
6943 | dasm_put(Dst, 3996, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6944 | dasm_put(Dst, 3997, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6944 | break; | 6945 | break; |
6945 | case 1: | 6946 | case 1: |
6946 | dasm_put(Dst, 4005, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6947 | dasm_put(Dst, 4006, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6947 | break; | 6948 | break; |
6948 | default: | 6949 | default: |
6949 | dasm_put(Dst, 4014, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); | 6950 | dasm_put(Dst, 4015, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); |
6950 | break; | 6951 | break; |
6951 | } | 6952 | } |
6952 | dasm_put(Dst, 4028); | 6953 | dasm_put(Dst, 4029); |
6953 | break; | 6954 | break; |
6954 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: | 6955 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: |
6955 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6956 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6956 | dasm_put(Dst, 4045); | 6957 | dasm_put(Dst, 4046); |
6957 | switch (vk) { | 6958 | switch (vk) { |
6958 | case 0: | 6959 | case 0: |
6959 | dasm_put(Dst, 4049, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6960 | dasm_put(Dst, 4050, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6960 | break; | 6961 | break; |
6961 | case 1: | 6962 | case 1: |
6962 | dasm_put(Dst, 4058, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6963 | dasm_put(Dst, 4059, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6963 | break; | 6964 | break; |
6964 | default: | 6965 | default: |
6965 | dasm_put(Dst, 4067, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); | 6966 | dasm_put(Dst, 4068, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); |
6966 | break; | 6967 | break; |
6967 | } | 6968 | } |
6968 | dasm_put(Dst, 4081); | 6969 | dasm_put(Dst, 4082); |
6969 | break; | 6970 | break; |
6970 | case BC_MULVN: case BC_MULNV: case BC_MULVV: | 6971 | case BC_MULVN: case BC_MULNV: case BC_MULVV: |
6971 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6972 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6972 | dasm_put(Dst, 4098); | 6973 | dasm_put(Dst, 4099); |
6973 | switch (vk) { | 6974 | switch (vk) { |
6974 | case 0: | 6975 | case 0: |
6975 | dasm_put(Dst, 4102, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6976 | dasm_put(Dst, 4103, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6976 | break; | 6977 | break; |
6977 | case 1: | 6978 | case 1: |
6978 | dasm_put(Dst, 4111, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6979 | dasm_put(Dst, 4112, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6979 | break; | 6980 | break; |
6980 | default: | 6981 | default: |
6981 | dasm_put(Dst, 4120, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); | 6982 | dasm_put(Dst, 4121, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); |
6982 | break; | 6983 | break; |
6983 | } | 6984 | } |
6984 | dasm_put(Dst, 4134); | 6985 | dasm_put(Dst, 4135); |
6985 | break; | 6986 | break; |
6986 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: | 6987 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: |
6987 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 6988 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
6988 | dasm_put(Dst, 4151); | 6989 | dasm_put(Dst, 4152); |
6989 | switch (vk) { | 6990 | switch (vk) { |
6990 | case 0: | 6991 | case 0: |
6991 | dasm_put(Dst, 4155, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6992 | dasm_put(Dst, 4156, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6992 | break; | 6993 | break; |
6993 | case 1: | 6994 | case 1: |
6994 | dasm_put(Dst, 4164, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 6995 | dasm_put(Dst, 4165, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
6995 | break; | 6996 | break; |
6996 | default: | 6997 | default: |
6997 | dasm_put(Dst, 4173, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); | 6998 | dasm_put(Dst, 4174, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); |
6998 | break; | 6999 | break; |
6999 | } | 7000 | } |
7000 | dasm_put(Dst, 4187); | 7001 | dasm_put(Dst, 4188); |
7001 | break; | 7002 | break; |
7002 | case BC_MODVN: | 7003 | case BC_MODVN: |
7003 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 7004 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
7004 | dasm_put(Dst, 4204); | 7005 | dasm_put(Dst, 4205); |
7005 | switch (vk) { | 7006 | switch (vk) { |
7006 | case 0: | 7007 | case 0: |
7007 | dasm_put(Dst, 4208, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 7008 | dasm_put(Dst, 4209, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
7008 | break; | 7009 | break; |
7009 | case 1: | 7010 | case 1: |
7010 | dasm_put(Dst, 4217, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 7011 | dasm_put(Dst, 4218, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
7011 | break; | 7012 | break; |
7012 | default: | 7013 | default: |
7013 | dasm_put(Dst, 4226, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); | 7014 | dasm_put(Dst, 4227, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); |
7014 | break; | 7015 | break; |
7015 | } | 7016 | } |
7016 | dasm_put(Dst, 4240); | 7017 | dasm_put(Dst, 4241); |
7017 | break; | 7018 | break; |
7018 | case BC_MODNV: case BC_MODVV: | 7019 | case BC_MODNV: case BC_MODVV: |
7019 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 7020 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
7020 | dasm_put(Dst, 4262); | 7021 | dasm_put(Dst, 4263); |
7021 | switch (vk) { | 7022 | switch (vk) { |
7022 | case 0: | 7023 | case 0: |
7023 | dasm_put(Dst, 4266, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 7024 | dasm_put(Dst, 4267, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
7024 | break; | 7025 | break; |
7025 | case 1: | 7026 | case 1: |
7026 | dasm_put(Dst, 4275, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); | 7027 | dasm_put(Dst, 4276, LJ_ENDIAN_SELECT(4,0), LJ_TISNUM); |
7027 | break; | 7028 | break; |
7028 | default: | 7029 | default: |
7029 | dasm_put(Dst, 4284, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); | 7030 | dasm_put(Dst, 4285, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM); |
7030 | break; | 7031 | break; |
7031 | } | 7032 | } |
7032 | dasm_put(Dst, 4298); | 7033 | dasm_put(Dst, 4299); |
7033 | break; | 7034 | break; |
7034 | case BC_POW: | 7035 | case BC_POW: |
7035 | dasm_put(Dst, 4305, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, DISPATCH_GOT(pow)); | 7036 | dasm_put(Dst, 4306, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, DISPATCH_GOT(pow)); |
7036 | break; | 7037 | break; |
7037 | 7038 | ||
7038 | case BC_CAT: | 7039 | case BC_CAT: |
7039 | dasm_put(Dst, 4341, Dt1(->base), DISPATCH_GOT(lj_meta_cat), Dt1(->base)); | 7040 | dasm_put(Dst, 4342, Dt1(->base), DISPATCH_GOT(lj_meta_cat), Dt1(->base)); |
7040 | break; | 7041 | break; |
7041 | 7042 | ||
7042 | /* -- Constant ops ------------------------------------------------------ */ | 7043 | /* -- Constant ops ------------------------------------------------------ */ |
7043 | 7044 | ||
7044 | case BC_KSTR: | 7045 | case BC_KSTR: |
7045 | dasm_put(Dst, 4376, LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); | 7046 | dasm_put(Dst, 4377, LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); |
7046 | break; | 7047 | break; |
7047 | case BC_KCDATA: | 7048 | case BC_KCDATA: |
7048 | #if LJ_HASFFI | 7049 | #if LJ_HASFFI |
7049 | dasm_put(Dst, 4398, LJ_TCDATA, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); | 7050 | dasm_put(Dst, 4399, LJ_TCDATA, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0)); |
7050 | #endif | 7051 | #endif |
7051 | break; | 7052 | break; |
7052 | case BC_KSHORT: | 7053 | case BC_KSHORT: |
7053 | dasm_put(Dst, 4420); | 7054 | dasm_put(Dst, 4421); |
7054 | break; | 7055 | break; |
7055 | case BC_KNUM: | 7056 | case BC_KNUM: |
7056 | dasm_put(Dst, 4437); | 7057 | dasm_put(Dst, 4438); |
7057 | break; | 7058 | break; |
7058 | case BC_KPRI: | 7059 | case BC_KPRI: |
7059 | dasm_put(Dst, 4453, LJ_ENDIAN_SELECT(4,0)); | 7060 | dasm_put(Dst, 4454, LJ_ENDIAN_SELECT(4,0)); |
7060 | break; | 7061 | break; |
7061 | case BC_KNIL: | 7062 | case BC_KNIL: |
7062 | dasm_put(Dst, 4470, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); | 7063 | dasm_put(Dst, 4471, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); |
7063 | break; | 7064 | break; |
7064 | 7065 | ||
7065 | /* -- Upvalue and function ops ------------------------------------------ */ | 7066 | /* -- Upvalue and function ops ------------------------------------------ */ |
7066 | 7067 | ||
7067 | case BC_UGET: | 7068 | case BC_UGET: |
7068 | dasm_put(Dst, 4494, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); | 7069 | dasm_put(Dst, 4495, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); |
7069 | break; | 7070 | break; |
7070 | case BC_USETV: | 7071 | case BC_USETV: |
7071 | dasm_put(Dst, 4517, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK|1, -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), LJ_ENDIAN_SELECT(0,4), Dt4(->gch.marked), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); | 7072 | dasm_put(Dst, 4518, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK|1, -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), LJ_ENDIAN_SELECT(0,4), Dt4(->gch.marked), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); |
7072 | break; | 7073 | break; |
7073 | case BC_USETS: | 7074 | case BC_USETS: |
7074 | dasm_put(Dst, 4577, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), Dt5(->marked), LJ_GC_BLACK, DtA(->closed), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); | 7075 | dasm_put(Dst, 4578, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->marked), DtA(->v), Dt5(->marked), LJ_GC_BLACK, DtA(->closed), LJ_TSTR, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_GC_WHITES, DISPATCH_GOT(lj_gc_barrieruv), GG_DISP2G); |
7075 | break; | 7076 | break; |
7076 | case BC_USETN: | 7077 | case BC_USETN: |
7077 | dasm_put(Dst, 4632, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); | 7078 | dasm_put(Dst, 4633, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v)); |
7078 | break; | 7079 | break; |
7079 | case BC_USETP: | 7080 | case BC_USETP: |
7080 | dasm_put(Dst, 4655, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v), LJ_ENDIAN_SELECT(4,0)); | 7081 | dasm_put(Dst, 4656, LJ_ENDIAN_SELECT(-8,-4), Dt7(->uvptr), DtA(->v), LJ_ENDIAN_SELECT(4,0)); |
7081 | break; | 7082 | break; |
7082 | 7083 | ||
7083 | case BC_UCLO: | 7084 | case BC_UCLO: |
7084 | dasm_put(Dst, 4679, Dt1(->openupval), (-(BCBIAS_J*4 >> 16) & 65535), DISPATCH_GOT(lj_func_closeuv), Dt1(->base), Dt1(->base)); | 7085 | dasm_put(Dst, 4680, Dt1(->openupval), (-(BCBIAS_J*4 >> 16) & 65535), DISPATCH_GOT(lj_func_closeuv), Dt1(->base), Dt1(->base)); |
7085 | break; | 7086 | break; |
7086 | 7087 | ||
7087 | case BC_FNEW: | 7088 | case BC_FNEW: |
7088 | dasm_put(Dst, 4710, DISPATCH_GOT(lj_func_newL_gc), LJ_ENDIAN_SELECT(-8,-4), Dt1(->base), Dt1(->base), LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); | 7089 | dasm_put(Dst, 4711, DISPATCH_GOT(lj_func_newL_gc), LJ_ENDIAN_SELECT(-8,-4), Dt1(->base), Dt1(->base), LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); |
7089 | break; | 7090 | break; |
7090 | 7091 | ||
7091 | /* -- Table ops --------------------------------------------------------- */ | 7092 | /* -- Table ops --------------------------------------------------------- */ |
7092 | 7093 | ||
7093 | case BC_TNEW: | 7094 | case BC_TNEW: |
7094 | case BC_TDUP: | 7095 | case BC_TDUP: |
7095 | dasm_put(Dst, 4743, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); | 7096 | dasm_put(Dst, 4744, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); |
7096 | if (op == BC_TNEW) { | 7097 | if (op == BC_TNEW) { |
7097 | dasm_put(Dst, 4755, DISPATCH_GOT(lj_tab_new)); | 7098 | dasm_put(Dst, 4756, DISPATCH_GOT(lj_tab_new)); |
7098 | } else { | 7099 | } else { |
7099 | dasm_put(Dst, 4766, DISPATCH_GOT(lj_tab_dup)); | 7100 | dasm_put(Dst, 4767, DISPATCH_GOT(lj_tab_dup)); |
7100 | } | 7101 | } |
7101 | dasm_put(Dst, 4774, Dt1(->base), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(lj_gc_step_fixtop)); | 7102 | dasm_put(Dst, 4775, Dt1(->base), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), DISPATCH_GOT(lj_gc_step_fixtop)); |
7102 | break; | 7103 | break; |
7103 | 7104 | ||
7104 | case BC_GGET: | 7105 | case BC_GGET: |
7105 | case BC_GSET: | 7106 | case BC_GSET: |
7106 | dasm_put(Dst, 4804, LJ_ENDIAN_SELECT(-8,-4), Dt7(->env)); | 7107 | dasm_put(Dst, 4805, LJ_ENDIAN_SELECT(-8,-4), Dt7(->env)); |
7107 | if (op == BC_GGET) { | 7108 | if (op == BC_GGET) { |
7108 | dasm_put(Dst, 4812); | 7109 | dasm_put(Dst, 4813); |
7109 | } else { | 7110 | } else { |
7110 | dasm_put(Dst, 4815); | 7111 | dasm_put(Dst, 4816); |
7111 | } | 7112 | } |
7112 | dasm_put(Dst, 4818); | 7113 | dasm_put(Dst, 4819); |
7113 | break; | 7114 | break; |
7114 | 7115 | ||
7115 | case BC_TGETV: | 7116 | case BC_TGETV: |
7116 | dasm_put(Dst, 4820, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 7117 | dasm_put(Dst, 4821, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
7117 | dasm_put(Dst, 4895, LJ_ENDIAN_SELECT(0,4)); | 7118 | dasm_put(Dst, 4896, LJ_ENDIAN_SELECT(0,4)); |
7118 | break; | 7119 | break; |
7119 | case BC_TGETS: | 7120 | case BC_TGETS: |
7120 | dasm_put(Dst, 4901, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), -LJ_TSTR, Dt6(->metatable), offsetof(Node, val)+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); | 7121 | dasm_put(Dst, 4902, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), -LJ_TSTR, Dt6(->metatable), offsetof(Node, val)+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); |
7121 | dasm_put(Dst, 4970, LJ_TNIL, Dt6(->nomm), 1<<MM_index); | 7122 | dasm_put(Dst, 4971, LJ_TNIL, Dt6(->nomm), 1<<MM_index); |
7122 | break; | 7123 | break; |
7123 | case BC_TGETB: | 7124 | case BC_TGETB: |
7124 | dasm_put(Dst, 4987, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 7125 | dasm_put(Dst, 4988, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
7125 | break; | 7126 | break; |
7126 | 7127 | ||
7127 | case BC_TSETV: | 7128 | case BC_TSETV: |
7128 | dasm_put(Dst, 5044, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); | 7129 | dasm_put(Dst, 5045, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_TTAB, LJ_TISNUM, LJ_TSTR, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_ENDIAN_SELECT(4,0), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex); |
7129 | dasm_put(Dst, 5117, LJ_ENDIAN_SELECT(0,4), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 7130 | dasm_put(Dst, 5118, LJ_ENDIAN_SELECT(0,4), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
7130 | break; | 7131 | break; |
7131 | case BC_TSETS: | 7132 | case BC_TSETS: |
7132 | dasm_put(Dst, 5145, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), Dt6(->marked), Dt6(->metatable), LJ_GC_BLACK); | 7133 | dasm_put(Dst, 5146, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), offsetof(Node, key)+LJ_ENDIAN_SELECT(4,0), offsetof(Node, key)+LJ_ENDIAN_SELECT(0,4), LJ_TSTR, DtB(->next), offsetof(Node, val)+LJ_ENDIAN_SELECT(4,0), Dt6(->marked), Dt6(->metatable), LJ_GC_BLACK); |
7133 | dasm_put(Dst, 5203, DtB(->val), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, DISPATCH_GOT(lj_tab_newkey), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), Dt1(->base), Dt1(->base)); | 7134 | dasm_put(Dst, 5204, DtB(->val), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR, DISPATCH_GOT(lj_tab_newkey), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), Dt1(->base), Dt1(->base)); |
7134 | dasm_put(Dst, 5265, DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 7135 | dasm_put(Dst, 5266, DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
7135 | break; | 7136 | break; |
7136 | case BC_TSETB: | 7137 | case BC_TSETB: |
7137 | dasm_put(Dst, 5282, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); | 7138 | dasm_put(Dst, 5283, LJ_ENDIAN_SELECT(4,0), LJ_TTAB, LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), Dt6(->marked), LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); |
7138 | dasm_put(Dst, 5349, ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 7139 | dasm_put(Dst, 5350, ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
7139 | break; | 7140 | break; |
7140 | 7141 | ||
7141 | case BC_TSETM: | 7142 | case BC_TSETM: |
7142 | dasm_put(Dst, 5360, -8+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->marked), Dt6(->array), LJ_GC_BLACK, DISPATCH_GOT(lj_tab_reasize), Dt1(->base), Dt1(->base), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked)); | 7143 | dasm_put(Dst, 5361, -8+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->marked), Dt6(->array), LJ_GC_BLACK, DISPATCH_GOT(lj_tab_reasize), Dt1(->base), Dt1(->base), DISPATCH_GL(gc.grayagain), ~LJ_GC_BLACK & 255, DISPATCH_GL(gc.grayagain), Dt6(->marked)); |
7143 | dasm_put(Dst, 5433, Dt6(->gclist)); | 7144 | dasm_put(Dst, 5434, Dt6(->gclist)); |
7144 | break; | 7145 | break; |
7145 | 7146 | ||
7146 | /* -- Calls and vararg handling ----------------------------------------- */ | 7147 | /* -- Calls and vararg handling ----------------------------------------- */ |
7147 | 7148 | ||
7148 | case BC_CALLM: | 7149 | case BC_CALLM: |
7149 | dasm_put(Dst, 5438); | 7150 | dasm_put(Dst, 5439); |
7150 | break; | 7151 | break; |
7151 | case BC_CALL: | 7152 | case BC_CALL: |
7152 | dasm_put(Dst, 5443, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); | 7153 | dasm_put(Dst, 5444, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); |
7153 | break; | 7154 | break; |
7154 | 7155 | ||
7155 | case BC_CALLMT: | 7156 | case BC_CALLMT: |
7156 | dasm_put(Dst, 5472); | 7157 | dasm_put(Dst, 5473); |
7157 | break; | 7158 | break; |
7158 | case BC_CALLT: | 7159 | case BC_CALLT: |
7159 | dasm_put(Dst, 5474, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, Dt7(->ffid), FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), -8+LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc)); | 7160 | dasm_put(Dst, 5475, LJ_TFUNC, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, Dt7(->ffid), FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), -8+LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc)); |
7160 | dasm_put(Dst, 5543, PC2PROTO(k), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE); | 7161 | dasm_put(Dst, 5544, PC2PROTO(k), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE); |
7161 | break; | 7162 | break; |
7162 | 7163 | ||
7163 | case BC_ITERC: | 7164 | case BC_ITERC: |
7164 | dasm_put(Dst, 5559, LJ_TFUNC, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); | 7165 | dasm_put(Dst, 5560, LJ_TFUNC, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(-4,-8), Dt7(->pc)); |
7165 | break; | 7166 | break; |
7166 | 7167 | ||
7167 | case BC_ITERN: | 7168 | case BC_ITERN: |
7168 | #if LJ_HASJIT | 7169 | #if LJ_HASJIT |
7169 | #endif | 7170 | #endif |
7170 | dasm_put(Dst, 5594, -16+LJ_ENDIAN_SELECT(0,4), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt6(->node), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), DtB(->key), (-(BCBIAS_J*4 >> 16) & 65535)); | 7171 | dasm_put(Dst, 5595, -16+LJ_ENDIAN_SELECT(0,4), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->asize), Dt6(->array), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), Dt6(->hmask), Dt6(->node), LJ_ENDIAN_SELECT(4,0), -4+LJ_ENDIAN_SELECT(2,0), DtB(->key), (-(BCBIAS_J*4 >> 16) & 65535)); |
7171 | dasm_put(Dst, 5676, -8+LJ_ENDIAN_SELECT(0,4)); | 7172 | dasm_put(Dst, 5677, -8+LJ_ENDIAN_SELECT(0,4)); |
7172 | break; | 7173 | break; |
7173 | 7174 | ||
7174 | case BC_ISNEXT: | 7175 | case BC_ISNEXT: |
7175 | dasm_put(Dst, 5679, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), -16+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(4,0), LJ_TFUNC, -LJ_TTAB, Dt8(->ffid), -LJ_TNIL, -FF_next_N, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), BC_JMP, BC_ITERC, -4+LJ_ENDIAN_SELECT(0,3), LJ_ENDIAN_SELECT(0,3)); | 7176 | dasm_put(Dst, 5680, -24+LJ_ENDIAN_SELECT(4,0), -24+LJ_ENDIAN_SELECT(0,4), -16+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(4,0), LJ_TFUNC, -LJ_TTAB, Dt8(->ffid), -LJ_TNIL, -FF_next_N, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(0,4), BC_JMP, BC_ITERC, -4+LJ_ENDIAN_SELECT(0,3), LJ_ENDIAN_SELECT(0,3)); |
7176 | break; | 7177 | break; |
7177 | 7178 | ||
7178 | case BC_VARG: | 7179 | case BC_VARG: |
7179 | dasm_put(Dst, 5736, LJ_ENDIAN_SELECT(-4,-8), FRAME_VARG, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), Dt1(->maxstack), DISPATCH_GOT(lj_state_growstack), Dt1(->top), Dt1(->base), Dt1(->base)); | 7180 | dasm_put(Dst, 5737, LJ_ENDIAN_SELECT(-4,-8), FRAME_VARG, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), Dt1(->maxstack), DISPATCH_GOT(lj_state_growstack), Dt1(->top), Dt1(->base), Dt1(->base)); |
7180 | dasm_put(Dst, 5823); | 7181 | dasm_put(Dst, 5824); |
7181 | break; | 7182 | break; |
7182 | 7183 | ||
7183 | /* -- Returns ----------------------------------------------------------- */ | 7184 | /* -- Returns ----------------------------------------------------------- */ |
7184 | 7185 | ||
7185 | case BC_RETM: | 7186 | case BC_RETM: |
7186 | dasm_put(Dst, 5825); | 7187 | dasm_put(Dst, 5826); |
7187 | break; | 7188 | break; |
7188 | 7189 | ||
7189 | case BC_RET: | 7190 | case BC_RET: |
7190 | dasm_put(Dst, 5827, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8)); | 7191 | dasm_put(Dst, 5828, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), FRAME_TYPEP, LJ_ENDIAN_SELECT(-4,-8)); |
7191 | break; | 7192 | break; |
7192 | 7193 | ||
7193 | case BC_RET0: case BC_RET1: | 7194 | case BC_RET0: case BC_RET1: |
7194 | dasm_put(Dst, 5899, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG); | 7195 | dasm_put(Dst, 5900, LJ_ENDIAN_SELECT(-4,-8), FRAME_TYPE, FRAME_VARG); |
7195 | if (op == BC_RET1) { | 7196 | if (op == BC_RET1) { |
7196 | dasm_put(Dst, 5912); | 7197 | dasm_put(Dst, 5913); |
7197 | } | 7198 | } |
7198 | dasm_put(Dst, 5914); | 7199 | dasm_put(Dst, 5915); |
7199 | if (op == BC_RET1) { | 7200 | if (op == BC_RET1) { |
7200 | dasm_put(Dst, 5919); | 7201 | dasm_put(Dst, 5920); |
7201 | } | 7202 | } |
7202 | dasm_put(Dst, 5921, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k)); | 7203 | dasm_put(Dst, 5922, LJ_ENDIAN_SELECT(-8,-4), Dt7(->pc), PC2PROTO(k)); |
7203 | if (op == BC_RET1) { | 7204 | if (op == BC_RET1) { |
7204 | dasm_put(Dst, 5949, LJ_ENDIAN_SELECT(4,0)); | 7205 | dasm_put(Dst, 5950, LJ_ENDIAN_SELECT(4,0)); |
7205 | } else { | 7206 | } else { |
7206 | dasm_put(Dst, 5952, -8+LJ_ENDIAN_SELECT(4,0)); | 7207 | dasm_put(Dst, 5953, -8+LJ_ENDIAN_SELECT(4,0)); |
7207 | } | 7208 | } |
7208 | break; | 7209 | break; |
7209 | 7210 | ||
@@ -7211,7 +7212,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7211 | 7212 | ||
7212 | case BC_FORL: | 7213 | case BC_FORL: |
7213 | #if LJ_HASJIT | 7214 | #if LJ_HASJIT |
7214 | dasm_put(Dst, 5955, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); | 7215 | dasm_put(Dst, 5956, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); |
7215 | #endif | 7216 | #endif |
7216 | break; | 7217 | break; |
7217 | 7218 | ||
@@ -7223,35 +7224,35 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7223 | case BC_FORI: | 7224 | case BC_FORI: |
7224 | case BC_IFORL: | 7225 | case BC_IFORL: |
7225 | vk = (op == BC_IFORL || op == BC_JFORL); | 7226 | vk = (op == BC_IFORL || op == BC_JFORL); |
7226 | dasm_put(Dst, 5967); | 7227 | dasm_put(Dst, 5968); |
7227 | if (vk) { | 7228 | if (vk) { |
7228 | dasm_put(Dst, 5969, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_IDX*8); | 7229 | dasm_put(Dst, 5970, FORL_IDX*8, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_IDX*8); |
7229 | } else { | 7230 | } else { |
7230 | dasm_put(Dst, 5981, FORL_IDX*8+LJ_ENDIAN_SELECT(4,0), FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_STOP*8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_TISNUM, FORL_IDX*8, FORL_STOP*8); | 7231 | dasm_put(Dst, 5982, FORL_IDX*8+LJ_ENDIAN_SELECT(4,0), FORL_STEP*8+LJ_ENDIAN_SELECT(4,0), FORL_STOP*8+LJ_ENDIAN_SELECT(4,0), LJ_TISNUM, LJ_TISNUM, LJ_TISNUM, FORL_IDX*8, FORL_STOP*8); |
7231 | } | 7232 | } |
7232 | if (op != BC_JFORL) { | 7233 | if (op != BC_JFORL) { |
7233 | dasm_put(Dst, 6002, (-(BCBIAS_J*4 >> 16) & 65535)); | 7234 | dasm_put(Dst, 6003, (-(BCBIAS_J*4 >> 16) & 65535)); |
7234 | } | 7235 | } |
7235 | dasm_put(Dst, 6006, FORL_EXT*8); | 7236 | dasm_put(Dst, 6007, FORL_EXT*8); |
7236 | if (op == BC_JFORI) { | 7237 | if (op == BC_JFORI) { |
7237 | dasm_put(Dst, 6011, -4+LJ_ENDIAN_SELECT(2,0), BC_JLOOP); | 7238 | dasm_put(Dst, 6012, -4+LJ_ENDIAN_SELECT(2,0), BC_JLOOP); |
7238 | } else if (op == BC_JFORL) { | 7239 | } else if (op == BC_JFORL) { |
7239 | dasm_put(Dst, 6025, BC_JLOOP); | 7240 | dasm_put(Dst, 6026, BC_JLOOP); |
7240 | } else { | 7241 | } else { |
7241 | dasm_put(Dst, 6035); | 7242 | dasm_put(Dst, 6036); |
7242 | if (op == BC_FORI) { | 7243 | if (op == BC_FORI) { |
7243 | dasm_put(Dst, 6039); | 7244 | dasm_put(Dst, 6040); |
7244 | } else { | 7245 | } else { |
7245 | dasm_put(Dst, 6042); | 7246 | dasm_put(Dst, 6043); |
7246 | } | 7247 | } |
7247 | dasm_put(Dst, 6045); | 7248 | dasm_put(Dst, 6046); |
7248 | } | 7249 | } |
7249 | dasm_put(Dst, 6048); | 7250 | dasm_put(Dst, 6049); |
7250 | break; | 7251 | break; |
7251 | 7252 | ||
7252 | case BC_ITERL: | 7253 | case BC_ITERL: |
7253 | #if LJ_HASJIT | 7254 | #if LJ_HASJIT |
7254 | dasm_put(Dst, 6060, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); | 7255 | dasm_put(Dst, 6061, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); |
7255 | #endif | 7256 | #endif |
7256 | break; | 7257 | break; |
7257 | 7258 | ||
@@ -7260,40 +7261,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7260 | break; | 7261 | break; |
7261 | #endif | 7262 | #endif |
7262 | case BC_IITERL: | 7263 | case BC_IITERL: |
7263 | dasm_put(Dst, 6072, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); | 7264 | dasm_put(Dst, 6073, LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4)); |
7264 | if (op == BC_JITERL) { | 7265 | if (op == BC_JITERL) { |
7265 | dasm_put(Dst, 6080, -8+LJ_ENDIAN_SELECT(4,0), BC_JLOOP, -8+LJ_ENDIAN_SELECT(0,4)); | 7266 | dasm_put(Dst, 6081, -8+LJ_ENDIAN_SELECT(4,0), BC_JLOOP, -8+LJ_ENDIAN_SELECT(0,4)); |
7266 | } else { | 7267 | } else { |
7267 | dasm_put(Dst, 6087, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(0,4)); | 7268 | dasm_put(Dst, 6088, (-(BCBIAS_J*4 >> 16) & 65535), -8+LJ_ENDIAN_SELECT(4,0), -8+LJ_ENDIAN_SELECT(0,4)); |
7268 | } | 7269 | } |
7269 | dasm_put(Dst, 6097); | 7270 | dasm_put(Dst, 6098); |
7270 | break; | 7271 | break; |
7271 | 7272 | ||
7272 | case BC_LOOP: | 7273 | case BC_LOOP: |
7273 | #if LJ_HASJIT | 7274 | #if LJ_HASJIT |
7274 | dasm_put(Dst, 6110, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); | 7275 | dasm_put(Dst, 6111, GG_DISP2HOT, -HOTCOUNT_LOOP, GG_DISP2HOT); |
7275 | #endif | 7276 | #endif |
7276 | break; | 7277 | break; |
7277 | 7278 | ||
7278 | case BC_ILOOP: | 7279 | case BC_ILOOP: |
7279 | dasm_put(Dst, 6122); | 7280 | dasm_put(Dst, 6123); |
7280 | break; | 7281 | break; |
7281 | 7282 | ||
7282 | case BC_JLOOP: | 7283 | case BC_JLOOP: |
7283 | #if LJ_HASJIT | 7284 | #if LJ_HASJIT |
7284 | dasm_put(Dst, 6134, DISPATCH_J(trace), DISPATCH_GL(vmstate), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), DtD(->mcode), GG_DISP2G+32768); | 7285 | dasm_put(Dst, 6135, DISPATCH_J(trace), DISPATCH_GL(vmstate), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), DtD(->mcode), GG_DISP2G+32768); |
7285 | #endif | 7286 | #endif |
7286 | break; | 7287 | break; |
7287 | 7288 | ||
7288 | case BC_JMP: | 7289 | case BC_JMP: |
7289 | dasm_put(Dst, 6152, (-(BCBIAS_J*4 >> 16) & 65535)); | 7290 | dasm_put(Dst, 6153, (-(BCBIAS_J*4 >> 16) & 65535)); |
7290 | break; | 7291 | break; |
7291 | 7292 | ||
7292 | /* -- Function headers -------------------------------------------------- */ | 7293 | /* -- Function headers -------------------------------------------------- */ |
7293 | 7294 | ||
7294 | case BC_FUNCF: | 7295 | case BC_FUNCF: |
7295 | #if LJ_HASJIT | 7296 | #if LJ_HASJIT |
7296 | dasm_put(Dst, 6169, GG_DISP2HOT, -HOTCOUNT_CALL, GG_DISP2HOT); | 7297 | dasm_put(Dst, 6170, GG_DISP2HOT, -HOTCOUNT_CALL, GG_DISP2HOT); |
7297 | #endif | 7298 | #endif |
7298 | case BC_FUNCV: /* NYI: compiled vararg functions. */ | 7299 | case BC_FUNCV: /* NYI: compiled vararg functions. */ |
7299 | break; | 7300 | break; |
@@ -7303,42 +7304,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
7303 | break; | 7304 | break; |
7304 | #endif | 7305 | #endif |
7305 | case BC_IFUNCF: | 7306 | case BC_IFUNCF: |
7306 | dasm_put(Dst, 6181, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); | 7307 | dasm_put(Dst, 6182, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k)); |
7307 | if (op != BC_JFUNCF) { | 7308 | if (op != BC_JFUNCF) { |
7308 | dasm_put(Dst, 6192); | 7309 | dasm_put(Dst, 6193); |
7309 | } | 7310 | } |
7310 | dasm_put(Dst, 6195); | 7311 | dasm_put(Dst, 6196); |
7311 | if (op == BC_JFUNCF) { | 7312 | if (op == BC_JFUNCF) { |
7312 | dasm_put(Dst, 6201, BC_JLOOP); | 7313 | dasm_put(Dst, 6202, BC_JLOOP); |
7313 | } else { | 7314 | } else { |
7314 | dasm_put(Dst, 6206); | 7315 | dasm_put(Dst, 6207); |
7315 | } | 7316 | } |
7316 | dasm_put(Dst, 6216, LJ_ENDIAN_SELECT(4,0)); | 7317 | dasm_put(Dst, 6217, LJ_ENDIAN_SELECT(4,0)); |
7317 | break; | 7318 | break; |
7318 | 7319 | ||
7319 | case BC_JFUNCV: | 7320 | case BC_JFUNCV: |
7320 | #if !LJ_HASJIT | 7321 | #if !LJ_HASJIT |
7321 | break; | 7322 | break; |
7322 | #endif | 7323 | #endif |
7323 | dasm_put(Dst, 6223); | 7324 | dasm_put(Dst, 6224); |
7324 | break; /* NYI: compiled vararg functions. */ | 7325 | break; /* NYI: compiled vararg functions. */ |
7325 | 7326 | ||
7326 | case BC_IFUNCV: | 7327 | case BC_IFUNCV: |
7327 | dasm_put(Dst, 6225, Dt1(->maxstack), LJ_ENDIAN_SELECT(0,4), 8+FRAME_VARG, -4+PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), -4+PC2PROTO(numparams), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); | 7328 | dasm_put(Dst, 6226, Dt1(->maxstack), LJ_ENDIAN_SELECT(0,4), 8+FRAME_VARG, -4+PC2PROTO(k), LJ_ENDIAN_SELECT(4,0), -4+PC2PROTO(numparams), LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(0,4), 8+LJ_ENDIAN_SELECT(4,0), LJ_ENDIAN_SELECT(4,0)); |
7328 | break; | 7329 | break; |
7329 | 7330 | ||
7330 | case BC_FUNCC: | 7331 | case BC_FUNCC: |
7331 | case BC_FUNCCW: | 7332 | case BC_FUNCCW: |
7332 | if (op == BC_FUNCC) { | 7333 | if (op == BC_FUNCC) { |
7333 | dasm_put(Dst, 6280, Dt8(->f)); | 7334 | dasm_put(Dst, 6281, Dt8(->f)); |
7334 | } else { | 7335 | } else { |
7335 | dasm_put(Dst, 6283, DISPATCH_GL(wrapf)); | 7336 | dasm_put(Dst, 6284, DISPATCH_GL(wrapf)); |
7336 | } | 7337 | } |
7337 | dasm_put(Dst, 6286, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); | 7338 | dasm_put(Dst, 6287, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); |
7338 | if (op == BC_FUNCCW) { | 7339 | if (op == BC_FUNCCW) { |
7339 | dasm_put(Dst, 6298, Dt8(->f)); | 7340 | dasm_put(Dst, 6299, Dt8(->f)); |
7340 | } | 7341 | } |
7341 | dasm_put(Dst, 6301, DISPATCH_GL(vmstate), Dt1(->base), Dt1(->top), ~LJ_VMST_INTERP, LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(vmstate)); | 7342 | dasm_put(Dst, 6302, DISPATCH_GL(vmstate), Dt1(->base), Dt1(->top), ~LJ_VMST_INTERP, LJ_ENDIAN_SELECT(-4,-8), DISPATCH_GL(vmstate)); |
7342 | break; | 7343 | break; |
7343 | 7344 | ||
7344 | /* ---------------------------------------------------------------------- */ | 7345 | /* ---------------------------------------------------------------------- */ |
@@ -7358,7 +7359,7 @@ static int build_backend(BuildCtx *ctx) | |||
7358 | 7359 | ||
7359 | build_subroutines(ctx); | 7360 | build_subroutines(ctx); |
7360 | 7361 | ||
7361 | dasm_put(Dst, 6322); | 7362 | dasm_put(Dst, 6323); |
7362 | for (op = 0; op < BC__MAX; op++) | 7363 | for (op = 0; op < BC__MAX; op++) |
7363 | build_ins(ctx, (BCOp)op, op); | 7364 | build_ins(ctx, (BCOp)op, op); |
7364 | 7365 | ||
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 027e75b0..49f92d0a 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
@@ -2189,6 +2189,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
2189 | | bne >3 | 2189 | | bne >3 |
2190 | | lwz INS, -4(PC) | 2190 | | lwz INS, -4(PC) |
2191 | | decode_RA8 TMP1, INS | 2191 | | decode_RA8 TMP1, INS |
2192 | | addi TMP1, TMP1, 8 | ||
2192 | |3: | 2193 | |3: |
2193 | | sub TMP2, BASE, TMP1 | 2194 | | sub TMP2, BASE, TMP1 |
2194 | | b ->vm_call_dispatch // Resolve again for tailcall. | 2195 | | b ->vm_call_dispatch // Resolve again for tailcall. |
diff --git a/src/buildvm_ppc.h b/src/buildvm_ppc.h index 81285d63..ce0941ec 100644 --- a/src/buildvm_ppc.h +++ b/src/buildvm_ppc.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #define DASM_SECTION_CODE_OP 0 | 12 | #define DASM_SECTION_CODE_OP 0 |
13 | #define DASM_SECTION_CODE_SUB 1 | 13 | #define DASM_SECTION_CODE_SUB 1 |
14 | #define DASM_MAXSECTION 2 | 14 | #define DASM_MAXSECTION 2 |
15 | static const unsigned int build_actionlist[7762] = { | 15 | static const unsigned int build_actionlist[7763] = { |
16 | 0x00010001, | 16 | 0x00010001, |
17 | 0x00060014, | 17 | 0x00060014, |
18 | 0x72000000, | 18 | 0x72000000, |
@@ -3624,6 +3624,7 @@ static const unsigned int build_actionlist[7762] = { | |||
3624 | 0x00050803, | 3624 | 0x00050803, |
3625 | 0x80f0fffc, | 3625 | 0x80f0fffc, |
3626 | 0x54e8dd78, | 3626 | 0x54e8dd78, |
3627 | 0x39080008, | ||
3627 | 0x0006000d, | 3628 | 0x0006000d, |
3628 | 0x7d287050, | 3629 | 0x7d287050, |
3629 | 0x48000000, | 3630 | 0x48000000, |
@@ -8512,59 +8513,59 @@ static void build_subroutines(BuildCtx *ctx) | |||
8512 | dasm_put(Dst, 3550); | 8513 | dasm_put(Dst, 3550); |
8513 | } | 8514 | } |
8514 | dasm_put(Dst, 3558, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); | 8515 | dasm_put(Dst, 3558, Dt8(->f), 8*LUA_MINSTACK, Dt1(->maxstack), Dt1(->base), Dt1(->top), Dt1(->base), 31-3, Dt1(->top), Dt7(->pc), FRAME_TYPE, LUA_MINSTACK); |
8515 | dasm_put(Dst, 3621, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); | 8516 | dasm_put(Dst, 3622, Dt1(->base), Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); |
8516 | #if LJ_HASJIT | 8517 | #if LJ_HASJIT |
8517 | dasm_put(Dst, 3647, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); | 8518 | dasm_put(Dst, 3648, DISPATCH_GL(hookmask), HOOK_VMEVENT, DISPATCH_GL(hookcount), HOOK_ACTIVE, LUA_MASKLINE|LUA_MASKCOUNT, DISPATCH_GL(hookcount)); |
8518 | #endif | 8519 | #endif |
8519 | dasm_put(Dst, 3669, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); | 8520 | dasm_put(Dst, 3670, DISPATCH_GL(hookmask), HOOK_ACTIVE, GG_DISP2STATIC, DISPATCH_GL(hookmask), DISPATCH_GL(hookcount), HOOK_ACTIVE, 31-LUA_HOOKLINE, DISPATCH_GL(hookcount), Dt1(->base), Dt1(->base)); |
8520 | dasm_put(Dst, 3716, GG_DISP2STATIC); | 8521 | dasm_put(Dst, 3717, GG_DISP2STATIC); |
8521 | #if LJ_HASJIT | 8522 | #if LJ_HASJIT |
8522 | dasm_put(Dst, 3734, GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), 31-3, Dt1(->top)); | 8523 | dasm_put(Dst, 3735, GG_DISP2J, Dt7(->pc), DISPATCH_J(L), PC2PROTO(framesize), Dt1(->base), 31-3, Dt1(->top)); |
8523 | #endif | 8524 | #endif |
8524 | dasm_put(Dst, 3757); | 8525 | dasm_put(Dst, 3758); |
8525 | #if LJ_HASJIT | 8526 | #if LJ_HASJIT |
8526 | dasm_put(Dst, 3760); | 8527 | dasm_put(Dst, 3761); |
8527 | #endif | 8528 | #endif |
8528 | dasm_put(Dst, 3763); | 8529 | dasm_put(Dst, 3764); |
8529 | #if LJ_HASJIT | 8530 | #if LJ_HASJIT |
8530 | dasm_put(Dst, 3765); | 8531 | dasm_put(Dst, 3766); |
8531 | #endif | 8532 | #endif |
8532 | dasm_put(Dst, 3768, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); | 8533 | dasm_put(Dst, 3769, Dt1(->base), Dt1(->top), Dt1(->base), Dt1(->top)); |
8533 | #if LJ_HASJIT | 8534 | #if LJ_HASJIT |
8534 | dasm_put(Dst, 3791, -(16+32*8+32*4), 16+32*8+2*4, -GG_DISP2G-32768, ~LJ_VMST_EXIT, 16+32*8+32*4, DISPATCH_GL(vmstate), 16+0*8, 16+1*8, 16+2*8, 16+3*8, 16+4*8, 16+5*8, 16+6*8, 16+7*8, 16+32*8+32*4, 16+8*8, 16+9*8, 16+10*8, 16+11*8, 16+32*8+1*4, 16+12*8, 16+13*8); | 8535 | dasm_put(Dst, 3792, -(16+32*8+32*4), 16+32*8+2*4, -GG_DISP2G-32768, ~LJ_VMST_EXIT, 16+32*8+32*4, DISPATCH_GL(vmstate), 16+0*8, 16+1*8, 16+2*8, 16+3*8, 16+4*8, 16+5*8, 16+6*8, 16+7*8, 16+32*8+32*4, 16+8*8, 16+9*8, 16+10*8, 16+11*8, 16+32*8+1*4, 16+12*8, 16+13*8); |
8535 | dasm_put(Dst, 3838, 16+14*8, 16+15*8, 16+16*8, 16+17*8, 16+18*8, 16+19*8, 16+32*8+0*4, 16+20*8, 16+21*8, 16+22*8, 16+23*8, 16+24*8, 16+25*8, 16+26*8, 16+27*8, DISPATCH_GL(jit_L), 16+28*8, 16+29*8, 16+30*8, 16+31*8, DISPATCH_GL(jit_base), 32-2); | 8536 | dasm_put(Dst, 3839, 16+14*8, 16+15*8, 16+16*8, 16+17*8, 16+18*8, 16+19*8, 16+32*8+0*4, 16+20*8, 16+21*8, 16+22*8, 16+23*8, 16+24*8, 16+25*8, 16+26*8, 16+27*8, DISPATCH_GL(jit_L), 16+28*8, 16+29*8, 16+30*8, 16+31*8, DISPATCH_GL(jit_base), 32-2); |
8536 | dasm_put(Dst, 3887, DISPATCH_J(L), DISPATCH_GL(jit_L), DISPATCH_J(parent), Dt1(->base), GG_DISP2J, DISPATCH_J(exitno), Dt1(->cframe), Dt1(->base)); | 8537 | dasm_put(Dst, 3888, DISPATCH_J(L), DISPATCH_GL(jit_L), DISPATCH_J(parent), Dt1(->base), GG_DISP2J, DISPATCH_J(exitno), Dt1(->cframe), Dt1(->base)); |
8537 | #endif | 8538 | #endif |
8538 | dasm_put(Dst, 3915); | 8539 | dasm_put(Dst, 3916); |
8539 | #if LJ_HASJIT | 8540 | #if LJ_HASJIT |
8540 | dasm_put(Dst, 3917, -GG_DISP2G-32768, 31-3, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), LJ_TISNUM, LJ_TNIL, DISPATCH_GL(vmstate), BC_FUNCF*4); | 8541 | dasm_put(Dst, 3918, -GG_DISP2G-32768, 31-3, Dt7(->pc), DISPATCH_GL(jit_L), PC2PROTO(k), LJ_TISNUM, LJ_TNIL, DISPATCH_GL(vmstate), BC_FUNCF*4); |
8541 | #endif | 8542 | #endif |
8542 | dasm_put(Dst, 3974); | 8543 | dasm_put(Dst, 3975); |
8543 | #if LJ_HASJIT | 8544 | #if LJ_HASJIT |
8544 | dasm_put(Dst, 3982); | 8545 | dasm_put(Dst, 3983); |
8545 | #endif | 8546 | #endif |
8546 | dasm_put(Dst, 3985); | 8547 | dasm_put(Dst, 3986); |
8547 | #if LJ_HASJIT | 8548 | #if LJ_HASJIT |
8548 | dasm_put(Dst, 4065); | 8549 | dasm_put(Dst, 4066); |
8549 | #else | 8550 | #else |
8550 | dasm_put(Dst, 4087); | 8551 | dasm_put(Dst, 4088); |
8551 | #endif | 8552 | #endif |
8552 | dasm_put(Dst, 4089); | 8553 | dasm_put(Dst, 4090); |
8553 | #if LJ_HASFFI | 8554 | #if LJ_HASFFI |
8554 | #define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) | 8555 | #define DtE(_V) (int)(ptrdiff_t)&(((CTState *)0)_V) |
8555 | dasm_put(Dst, 4113, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8); | 8556 | dasm_put(Dst, 4114, 56+(14-14)*4, 128+(14-14)*8, 56+(15-14)*4, 128+(15-14)*8, 56+(16-14)*4, 128+(16-14)*8, 56+(17-14)*4, 128+(17-14)*8, 56+(18-14)*4, 128+(18-14)*8, 56+(19-14)*4, 128+(19-14)*8, 56+(20-14)*4, 128+(20-14)*8, 56+(21-14)*4, 128+(21-14)*8, 56+(22-14)*4, 128+(22-14)*8, 56+(23-14)*4, 128+(23-14)*8, 56+(24-14)*4, 128+(24-14)*8); |
8556 | dasm_put(Dst, 4161, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1]), DtE(->cb.gpr[2])); | 8557 | dasm_put(Dst, 4162, 56+(25-14)*4, 128+(25-14)*8, 56+(26-14)*4, 128+(26-14)*8, 56+(27-14)*4, 128+(27-14)*8, 56+(28-14)*4, 128+(28-14)*8, 56+(29-14)*4, 128+(29-14)*8, 56+(30-14)*4, 128+(30-14)*8, 56+(31-14)*4, 128+(31-14)*8, Dt2(->ctype_state), GG_G2DISP, DtE(->cb.slot), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1]), DtE(->cb.fpr[1]), DtE(->cb.gpr[2])); |
8557 | dasm_put(Dst, 4208, DtE(->cb.fpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[3]), DtE(->cb.gpr[4]), DtE(->cb.fpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[5]), DtE(->cb.gpr[6]), DtE(->cb.fpr[6]), DtE(->cb.gpr[7]), DtE(->cb.fpr[7]), 272+8, DtE(->cb.stack), Dt1(->base), LJ_TISNUM, Dt1(->top), LJ_TNIL, ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), Dt7(->pc)); | 8558 | dasm_put(Dst, 4209, DtE(->cb.fpr[2]), DtE(->cb.gpr[3]), DtE(->cb.fpr[3]), DtE(->cb.gpr[4]), DtE(->cb.fpr[4]), DtE(->cb.gpr[5]), DtE(->cb.fpr[5]), DtE(->cb.gpr[6]), DtE(->cb.fpr[6]), DtE(->cb.gpr[7]), DtE(->cb.fpr[7]), 272+8, DtE(->cb.stack), Dt1(->base), LJ_TISNUM, Dt1(->top), LJ_TNIL, ~LJ_VMST_INTERP, DISPATCH_GL(vmstate), Dt7(->pc)); |
8558 | #endif | 8559 | #endif |
8559 | dasm_put(Dst, 4272); | 8560 | dasm_put(Dst, 4273); |
8560 | #if LJ_HASFFI | 8561 | #if LJ_HASFFI |
8561 | dasm_put(Dst, 4274, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1])); | 8562 | dasm_put(Dst, 4275, DISPATCH_GL(ctype_state), Dt1(->base), Dt1(->top), DtE(->L), DtE(->cb.gpr[0]), DtE(->cb.fpr[0]), DtE(->cb.gpr[1])); |
8562 | #endif | 8563 | #endif |
8563 | dasm_put(Dst, 4295); | 8564 | dasm_put(Dst, 4296); |
8564 | #if LJ_HASFFI | 8565 | #if LJ_HASFFI |
8565 | #define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) | 8566 | #define DtF(_V) (int)(ptrdiff_t)&(((CCallState *)0)_V) |
8566 | dasm_put(Dst, 4297, DtF(->spadj), DtF(->nsp), DtF(->nfpr), DtF(->stack), 31-2, DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2])); | 8567 | dasm_put(Dst, 4298, DtF(->spadj), DtF(->nsp), DtF(->nfpr), DtF(->stack), 31-2, DtF(->fpr[0]), DtF(->fpr[1]), DtF(->fpr[2]), DtF(->fpr[3]), DtF(->fpr[4]), DtF(->fpr[5]), DtF(->fpr[6]), DtF(->fpr[7]), DtF(->func), DtF(->gpr[1]), DtF(->gpr[2])); |
8567 | dasm_put(Dst, 4354, DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->gpr[6]), DtF(->gpr[7]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3])); | 8568 | dasm_put(Dst, 4355, DtF(->gpr[3]), DtF(->gpr[4]), DtF(->gpr[5]), DtF(->gpr[6]), DtF(->gpr[7]), DtF(->gpr[0]), DtF(->gpr[0]), DtF(->fpr[0]), DtF(->gpr[1]), DtF(->gpr[2]), DtF(->gpr[3])); |
8568 | #endif | 8569 | #endif |
8569 | } | 8570 | } |
8570 | 8571 | ||
@@ -8572,7 +8573,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
8572 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) | 8573 | static void build_ins(BuildCtx *ctx, BCOp op, int defop) |
8573 | { | 8574 | { |
8574 | int vk = 0; | 8575 | int vk = 0; |
8575 | dasm_put(Dst, 4386, defop); | 8576 | dasm_put(Dst, 4387, defop); |
8576 | 8577 | ||
8577 | switch (op) { | 8578 | switch (op) { |
8578 | 8579 | ||
@@ -8582,224 +8583,224 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8582 | 8583 | ||
8583 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: | 8584 | case BC_ISLT: case BC_ISGE: case BC_ISLE: case BC_ISGT: |
8584 | if (LJ_DUALNUM) { | 8585 | if (LJ_DUALNUM) { |
8585 | dasm_put(Dst, 4388, -(BCBIAS_J*4 >> 16)); | 8586 | dasm_put(Dst, 4389, -(BCBIAS_J*4 >> 16)); |
8586 | if (op == BC_ISLT) { | 8587 | if (op == BC_ISLT) { |
8587 | dasm_put(Dst, 4405); | 8588 | dasm_put(Dst, 4406); |
8588 | } else if (op == BC_ISGE) { | 8589 | } else if (op == BC_ISGE) { |
8589 | dasm_put(Dst, 4408); | 8590 | dasm_put(Dst, 4409); |
8590 | } else if (op == BC_ISLE) { | 8591 | } else if (op == BC_ISLE) { |
8591 | dasm_put(Dst, 4411); | 8592 | dasm_put(Dst, 4412); |
8592 | } else { | 8593 | } else { |
8593 | dasm_put(Dst, 4414); | 8594 | dasm_put(Dst, 4415); |
8594 | } | 8595 | } |
8595 | dasm_put(Dst, 4417); | 8596 | dasm_put(Dst, 4418); |
8596 | if (op == BC_ISLT) { | 8597 | if (op == BC_ISLT) { |
8597 | dasm_put(Dst, 4456); | 8598 | dasm_put(Dst, 4457); |
8598 | } else if (op == BC_ISGE) { | 8599 | } else if (op == BC_ISGE) { |
8599 | dasm_put(Dst, 4459); | 8600 | dasm_put(Dst, 4460); |
8600 | } else if (op == BC_ISLE) { | 8601 | } else if (op == BC_ISLE) { |
8601 | dasm_put(Dst, 4462); | 8602 | dasm_put(Dst, 4463); |
8602 | } else { | 8603 | } else { |
8603 | dasm_put(Dst, 4466); | 8604 | dasm_put(Dst, 4467); |
8604 | } | 8605 | } |
8605 | dasm_put(Dst, 4470); | 8606 | dasm_put(Dst, 4471); |
8606 | } else { | 8607 | } else { |
8607 | dasm_put(Dst, 4473, -(BCBIAS_J*4 >> 16)); | 8608 | dasm_put(Dst, 4474, -(BCBIAS_J*4 >> 16)); |
8608 | if (op == BC_ISLT) { | 8609 | if (op == BC_ISLT) { |
8609 | dasm_put(Dst, 4490); | 8610 | dasm_put(Dst, 4491); |
8610 | } else if (op == BC_ISGE) { | 8611 | } else if (op == BC_ISGE) { |
8611 | dasm_put(Dst, 4493); | 8612 | dasm_put(Dst, 4494); |
8612 | } else if (op == BC_ISLE) { | 8613 | } else if (op == BC_ISLE) { |
8613 | dasm_put(Dst, 4496); | 8614 | dasm_put(Dst, 4497); |
8614 | } else { | 8615 | } else { |
8615 | dasm_put(Dst, 4500); | 8616 | dasm_put(Dst, 4501); |
8616 | } | 8617 | } |
8617 | dasm_put(Dst, 4504); | 8618 | dasm_put(Dst, 4505); |
8618 | } | 8619 | } |
8619 | break; | 8620 | break; |
8620 | 8621 | ||
8621 | case BC_ISEQV: case BC_ISNEV: | 8622 | case BC_ISEQV: case BC_ISNEV: |
8622 | vk = op == BC_ISEQV; | 8623 | vk = op == BC_ISEQV; |
8623 | if (LJ_DUALNUM) { | 8624 | if (LJ_DUALNUM) { |
8624 | dasm_put(Dst, 4517, -(BCBIAS_J*4 >> 16)); | 8625 | dasm_put(Dst, 4518, -(BCBIAS_J*4 >> 16)); |
8625 | if (vk) { | 8626 | if (vk) { |
8626 | dasm_put(Dst, 4530); | 8627 | dasm_put(Dst, 4531); |
8627 | } else { | 8628 | } else { |
8628 | dasm_put(Dst, 4533); | 8629 | dasm_put(Dst, 4534); |
8629 | } | 8630 | } |
8630 | } else { | 8631 | } else { |
8631 | dasm_put(Dst, 4536, -(BCBIAS_J*4 >> 16)); | 8632 | dasm_put(Dst, 4537, -(BCBIAS_J*4 >> 16)); |
8632 | if (vk) { | 8633 | if (vk) { |
8633 | dasm_put(Dst, 4553); | 8634 | dasm_put(Dst, 4554); |
8634 | } else { | 8635 | } else { |
8635 | dasm_put(Dst, 4557); | 8636 | dasm_put(Dst, 4558); |
8636 | } | 8637 | } |
8637 | dasm_put(Dst, 4561); | 8638 | dasm_put(Dst, 4562); |
8638 | } | 8639 | } |
8639 | dasm_put(Dst, 4573); | 8640 | dasm_put(Dst, 4574); |
8640 | if (!LJ_DUALNUM) { | 8641 | if (!LJ_DUALNUM) { |
8641 | dasm_put(Dst, 4575); | 8642 | dasm_put(Dst, 4576); |
8642 | } | 8643 | } |
8643 | if (LJ_HASFFI) { | 8644 | if (LJ_HASFFI) { |
8644 | dasm_put(Dst, 4578, LJ_TCDATA, LJ_TCDATA); | 8645 | dasm_put(Dst, 4579, LJ_TCDATA, LJ_TCDATA); |
8645 | } | 8646 | } |
8646 | dasm_put(Dst, 4583, ~LJ_TISPRI); | 8647 | dasm_put(Dst, 4584, ~LJ_TISPRI); |
8647 | if (LJ_HASFFI) { | 8648 | if (LJ_HASFFI) { |
8648 | dasm_put(Dst, 4588); | 8649 | dasm_put(Dst, 4589); |
8649 | } | 8650 | } |
8650 | dasm_put(Dst, 4590, ~LJ_TISTABUD); | 8651 | dasm_put(Dst, 4591, ~LJ_TISTABUD); |
8651 | if (LJ_HASFFI) { | 8652 | if (LJ_HASFFI) { |
8652 | dasm_put(Dst, 4593); | 8653 | dasm_put(Dst, 4594); |
8653 | } | 8654 | } |
8654 | dasm_put(Dst, 4596); | 8655 | dasm_put(Dst, 4597); |
8655 | if (vk) { | 8656 | if (vk) { |
8656 | dasm_put(Dst, 4604); | 8657 | dasm_put(Dst, 4605); |
8657 | } else { | 8658 | } else { |
8658 | dasm_put(Dst, 4609); | 8659 | dasm_put(Dst, 4610); |
8659 | } | 8660 | } |
8660 | if (LJ_DUALNUM) { | 8661 | if (LJ_DUALNUM) { |
8661 | dasm_put(Dst, 4614); | 8662 | dasm_put(Dst, 4615); |
8662 | } else { | 8663 | } else { |
8663 | dasm_put(Dst, 4629); | 8664 | dasm_put(Dst, 4630); |
8664 | } | 8665 | } |
8665 | dasm_put(Dst, 4632, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); | 8666 | dasm_put(Dst, 4633, Dt6(->metatable), 1-vk, Dt6(->nomm), 1<<MM_eq); |
8666 | break; | 8667 | break; |
8667 | 8668 | ||
8668 | case BC_ISEQS: case BC_ISNES: | 8669 | case BC_ISEQS: case BC_ISNES: |
8669 | vk = op == BC_ISEQS; | 8670 | vk = op == BC_ISEQS; |
8670 | dasm_put(Dst, 4651, 32-1); | 8671 | dasm_put(Dst, 4652, 32-1); |
8671 | if (LJ_HASFFI) { | 8672 | if (LJ_HASFFI) { |
8672 | dasm_put(Dst, 4659, LJ_TCDATA); | 8673 | dasm_put(Dst, 4660, LJ_TCDATA); |
8673 | } | 8674 | } |
8674 | dasm_put(Dst, 4662, LJ_TSTR); | 8675 | dasm_put(Dst, 4663, LJ_TSTR); |
8675 | if (LJ_HASFFI) { | 8676 | if (LJ_HASFFI) { |
8676 | dasm_put(Dst, 4666); | 8677 | dasm_put(Dst, 4667); |
8677 | } | 8678 | } |
8678 | dasm_put(Dst, 4669, -(BCBIAS_J*4 >> 16)); | 8679 | dasm_put(Dst, 4670, -(BCBIAS_J*4 >> 16)); |
8679 | if (vk) { | 8680 | if (vk) { |
8680 | dasm_put(Dst, 4677); | 8681 | dasm_put(Dst, 4678); |
8681 | } else { | 8682 | } else { |
8682 | dasm_put(Dst, 4679); | 8683 | dasm_put(Dst, 4680); |
8683 | } | 8684 | } |
8684 | dasm_put(Dst, 4681); | 8685 | dasm_put(Dst, 4682); |
8685 | break; | 8686 | break; |
8686 | 8687 | ||
8687 | case BC_ISEQN: case BC_ISNEN: | 8688 | case BC_ISEQN: case BC_ISNEN: |
8688 | vk = op == BC_ISEQN; | 8689 | vk = op == BC_ISEQN; |
8689 | if (LJ_DUALNUM) { | 8690 | if (LJ_DUALNUM) { |
8690 | dasm_put(Dst, 4693, -(BCBIAS_J*4 >> 16)); | 8691 | dasm_put(Dst, 4694, -(BCBIAS_J*4 >> 16)); |
8691 | if (vk) { | 8692 | if (vk) { |
8692 | dasm_put(Dst, 4705); | 8693 | dasm_put(Dst, 4706); |
8693 | } else { | 8694 | } else { |
8694 | dasm_put(Dst, 4707); | 8695 | dasm_put(Dst, 4708); |
8695 | } | 8696 | } |
8696 | dasm_put(Dst, 4709); | 8697 | dasm_put(Dst, 4710); |
8697 | } else { | 8698 | } else { |
8698 | if (vk) { | 8699 | if (vk) { |
8699 | dasm_put(Dst, 4716); | 8700 | dasm_put(Dst, 4717); |
8700 | } else { | 8701 | } else { |
8701 | dasm_put(Dst, 4718); | 8702 | dasm_put(Dst, 4719); |
8702 | } | 8703 | } |
8703 | dasm_put(Dst, 4720, -(BCBIAS_J*4 >> 16)); | 8704 | dasm_put(Dst, 4721, -(BCBIAS_J*4 >> 16)); |
8704 | } | 8705 | } |
8705 | if (vk) { | 8706 | if (vk) { |
8706 | dasm_put(Dst, 4733); | 8707 | dasm_put(Dst, 4734); |
8707 | if (!LJ_HASFFI) { | 8708 | if (!LJ_HASFFI) { |
8708 | dasm_put(Dst, 4738); | 8709 | dasm_put(Dst, 4739); |
8709 | } | 8710 | } |
8710 | } else { | 8711 | } else { |
8711 | dasm_put(Dst, 4740); | 8712 | dasm_put(Dst, 4741); |
8712 | if (!LJ_HASFFI) { | 8713 | if (!LJ_HASFFI) { |
8713 | dasm_put(Dst, 4744); | 8714 | dasm_put(Dst, 4745); |
8714 | } | 8715 | } |
8715 | dasm_put(Dst, 4746); | 8716 | dasm_put(Dst, 4747); |
8716 | } | 8717 | } |
8717 | dasm_put(Dst, 4749); | 8718 | dasm_put(Dst, 4750); |
8718 | if (LJ_HASFFI) { | 8719 | if (LJ_HASFFI) { |
8719 | dasm_put(Dst, 4760, LJ_TCDATA); | 8720 | dasm_put(Dst, 4761, LJ_TCDATA); |
8720 | } | 8721 | } |
8721 | if (LJ_DUALNUM) { | 8722 | if (LJ_DUALNUM) { |
8722 | dasm_put(Dst, 4768); | 8723 | dasm_put(Dst, 4769); |
8723 | } | 8724 | } |
8724 | break; | 8725 | break; |
8725 | 8726 | ||
8726 | case BC_ISEQP: case BC_ISNEP: | 8727 | case BC_ISEQP: case BC_ISNEP: |
8727 | vk = op == BC_ISEQP; | 8728 | vk = op == BC_ISEQP; |
8728 | dasm_put(Dst, 4792, 32-3); | 8729 | dasm_put(Dst, 4793, 32-3); |
8729 | if (LJ_HASFFI) { | 8730 | if (LJ_HASFFI) { |
8730 | dasm_put(Dst, 4799, LJ_TCDATA); | 8731 | dasm_put(Dst, 4800, LJ_TCDATA); |
8731 | } | 8732 | } |
8732 | dasm_put(Dst, 4802); | 8733 | dasm_put(Dst, 4803); |
8733 | if (LJ_HASFFI) { | 8734 | if (LJ_HASFFI) { |
8734 | dasm_put(Dst, 4804); | 8735 | dasm_put(Dst, 4805); |
8735 | } | 8736 | } |
8736 | dasm_put(Dst, 4807, -(BCBIAS_J*4 >> 16)); | 8737 | dasm_put(Dst, 4808, -(BCBIAS_J*4 >> 16)); |
8737 | if (vk) { | 8738 | if (vk) { |
8738 | dasm_put(Dst, 4813); | 8739 | dasm_put(Dst, 4814); |
8739 | } else { | 8740 | } else { |
8740 | dasm_put(Dst, 4815); | 8741 | dasm_put(Dst, 4816); |
8741 | } | 8742 | } |
8742 | dasm_put(Dst, 4817); | 8743 | dasm_put(Dst, 4818); |
8743 | break; | 8744 | break; |
8744 | 8745 | ||
8745 | /* -- Unary test and copy ops ------------------------------------------- */ | 8746 | /* -- Unary test and copy ops ------------------------------------------- */ |
8746 | 8747 | ||
8747 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: | 8748 | case BC_ISTC: case BC_ISFC: case BC_IST: case BC_ISF: |
8748 | dasm_put(Dst, 4829); | 8749 | dasm_put(Dst, 4830); |
8749 | if (op == BC_IST || op == BC_ISF) { | 8750 | if (op == BC_IST || op == BC_ISF) { |
8750 | dasm_put(Dst, 4833, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); | 8751 | dasm_put(Dst, 4834, LJ_TTRUE, -(BCBIAS_J*4 >> 16)); |
8751 | if (op == BC_IST) { | 8752 | if (op == BC_IST) { |
8752 | dasm_put(Dst, 4840); | 8753 | dasm_put(Dst, 4841); |
8753 | } else { | 8754 | } else { |
8754 | dasm_put(Dst, 4842); | 8755 | dasm_put(Dst, 4843); |
8755 | } | 8756 | } |
8756 | dasm_put(Dst, 4844); | 8757 | dasm_put(Dst, 4845); |
8757 | } else { | 8758 | } else { |
8758 | dasm_put(Dst, 4846, LJ_TFALSE); | 8759 | dasm_put(Dst, 4847, LJ_TFALSE); |
8759 | if (op == BC_ISTC) { | 8760 | if (op == BC_ISTC) { |
8760 | dasm_put(Dst, 4851); | 8761 | dasm_put(Dst, 4852); |
8761 | } else { | 8762 | } else { |
8762 | dasm_put(Dst, 4854); | 8763 | dasm_put(Dst, 4855); |
8763 | } | 8764 | } |
8764 | dasm_put(Dst, 4857, -(BCBIAS_J*4 >> 16)); | 8765 | dasm_put(Dst, 4858, -(BCBIAS_J*4 >> 16)); |
8765 | } | 8766 | } |
8766 | dasm_put(Dst, 4864); | 8767 | dasm_put(Dst, 4865); |
8767 | break; | 8768 | break; |
8768 | 8769 | ||
8769 | /* -- Unary ops --------------------------------------------------------- */ | 8770 | /* -- Unary ops --------------------------------------------------------- */ |
8770 | 8771 | ||
8771 | case BC_MOV: | 8772 | case BC_MOV: |
8772 | dasm_put(Dst, 4875); | 8773 | dasm_put(Dst, 4876); |
8773 | break; | 8774 | break; |
8774 | case BC_NOT: | 8775 | case BC_NOT: |
8775 | dasm_put(Dst, 4888, LJ_TTRUE); | 8776 | dasm_put(Dst, 4889, LJ_TTRUE); |
8776 | break; | 8777 | break; |
8777 | case BC_UNM: | 8778 | case BC_UNM: |
8778 | dasm_put(Dst, 4904); | 8779 | dasm_put(Dst, 4905); |
8779 | if (LJ_DUALNUM) { | 8780 | if (LJ_DUALNUM) { |
8780 | dasm_put(Dst, 4908); | 8781 | dasm_put(Dst, 4909); |
8781 | } | 8782 | } |
8782 | dasm_put(Dst, 4936); | 8783 | dasm_put(Dst, 4937); |
8783 | if (LJ_DUALNUM) { | 8784 | if (LJ_DUALNUM) { |
8784 | dasm_put(Dst, 4946); | 8785 | dasm_put(Dst, 4947); |
8785 | } else { | 8786 | } else { |
8786 | dasm_put(Dst, 4949); | 8787 | dasm_put(Dst, 4950); |
8787 | } | 8788 | } |
8788 | break; | 8789 | break; |
8789 | case BC_LEN: | 8790 | case BC_LEN: |
8790 | dasm_put(Dst, 4958, LJ_TSTR, Dt5(->len)); | 8791 | dasm_put(Dst, 4959, LJ_TSTR, Dt5(->len)); |
8791 | if (LJ_DUALNUM) { | 8792 | if (LJ_DUALNUM) { |
8792 | dasm_put(Dst, 4968); | 8793 | dasm_put(Dst, 4969); |
8793 | } else { | 8794 | } else { |
8794 | dasm_put(Dst, 4973); | 8795 | dasm_put(Dst, 4974); |
8795 | } | 8796 | } |
8796 | dasm_put(Dst, 4980, LJ_TTAB); | 8797 | dasm_put(Dst, 4981, LJ_TTAB); |
8797 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 8798 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
8798 | dasm_put(Dst, 4994, Dt6(->metatable)); | 8799 | dasm_put(Dst, 4995, Dt6(->metatable)); |
8799 | #endif | 8800 | #endif |
8800 | dasm_put(Dst, 5001); | 8801 | dasm_put(Dst, 5002); |
8801 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 8802 | #ifdef LUAJIT_ENABLE_LUA52COMPAT |
8802 | dasm_put(Dst, 5007, Dt6(->nomm), 1<<MM_len); | 8803 | dasm_put(Dst, 5008, Dt6(->nomm), 1<<MM_len); |
8803 | #endif | 8804 | #endif |
8804 | break; | 8805 | break; |
8805 | 8806 | ||
@@ -8811,77 +8812,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8811 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8812 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8812 | switch (vk) { | 8813 | switch (vk) { |
8813 | case 0: | 8814 | case 0: |
8814 | dasm_put(Dst, 5017); | 8815 | dasm_put(Dst, 5018); |
8815 | break; | 8816 | break; |
8816 | case 1: | 8817 | case 1: |
8817 | dasm_put(Dst, 5023); | 8818 | dasm_put(Dst, 5024); |
8818 | break; | 8819 | break; |
8819 | default: | 8820 | default: |
8820 | dasm_put(Dst, 5029); | 8821 | dasm_put(Dst, 5030); |
8821 | break; | 8822 | break; |
8822 | } | 8823 | } |
8823 | dasm_put(Dst, 5035); | 8824 | dasm_put(Dst, 5036); |
8824 | switch (vk) { | 8825 | switch (vk) { |
8825 | case 0: | 8826 | case 0: |
8826 | dasm_put(Dst, 5062); | 8827 | dasm_put(Dst, 5063); |
8827 | break; | 8828 | break; |
8828 | case 1: | 8829 | case 1: |
8829 | dasm_put(Dst, 5065); | 8830 | dasm_put(Dst, 5066); |
8830 | break; | 8831 | break; |
8831 | default: | 8832 | default: |
8832 | dasm_put(Dst, 5068); | 8833 | dasm_put(Dst, 5069); |
8833 | break; | 8834 | break; |
8834 | } | 8835 | } |
8835 | dasm_put(Dst, 5071); | 8836 | dasm_put(Dst, 5072); |
8836 | if (vk == 1) { | 8837 | if (vk == 1) { |
8837 | dasm_put(Dst, 5073); | 8838 | dasm_put(Dst, 5074); |
8838 | } else { | 8839 | } else { |
8839 | dasm_put(Dst, 5077); | 8840 | dasm_put(Dst, 5078); |
8840 | } | 8841 | } |
8841 | switch (vk) { | 8842 | switch (vk) { |
8842 | case 0: | 8843 | case 0: |
8843 | dasm_put(Dst, 5081); | 8844 | dasm_put(Dst, 5082); |
8844 | break; | 8845 | break; |
8845 | case 1: | 8846 | case 1: |
8846 | dasm_put(Dst, 5084); | 8847 | dasm_put(Dst, 5085); |
8847 | break; | 8848 | break; |
8848 | default: | 8849 | default: |
8849 | dasm_put(Dst, 5087); | 8850 | dasm_put(Dst, 5088); |
8850 | break; | 8851 | break; |
8851 | } | 8852 | } |
8852 | dasm_put(Dst, 5090); | 8853 | dasm_put(Dst, 5091); |
8853 | } else { | 8854 | } else { |
8854 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8855 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8855 | switch (vk) { | 8856 | switch (vk) { |
8856 | case 0: | 8857 | case 0: |
8857 | dasm_put(Dst, 5097); | 8858 | dasm_put(Dst, 5098); |
8858 | if (LJ_DUALNUM) { | 8859 | if (LJ_DUALNUM) { |
8859 | dasm_put(Dst, 5099); | 8860 | dasm_put(Dst, 5100); |
8860 | } | 8861 | } |
8861 | dasm_put(Dst, 5101); | 8862 | dasm_put(Dst, 5102); |
8862 | if (LJ_DUALNUM) { | 8863 | if (LJ_DUALNUM) { |
8863 | dasm_put(Dst, 5104); | 8864 | dasm_put(Dst, 5105); |
8864 | } else { | 8865 | } else { |
8865 | dasm_put(Dst, 5110); | 8866 | dasm_put(Dst, 5111); |
8866 | } | 8867 | } |
8867 | break; | 8868 | break; |
8868 | case 1: | 8869 | case 1: |
8869 | dasm_put(Dst, 5114); | 8870 | dasm_put(Dst, 5115); |
8870 | if (LJ_DUALNUM) { | 8871 | if (LJ_DUALNUM) { |
8871 | dasm_put(Dst, 5116); | 8872 | dasm_put(Dst, 5117); |
8872 | } | 8873 | } |
8873 | dasm_put(Dst, 5118); | 8874 | dasm_put(Dst, 5119); |
8874 | if (LJ_DUALNUM) { | 8875 | if (LJ_DUALNUM) { |
8875 | dasm_put(Dst, 5121); | 8876 | dasm_put(Dst, 5122); |
8876 | } else { | 8877 | } else { |
8877 | dasm_put(Dst, 5127); | 8878 | dasm_put(Dst, 5128); |
8878 | } | 8879 | } |
8879 | break; | 8880 | break; |
8880 | default: | 8881 | default: |
8881 | dasm_put(Dst, 5131); | 8882 | dasm_put(Dst, 5132); |
8882 | break; | 8883 | break; |
8883 | } | 8884 | } |
8884 | dasm_put(Dst, 5141); | 8885 | dasm_put(Dst, 5142); |
8885 | } | 8886 | } |
8886 | break; | 8887 | break; |
8887 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: | 8888 | case BC_SUBVN: case BC_SUBNV: case BC_SUBVV: |
@@ -8889,77 +8890,77 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8889 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8890 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8890 | switch (vk) { | 8891 | switch (vk) { |
8891 | case 0: | 8892 | case 0: |
8892 | dasm_put(Dst, 5154); | 8893 | dasm_put(Dst, 5155); |
8893 | break; | 8894 | break; |
8894 | case 1: | 8895 | case 1: |
8895 | dasm_put(Dst, 5160); | 8896 | dasm_put(Dst, 5161); |
8896 | break; | 8897 | break; |
8897 | default: | 8898 | default: |
8898 | dasm_put(Dst, 5166); | 8899 | dasm_put(Dst, 5167); |
8899 | break; | 8900 | break; |
8900 | } | 8901 | } |
8901 | dasm_put(Dst, 5172); | 8902 | dasm_put(Dst, 5173); |
8902 | switch (vk) { | 8903 | switch (vk) { |
8903 | case 0: | 8904 | case 0: |
8904 | dasm_put(Dst, 5199); | 8905 | dasm_put(Dst, 5200); |
8905 | break; | 8906 | break; |
8906 | case 1: | 8907 | case 1: |
8907 | dasm_put(Dst, 5202); | 8908 | dasm_put(Dst, 5203); |
8908 | break; | 8909 | break; |
8909 | default: | 8910 | default: |
8910 | dasm_put(Dst, 5205); | 8911 | dasm_put(Dst, 5206); |
8911 | break; | 8912 | break; |
8912 | } | 8913 | } |
8913 | dasm_put(Dst, 5208); | 8914 | dasm_put(Dst, 5209); |
8914 | if (vk == 1) { | 8915 | if (vk == 1) { |
8915 | dasm_put(Dst, 5210); | 8916 | dasm_put(Dst, 5211); |
8916 | } else { | 8917 | } else { |
8917 | dasm_put(Dst, 5214); | 8918 | dasm_put(Dst, 5215); |
8918 | } | 8919 | } |
8919 | switch (vk) { | 8920 | switch (vk) { |
8920 | case 0: | 8921 | case 0: |
8921 | dasm_put(Dst, 5218); | 8922 | dasm_put(Dst, 5219); |
8922 | break; | 8923 | break; |
8923 | case 1: | 8924 | case 1: |
8924 | dasm_put(Dst, 5221); | 8925 | dasm_put(Dst, 5222); |
8925 | break; | 8926 | break; |
8926 | default: | 8927 | default: |
8927 | dasm_put(Dst, 5224); | 8928 | dasm_put(Dst, 5225); |
8928 | break; | 8929 | break; |
8929 | } | 8930 | } |
8930 | dasm_put(Dst, 5227); | 8931 | dasm_put(Dst, 5228); |
8931 | } else { | 8932 | } else { |
8932 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8933 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8933 | switch (vk) { | 8934 | switch (vk) { |
8934 | case 0: | 8935 | case 0: |
8935 | dasm_put(Dst, 5234); | 8936 | dasm_put(Dst, 5235); |
8936 | if (LJ_DUALNUM) { | 8937 | if (LJ_DUALNUM) { |
8937 | dasm_put(Dst, 5236); | 8938 | dasm_put(Dst, 5237); |
8938 | } | 8939 | } |
8939 | dasm_put(Dst, 5238); | 8940 | dasm_put(Dst, 5239); |
8940 | if (LJ_DUALNUM) { | 8941 | if (LJ_DUALNUM) { |
8941 | dasm_put(Dst, 5241); | 8942 | dasm_put(Dst, 5242); |
8942 | } else { | 8943 | } else { |
8943 | dasm_put(Dst, 5247); | 8944 | dasm_put(Dst, 5248); |
8944 | } | 8945 | } |
8945 | break; | 8946 | break; |
8946 | case 1: | 8947 | case 1: |
8947 | dasm_put(Dst, 5251); | 8948 | dasm_put(Dst, 5252); |
8948 | if (LJ_DUALNUM) { | 8949 | if (LJ_DUALNUM) { |
8949 | dasm_put(Dst, 5253); | 8950 | dasm_put(Dst, 5254); |
8950 | } | 8951 | } |
8951 | dasm_put(Dst, 5255); | 8952 | dasm_put(Dst, 5256); |
8952 | if (LJ_DUALNUM) { | 8953 | if (LJ_DUALNUM) { |
8953 | dasm_put(Dst, 5258); | 8954 | dasm_put(Dst, 5259); |
8954 | } else { | 8955 | } else { |
8955 | dasm_put(Dst, 5264); | 8956 | dasm_put(Dst, 5265); |
8956 | } | 8957 | } |
8957 | break; | 8958 | break; |
8958 | default: | 8959 | default: |
8959 | dasm_put(Dst, 5268); | 8960 | dasm_put(Dst, 5269); |
8960 | break; | 8961 | break; |
8961 | } | 8962 | } |
8962 | dasm_put(Dst, 5278); | 8963 | dasm_put(Dst, 5279); |
8963 | } | 8964 | } |
8964 | break; | 8965 | break; |
8965 | case BC_MULVN: case BC_MULNV: case BC_MULVV: | 8966 | case BC_MULVN: case BC_MULNV: case BC_MULVV: |
@@ -8967,188 +8968,188 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
8967 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 8968 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
8968 | switch (vk) { | 8969 | switch (vk) { |
8969 | case 0: | 8970 | case 0: |
8970 | dasm_put(Dst, 5291); | 8971 | dasm_put(Dst, 5292); |
8971 | break; | 8972 | break; |
8972 | case 1: | 8973 | case 1: |
8973 | dasm_put(Dst, 5297); | 8974 | dasm_put(Dst, 5298); |
8974 | break; | 8975 | break; |
8975 | default: | 8976 | default: |
8976 | dasm_put(Dst, 5303); | 8977 | dasm_put(Dst, 5304); |
8977 | break; | 8978 | break; |
8978 | } | 8979 | } |
8979 | dasm_put(Dst, 5309); | 8980 | dasm_put(Dst, 5310); |
8980 | switch (vk) { | 8981 | switch (vk) { |
8981 | case 0: | 8982 | case 0: |
8982 | dasm_put(Dst, 5336); | 8983 | dasm_put(Dst, 5337); |
8983 | break; | 8984 | break; |
8984 | case 1: | 8985 | case 1: |
8985 | dasm_put(Dst, 5339); | 8986 | dasm_put(Dst, 5340); |
8986 | break; | 8987 | break; |
8987 | default: | 8988 | default: |
8988 | dasm_put(Dst, 5342); | 8989 | dasm_put(Dst, 5343); |
8989 | break; | 8990 | break; |
8990 | } | 8991 | } |
8991 | dasm_put(Dst, 5345); | 8992 | dasm_put(Dst, 5346); |
8992 | if (vk == 1) { | 8993 | if (vk == 1) { |
8993 | dasm_put(Dst, 5347); | 8994 | dasm_put(Dst, 5348); |
8994 | } else { | 8995 | } else { |
8995 | dasm_put(Dst, 5351); | 8996 | dasm_put(Dst, 5352); |
8996 | } | 8997 | } |
8997 | switch (vk) { | 8998 | switch (vk) { |
8998 | case 0: | 8999 | case 0: |
8999 | dasm_put(Dst, 5355); | 9000 | dasm_put(Dst, 5356); |
9000 | break; | 9001 | break; |
9001 | case 1: | 9002 | case 1: |
9002 | dasm_put(Dst, 5358); | 9003 | dasm_put(Dst, 5359); |
9003 | break; | 9004 | break; |
9004 | default: | 9005 | default: |
9005 | dasm_put(Dst, 5361); | 9006 | dasm_put(Dst, 5362); |
9006 | break; | 9007 | break; |
9007 | } | 9008 | } |
9008 | dasm_put(Dst, 5364); | 9009 | dasm_put(Dst, 5365); |
9009 | } else { | 9010 | } else { |
9010 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 9011 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
9011 | switch (vk) { | 9012 | switch (vk) { |
9012 | case 0: | 9013 | case 0: |
9013 | dasm_put(Dst, 5371); | 9014 | dasm_put(Dst, 5372); |
9014 | if (LJ_DUALNUM) { | 9015 | if (LJ_DUALNUM) { |
9015 | dasm_put(Dst, 5373); | 9016 | dasm_put(Dst, 5374); |
9016 | } | 9017 | } |
9017 | dasm_put(Dst, 5375); | 9018 | dasm_put(Dst, 5376); |
9018 | if (LJ_DUALNUM) { | 9019 | if (LJ_DUALNUM) { |
9019 | dasm_put(Dst, 5378); | 9020 | dasm_put(Dst, 5379); |
9020 | } else { | 9021 | } else { |
9021 | dasm_put(Dst, 5384); | 9022 | dasm_put(Dst, 5385); |
9022 | } | 9023 | } |
9023 | break; | 9024 | break; |
9024 | case 1: | 9025 | case 1: |
9025 | dasm_put(Dst, 5388); | 9026 | dasm_put(Dst, 5389); |
9026 | if (LJ_DUALNUM) { | 9027 | if (LJ_DUALNUM) { |
9027 | dasm_put(Dst, 5390); | 9028 | dasm_put(Dst, 5391); |
9028 | } | 9029 | } |
9029 | dasm_put(Dst, 5392); | 9030 | dasm_put(Dst, 5393); |
9030 | if (LJ_DUALNUM) { | 9031 | if (LJ_DUALNUM) { |
9031 | dasm_put(Dst, 5395); | 9032 | dasm_put(Dst, 5396); |
9032 | } else { | 9033 | } else { |
9033 | dasm_put(Dst, 5401); | 9034 | dasm_put(Dst, 5402); |
9034 | } | 9035 | } |
9035 | break; | 9036 | break; |
9036 | default: | 9037 | default: |
9037 | dasm_put(Dst, 5405); | 9038 | dasm_put(Dst, 5406); |
9038 | break; | 9039 | break; |
9039 | } | 9040 | } |
9040 | dasm_put(Dst, 5415); | 9041 | dasm_put(Dst, 5416); |
9041 | } | 9042 | } |
9042 | break; | 9043 | break; |
9043 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: | 9044 | case BC_DIVVN: case BC_DIVNV: case BC_DIVVV: |
9044 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 9045 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
9045 | switch (vk) { | 9046 | switch (vk) { |
9046 | case 0: | 9047 | case 0: |
9047 | dasm_put(Dst, 5428); | 9048 | dasm_put(Dst, 5429); |
9048 | if (LJ_DUALNUM) { | 9049 | if (LJ_DUALNUM) { |
9049 | dasm_put(Dst, 5430); | 9050 | dasm_put(Dst, 5431); |
9050 | } | 9051 | } |
9051 | dasm_put(Dst, 5432); | 9052 | dasm_put(Dst, 5433); |
9052 | if (LJ_DUALNUM) { | 9053 | if (LJ_DUALNUM) { |
9053 | dasm_put(Dst, 5435); | 9054 | dasm_put(Dst, 5436); |
9054 | } else { | 9055 | } else { |
9055 | dasm_put(Dst, 5441); | 9056 | dasm_put(Dst, 5442); |
9056 | } | 9057 | } |
9057 | break; | 9058 | break; |
9058 | case 1: | 9059 | case 1: |
9059 | dasm_put(Dst, 5445); | 9060 | dasm_put(Dst, 5446); |
9060 | if (LJ_DUALNUM) { | 9061 | if (LJ_DUALNUM) { |
9061 | dasm_put(Dst, 5447); | 9062 | dasm_put(Dst, 5448); |
9062 | } | 9063 | } |
9063 | dasm_put(Dst, 5449); | 9064 | dasm_put(Dst, 5450); |
9064 | if (LJ_DUALNUM) { | 9065 | if (LJ_DUALNUM) { |
9065 | dasm_put(Dst, 5452); | 9066 | dasm_put(Dst, 5453); |
9066 | } else { | 9067 | } else { |
9067 | dasm_put(Dst, 5458); | 9068 | dasm_put(Dst, 5459); |
9068 | } | 9069 | } |
9069 | break; | 9070 | break; |
9070 | default: | 9071 | default: |
9071 | dasm_put(Dst, 5462); | 9072 | dasm_put(Dst, 5463); |
9072 | break; | 9073 | break; |
9073 | } | 9074 | } |
9074 | dasm_put(Dst, 5472); | 9075 | dasm_put(Dst, 5473); |
9075 | break; | 9076 | break; |
9076 | case BC_MODVN: | 9077 | case BC_MODVN: |
9077 | if (LJ_DUALNUM) { | 9078 | if (LJ_DUALNUM) { |
9078 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 9079 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
9079 | switch (vk) { | 9080 | switch (vk) { |
9080 | case 0: | 9081 | case 0: |
9081 | dasm_put(Dst, 5485); | 9082 | dasm_put(Dst, 5486); |
9082 | break; | 9083 | break; |
9083 | case 1: | 9084 | case 1: |
9084 | dasm_put(Dst, 5491); | 9085 | dasm_put(Dst, 5492); |
9085 | break; | 9086 | break; |
9086 | default: | 9087 | default: |
9087 | dasm_put(Dst, 5497); | 9088 | dasm_put(Dst, 5498); |
9088 | break; | 9089 | break; |
9089 | } | 9090 | } |
9090 | dasm_put(Dst, 5503); | 9091 | dasm_put(Dst, 5504); |
9091 | switch (vk) { | 9092 | switch (vk) { |
9092 | case 0: | 9093 | case 0: |
9093 | dasm_put(Dst, 5531); | 9094 | dasm_put(Dst, 5532); |
9094 | break; | 9095 | break; |
9095 | case 1: | 9096 | case 1: |
9096 | dasm_put(Dst, 5534); | 9097 | dasm_put(Dst, 5535); |
9097 | break; | 9098 | break; |
9098 | default: | 9099 | default: |
9099 | dasm_put(Dst, 5537); | 9100 | dasm_put(Dst, 5538); |
9100 | break; | 9101 | break; |
9101 | } | 9102 | } |
9102 | dasm_put(Dst, 5540); | 9103 | dasm_put(Dst, 5541); |
9103 | if (vk == 1) { | 9104 | if (vk == 1) { |
9104 | dasm_put(Dst, 5542); | 9105 | dasm_put(Dst, 5543); |
9105 | } else { | 9106 | } else { |
9106 | dasm_put(Dst, 5546); | 9107 | dasm_put(Dst, 5547); |
9107 | } | 9108 | } |
9108 | switch (vk) { | 9109 | switch (vk) { |
9109 | case 0: | 9110 | case 0: |
9110 | dasm_put(Dst, 5550); | 9111 | dasm_put(Dst, 5551); |
9111 | break; | 9112 | break; |
9112 | case 1: | 9113 | case 1: |
9113 | dasm_put(Dst, 5553); | 9114 | dasm_put(Dst, 5554); |
9114 | break; | 9115 | break; |
9115 | default: | 9116 | default: |
9116 | dasm_put(Dst, 5556); | 9117 | dasm_put(Dst, 5557); |
9117 | break; | 9118 | break; |
9118 | } | 9119 | } |
9119 | dasm_put(Dst, 5559); | 9120 | dasm_put(Dst, 5560); |
9120 | } else { | 9121 | } else { |
9121 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 9122 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
9122 | switch (vk) { | 9123 | switch (vk) { |
9123 | case 0: | 9124 | case 0: |
9124 | dasm_put(Dst, 5571); | 9125 | dasm_put(Dst, 5572); |
9125 | if (LJ_DUALNUM) { | 9126 | if (LJ_DUALNUM) { |
9126 | dasm_put(Dst, 5573); | 9127 | dasm_put(Dst, 5574); |
9127 | } | 9128 | } |
9128 | dasm_put(Dst, 5575); | 9129 | dasm_put(Dst, 5576); |
9129 | if (LJ_DUALNUM) { | 9130 | if (LJ_DUALNUM) { |
9130 | dasm_put(Dst, 5578); | 9131 | dasm_put(Dst, 5579); |
9131 | } else { | 9132 | } else { |
9132 | dasm_put(Dst, 5584); | 9133 | dasm_put(Dst, 5585); |
9133 | } | 9134 | } |
9134 | break; | 9135 | break; |
9135 | case 1: | 9136 | case 1: |
9136 | dasm_put(Dst, 5588); | 9137 | dasm_put(Dst, 5589); |
9137 | if (LJ_DUALNUM) { | 9138 | if (LJ_DUALNUM) { |
9138 | dasm_put(Dst, 5590); | 9139 | dasm_put(Dst, 5591); |
9139 | } | 9140 | } |
9140 | dasm_put(Dst, 5592); | 9141 | dasm_put(Dst, 5593); |
9141 | if (LJ_DUALNUM) { | 9142 | if (LJ_DUALNUM) { |
9142 | dasm_put(Dst, 5595); | 9143 | dasm_put(Dst, 5596); |
9143 | } else { | 9144 | } else { |
9144 | dasm_put(Dst, 5601); | 9145 | dasm_put(Dst, 5602); |
9145 | } | 9146 | } |
9146 | break; | 9147 | break; |
9147 | default: | 9148 | default: |
9148 | dasm_put(Dst, 5605); | 9149 | dasm_put(Dst, 5606); |
9149 | break; | 9150 | break; |
9150 | } | 9151 | } |
9151 | dasm_put(Dst, 5615); | 9152 | dasm_put(Dst, 5616); |
9152 | } | 9153 | } |
9153 | break; | 9154 | break; |
9154 | case BC_MODNV: case BC_MODVV: | 9155 | case BC_MODNV: case BC_MODVV: |
@@ -9156,297 +9157,297 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
9156 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 9157 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
9157 | switch (vk) { | 9158 | switch (vk) { |
9158 | case 0: | 9159 | case 0: |
9159 | dasm_put(Dst, 5633); | 9160 | dasm_put(Dst, 5634); |
9160 | break; | 9161 | break; |
9161 | case 1: | 9162 | case 1: |
9162 | dasm_put(Dst, 5639); | 9163 | dasm_put(Dst, 5640); |
9163 | break; | 9164 | break; |
9164 | default: | 9165 | default: |
9165 | dasm_put(Dst, 5645); | 9166 | dasm_put(Dst, 5646); |
9166 | break; | 9167 | break; |
9167 | } | 9168 | } |
9168 | dasm_put(Dst, 5651); | 9169 | dasm_put(Dst, 5652); |
9169 | switch (vk) { | 9170 | switch (vk) { |
9170 | case 0: | 9171 | case 0: |
9171 | dasm_put(Dst, 5679); | 9172 | dasm_put(Dst, 5680); |
9172 | break; | 9173 | break; |
9173 | case 1: | 9174 | case 1: |
9174 | dasm_put(Dst, 5682); | 9175 | dasm_put(Dst, 5683); |
9175 | break; | 9176 | break; |
9176 | default: | 9177 | default: |
9177 | dasm_put(Dst, 5685); | 9178 | dasm_put(Dst, 5686); |
9178 | break; | 9179 | break; |
9179 | } | 9180 | } |
9180 | dasm_put(Dst, 5688); | 9181 | dasm_put(Dst, 5689); |
9181 | if (vk == 1) { | 9182 | if (vk == 1) { |
9182 | dasm_put(Dst, 5690); | 9183 | dasm_put(Dst, 5691); |
9183 | } else { | 9184 | } else { |
9184 | dasm_put(Dst, 5694); | 9185 | dasm_put(Dst, 5695); |
9185 | } | 9186 | } |
9186 | switch (vk) { | 9187 | switch (vk) { |
9187 | case 0: | 9188 | case 0: |
9188 | dasm_put(Dst, 5698); | 9189 | dasm_put(Dst, 5699); |
9189 | break; | 9190 | break; |
9190 | case 1: | 9191 | case 1: |
9191 | dasm_put(Dst, 5701); | 9192 | dasm_put(Dst, 5702); |
9192 | break; | 9193 | break; |
9193 | default: | 9194 | default: |
9194 | dasm_put(Dst, 5704); | 9195 | dasm_put(Dst, 5705); |
9195 | break; | 9196 | break; |
9196 | } | 9197 | } |
9197 | dasm_put(Dst, 5707); | 9198 | dasm_put(Dst, 5708); |
9198 | } else { | 9199 | } else { |
9199 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); | 9200 | vk = ((int)op - BC_ADDVN) / (BC_ADDNV-BC_ADDVN); |
9200 | switch (vk) { | 9201 | switch (vk) { |
9201 | case 0: | 9202 | case 0: |
9202 | dasm_put(Dst, 5710); | 9203 | dasm_put(Dst, 5711); |
9203 | if (LJ_DUALNUM) { | 9204 | if (LJ_DUALNUM) { |
9204 | dasm_put(Dst, 5712); | 9205 | dasm_put(Dst, 5713); |
9205 | } | 9206 | } |
9206 | dasm_put(Dst, 5714); | 9207 | dasm_put(Dst, 5715); |
9207 | if (LJ_DUALNUM) { | 9208 | if (LJ_DUALNUM) { |
9208 | dasm_put(Dst, 5717); | 9209 | dasm_put(Dst, 5718); |
9209 | } else { | 9210 | } else { |
9210 | dasm_put(Dst, 5723); | 9211 | dasm_put(Dst, 5724); |
9211 | } | 9212 | } |
9212 | break; | 9213 | break; |
9213 | case 1: | 9214 | case 1: |
9214 | dasm_put(Dst, 5727); | 9215 | dasm_put(Dst, 5728); |
9215 | if (LJ_DUALNUM) { | 9216 | if (LJ_DUALNUM) { |
9216 | dasm_put(Dst, 5729); | 9217 | dasm_put(Dst, 5730); |
9217 | } | 9218 | } |
9218 | dasm_put(Dst, 5731); | 9219 | dasm_put(Dst, 5732); |
9219 | if (LJ_DUALNUM) { | 9220 | if (LJ_DUALNUM) { |
9220 | dasm_put(Dst, 5734); | 9221 | dasm_put(Dst, 5735); |
9221 | } else { | 9222 | } else { |
9222 | dasm_put(Dst, 5740); | 9223 | dasm_put(Dst, 5741); |
9223 | } | 9224 | } |
9224 | break; | 9225 | break; |
9225 | default: | 9226 | default: |
9226 | dasm_put(Dst, 5744); | 9227 | dasm_put(Dst, 5745); |
9227 | break; | 9228 | break; |
9228 | } | 9229 | } |
9229 | dasm_put(Dst, 5754); | 9230 | dasm_put(Dst, 5755); |
9230 | } | 9231 | } |
9231 | break; | 9232 | break; |
9232 | case BC_POW: | 9233 | case BC_POW: |
9233 | dasm_put(Dst, 5757); | 9234 | dasm_put(Dst, 5758); |
9234 | break; | 9235 | break; |
9235 | 9236 | ||
9236 | case BC_CAT: | 9237 | case BC_CAT: |
9237 | dasm_put(Dst, 5780, Dt1(->base), 32-3, Dt1(->base)); | 9238 | dasm_put(Dst, 5781, Dt1(->base), 32-3, Dt1(->base)); |
9238 | break; | 9239 | break; |
9239 | 9240 | ||
9240 | /* -- Constant ops ------------------------------------------------------ */ | 9241 | /* -- Constant ops ------------------------------------------------------ */ |
9241 | 9242 | ||
9242 | case BC_KSTR: | 9243 | case BC_KSTR: |
9243 | dasm_put(Dst, 5810, 32-1, LJ_TSTR); | 9244 | dasm_put(Dst, 5811, 32-1, LJ_TSTR); |
9244 | break; | 9245 | break; |
9245 | case BC_KCDATA: | 9246 | case BC_KCDATA: |
9246 | #if LJ_HASFFI | 9247 | #if LJ_HASFFI |
9247 | dasm_put(Dst, 5829, 32-1, LJ_TCDATA); | 9248 | dasm_put(Dst, 5830, 32-1, LJ_TCDATA); |
9248 | #endif | 9249 | #endif |
9249 | break; | 9250 | break; |
9250 | case BC_KSHORT: | 9251 | case BC_KSHORT: |
9251 | if (LJ_DUALNUM) { | 9252 | if (LJ_DUALNUM) { |
9252 | dasm_put(Dst, 5848, 31-13); | 9253 | dasm_put(Dst, 5849, 31-13); |
9253 | } else { | 9254 | } else { |
9254 | dasm_put(Dst, 5864, 31-13, 31-20); | 9255 | dasm_put(Dst, 5865, 31-13, 31-20); |
9255 | } | 9256 | } |
9256 | break; | 9257 | break; |
9257 | case BC_KNUM: | 9258 | case BC_KNUM: |
9258 | dasm_put(Dst, 5892); | 9259 | dasm_put(Dst, 5893); |
9259 | break; | 9260 | break; |
9260 | case BC_KPRI: | 9261 | case BC_KPRI: |
9261 | dasm_put(Dst, 5905, 32-3); | 9262 | dasm_put(Dst, 5906, 32-3); |
9262 | break; | 9263 | break; |
9263 | case BC_KNIL: | 9264 | case BC_KNIL: |
9264 | dasm_put(Dst, 5920); | 9265 | dasm_put(Dst, 5921); |
9265 | break; | 9266 | break; |
9266 | 9267 | ||
9267 | /* -- Upvalue and function ops ------------------------------------------ */ | 9268 | /* -- Upvalue and function ops ------------------------------------------ */ |
9268 | 9269 | ||
9269 | case BC_UGET: | 9270 | case BC_UGET: |
9270 | dasm_put(Dst, 5939, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); | 9271 | dasm_put(Dst, 5940, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); |
9271 | break; | 9272 | break; |
9272 | case BC_USETV: | 9273 | case BC_USETV: |
9273 | dasm_put(Dst, 5960, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); | 9274 | dasm_put(Dst, 5961, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, DtA(->closed), -(LJ_TISNUM+1), LJ_TISGCV - (LJ_TISNUM+1), Dt4(->gch.marked), LJ_GC_WHITES, GG_DISP2G); |
9274 | break; | 9275 | break; |
9275 | case BC_USETS: | 9276 | case BC_USETS: |
9276 | dasm_put(Dst, 6013, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); | 9277 | dasm_put(Dst, 6014, 32-1, 32-1, offsetof(GCfuncL, uvptr), DtA(->marked), DtA(->v), LJ_GC_BLACK, Dt5(->marked), DtA(->closed), LJ_TSTR, LJ_GC_WHITES, GG_DISP2G); |
9277 | break; | 9278 | break; |
9278 | case BC_USETN: | 9279 | case BC_USETN: |
9279 | dasm_put(Dst, 6064, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); | 9280 | dasm_put(Dst, 6065, 32-1, offsetof(GCfuncL, uvptr), DtA(->v)); |
9280 | break; | 9281 | break; |
9281 | case BC_USETP: | 9282 | case BC_USETP: |
9282 | dasm_put(Dst, 6085, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v)); | 9283 | dasm_put(Dst, 6086, 32-1, 32-3, offsetof(GCfuncL, uvptr), DtA(->v)); |
9283 | break; | 9284 | break; |
9284 | 9285 | ||
9285 | case BC_UCLO: | 9286 | case BC_UCLO: |
9286 | dasm_put(Dst, 6108, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); | 9287 | dasm_put(Dst, 6109, Dt1(->openupval), 32-1, -(BCBIAS_J*4 >> 16), Dt1(->base), Dt1(->base)); |
9287 | break; | 9288 | break; |
9288 | 9289 | ||
9289 | case BC_FNEW: | 9290 | case BC_FNEW: |
9290 | dasm_put(Dst, 6138, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); | 9291 | dasm_put(Dst, 6139, 32-1, Dt1(->base), Dt1(->base), LJ_TFUNC); |
9291 | break; | 9292 | break; |
9292 | 9293 | ||
9293 | /* -- Table ops --------------------------------------------------------- */ | 9294 | /* -- Table ops --------------------------------------------------------- */ |
9294 | 9295 | ||
9295 | case BC_TNEW: | 9296 | case BC_TNEW: |
9296 | case BC_TDUP: | 9297 | case BC_TDUP: |
9297 | dasm_put(Dst, 6166, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); | 9298 | dasm_put(Dst, 6167, DISPATCH_GL(gc.total), DISPATCH_GL(gc.threshold), Dt1(->base)); |
9298 | if (op == BC_TNEW) { | 9299 | if (op == BC_TNEW) { |
9299 | dasm_put(Dst, 6179); | 9300 | dasm_put(Dst, 6180); |
9300 | } else { | 9301 | } else { |
9301 | dasm_put(Dst, 6188, 32-1); | 9302 | dasm_put(Dst, 6189, 32-1); |
9302 | } | 9303 | } |
9303 | dasm_put(Dst, 6195, Dt1(->base), LJ_TTAB); | 9304 | dasm_put(Dst, 6196, Dt1(->base), LJ_TTAB); |
9304 | if (op == BC_TNEW) { | 9305 | if (op == BC_TNEW) { |
9305 | dasm_put(Dst, 6212); | 9306 | dasm_put(Dst, 6213); |
9306 | } | 9307 | } |
9307 | dasm_put(Dst, 6217); | 9308 | dasm_put(Dst, 6218); |
9308 | break; | 9309 | break; |
9309 | 9310 | ||
9310 | case BC_GGET: | 9311 | case BC_GGET: |
9311 | case BC_GSET: | 9312 | case BC_GSET: |
9312 | dasm_put(Dst, 6226, 32-1, Dt7(->env)); | 9313 | dasm_put(Dst, 6227, 32-1, Dt7(->env)); |
9313 | if (op == BC_GGET) { | 9314 | if (op == BC_GGET) { |
9314 | dasm_put(Dst, 6234); | 9315 | dasm_put(Dst, 6235); |
9315 | } else { | 9316 | } else { |
9316 | dasm_put(Dst, 6237); | 9317 | dasm_put(Dst, 6238); |
9317 | } | 9318 | } |
9318 | break; | 9319 | break; |
9319 | 9320 | ||
9320 | case BC_TGETV: | 9321 | case BC_TGETV: |
9321 | dasm_put(Dst, 6240); | 9322 | dasm_put(Dst, 6241); |
9322 | if (LJ_DUALNUM) { | 9323 | if (LJ_DUALNUM) { |
9323 | dasm_put(Dst, 6244); | 9324 | dasm_put(Dst, 6245); |
9324 | } else { | 9325 | } else { |
9325 | dasm_put(Dst, 6246); | 9326 | dasm_put(Dst, 6247); |
9326 | } | 9327 | } |
9327 | dasm_put(Dst, 6248, LJ_TTAB); | 9328 | dasm_put(Dst, 6249, LJ_TTAB); |
9328 | if (LJ_DUALNUM) { | 9329 | if (LJ_DUALNUM) { |
9329 | dasm_put(Dst, 6254, Dt6(->asize), Dt6(->array), 31-3); | 9330 | dasm_put(Dst, 6255, Dt6(->asize), Dt6(->array), 31-3); |
9330 | } else { | 9331 | } else { |
9331 | dasm_put(Dst, 6264, Dt6(->asize), Dt6(->array), 31-3); | 9332 | dasm_put(Dst, 6265, Dt6(->asize), Dt6(->array), 31-3); |
9332 | } | 9333 | } |
9333 | dasm_put(Dst, 6281, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); | 9334 | dasm_put(Dst, 6282, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index, LJ_TSTR); |
9334 | if (!LJ_DUALNUM) { | 9335 | if (!LJ_DUALNUM) { |
9335 | dasm_put(Dst, 6321); | 9336 | dasm_put(Dst, 6322); |
9336 | } | 9337 | } |
9337 | dasm_put(Dst, 6323); | 9338 | dasm_put(Dst, 6324); |
9338 | break; | 9339 | break; |
9339 | case BC_TGETS: | 9340 | case BC_TGETS: |
9340 | dasm_put(Dst, 6326, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); | 9341 | dasm_put(Dst, 6327, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), 31-5, 31-3, DtB(->key), 4+offsetof(Node, key), DtB(->val), 4+offsetof(Node, val), LJ_TSTR, LJ_TNIL, DtB(->next)); |
9341 | dasm_put(Dst, 6387, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 9342 | dasm_put(Dst, 6388, LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
9342 | break; | 9343 | break; |
9343 | case BC_TGETB: | 9344 | case BC_TGETB: |
9344 | dasm_put(Dst, 6407, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); | 9345 | dasm_put(Dst, 6408, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), LJ_TNIL, Dt6(->metatable), Dt6(->nomm), 1<<MM_index); |
9345 | break; | 9346 | break; |
9346 | 9347 | ||
9347 | case BC_TSETV: | 9348 | case BC_TSETV: |
9348 | dasm_put(Dst, 6455); | 9349 | dasm_put(Dst, 6456); |
9349 | if (LJ_DUALNUM) { | 9350 | if (LJ_DUALNUM) { |
9350 | dasm_put(Dst, 6459); | 9351 | dasm_put(Dst, 6460); |
9351 | } else { | 9352 | } else { |
9352 | dasm_put(Dst, 6461); | 9353 | dasm_put(Dst, 6462); |
9353 | } | 9354 | } |
9354 | dasm_put(Dst, 6463, LJ_TTAB); | 9355 | dasm_put(Dst, 6464, LJ_TTAB); |
9355 | if (LJ_DUALNUM) { | 9356 | if (LJ_DUALNUM) { |
9356 | dasm_put(Dst, 6469, Dt6(->asize), Dt6(->array), 31-3); | 9357 | dasm_put(Dst, 6470, Dt6(->asize), Dt6(->array), 31-3); |
9357 | } else { | 9358 | } else { |
9358 | dasm_put(Dst, 6479, Dt6(->asize), Dt6(->array), 31-3); | 9359 | dasm_put(Dst, 6480, Dt6(->asize), Dt6(->array), 31-3); |
9359 | } | 9360 | } |
9360 | dasm_put(Dst, 6496, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); | 9361 | dasm_put(Dst, 6497, Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); |
9361 | if (!LJ_DUALNUM) { | 9362 | if (!LJ_DUALNUM) { |
9362 | dasm_put(Dst, 6543); | 9363 | dasm_put(Dst, 6544); |
9363 | } | 9364 | } |
9364 | dasm_put(Dst, 6545, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 9365 | dasm_put(Dst, 6546, DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
9365 | break; | 9366 | break; |
9366 | case BC_TSETS: | 9367 | case BC_TSETS: |
9367 | dasm_put(Dst, 6560, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), DtB(->next), LJ_TSTR, LJ_TNIL); | 9368 | dasm_put(Dst, 6561, 32-1, LJ_TTAB, Dt6(->hmask), Dt5(->hash), Dt6(->node), Dt6(->nomm), 31-5, 31-3, Dt6(->marked), DtB(->key), 4+offsetof(Node, key), DtB(->val), DtB(->next), LJ_TSTR, LJ_TNIL); |
9368 | dasm_put(Dst, 6611, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); | 9369 | dasm_put(Dst, 6612, LJ_GC_BLACK, DtB(->val), Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, Dt6(->metatable), DISPATCH_GL(tmptv), Dt1(->base), Dt6(->nomm), 1<<MM_newindex, LJ_TSTR); |
9369 | dasm_put(Dst, 6668, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 9370 | dasm_put(Dst, 6669, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
9370 | break; | 9371 | break; |
9371 | case BC_TSETB: | 9372 | case BC_TSETB: |
9372 | dasm_put(Dst, 6691, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); | 9373 | dasm_put(Dst, 6692, 32-3, LJ_TTAB, Dt6(->asize), Dt6(->array), Dt6(->marked), LJ_TNIL, LJ_GC_BLACK, Dt6(->metatable), Dt6(->nomm), 1<<MM_newindex, DISPATCH_GL(gc.grayagain)); |
9373 | dasm_put(Dst, 6749, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 9374 | dasm_put(Dst, 6750, DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
9374 | break; | 9375 | break; |
9375 | 9376 | ||
9376 | case BC_TSETM: | 9377 | case BC_TSETM: |
9377 | dasm_put(Dst, 6759, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); | 9378 | dasm_put(Dst, 6760, 32-3, Dt6(->asize), 31-3, Dt6(->marked), Dt6(->array), LJ_GC_BLACK, Dt1(->base), DISPATCH_GL(gc.grayagain), DISPATCH_GL(gc.grayagain), Dt6(->marked), Dt6(->gclist)); |
9378 | dasm_put(Dst, 6828); | 9379 | dasm_put(Dst, 6829); |
9379 | break; | 9380 | break; |
9380 | 9381 | ||
9381 | /* -- Calls and vararg handling ----------------------------------------- */ | 9382 | /* -- Calls and vararg handling ----------------------------------------- */ |
9382 | 9383 | ||
9383 | case BC_CALLM: | 9384 | case BC_CALLM: |
9384 | dasm_put(Dst, 6831); | 9385 | dasm_put(Dst, 6832); |
9385 | break; | 9386 | break; |
9386 | case BC_CALL: | 9387 | case BC_CALL: |
9387 | dasm_put(Dst, 6833, LJ_TFUNC, Dt7(->pc)); | 9388 | dasm_put(Dst, 6834, LJ_TFUNC, Dt7(->pc)); |
9388 | break; | 9389 | break; |
9389 | 9390 | ||
9390 | case BC_CALLMT: | 9391 | case BC_CALLMT: |
9391 | dasm_put(Dst, 6854); | 9392 | dasm_put(Dst, 6855); |
9392 | break; | 9393 | break; |
9393 | case BC_CALLT: | 9394 | case BC_CALLT: |
9394 | dasm_put(Dst, 6856, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); | 9395 | dasm_put(Dst, 6857, LJ_TFUNC, FRAME_TYPE, Dt7(->ffid), FRAME_VARG, Dt7(->pc), -4-8, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); |
9395 | dasm_put(Dst, 6920, FRAME_TYPE); | 9396 | dasm_put(Dst, 6921, FRAME_TYPE); |
9396 | break; | 9397 | break; |
9397 | 9398 | ||
9398 | case BC_ITERC: | 9399 | case BC_ITERC: |
9399 | dasm_put(Dst, 6929, LJ_TFUNC, Dt7(->pc)); | 9400 | dasm_put(Dst, 6930, LJ_TFUNC, Dt7(->pc)); |
9400 | break; | 9401 | break; |
9401 | 9402 | ||
9402 | case BC_ITERN: | 9403 | case BC_ITERN: |
9403 | #if LJ_HASJIT | 9404 | #if LJ_HASJIT |
9404 | #endif | 9405 | #endif |
9405 | dasm_put(Dst, 6956, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); | 9406 | dasm_put(Dst, 6957, Dt6(->asize), Dt6(->array), 31-3, LJ_TNIL); |
9406 | if (LJ_DUALNUM) { | 9407 | if (LJ_DUALNUM) { |
9407 | dasm_put(Dst, 6978); | 9408 | dasm_put(Dst, 6979); |
9408 | } else { | 9409 | } else { |
9409 | dasm_put(Dst, 6981); | 9410 | dasm_put(Dst, 6982); |
9410 | } | 9411 | } |
9411 | dasm_put(Dst, 6985, -(BCBIAS_J*4 >> 16)); | 9412 | dasm_put(Dst, 6986, -(BCBIAS_J*4 >> 16)); |
9412 | if (!LJ_DUALNUM) { | 9413 | if (!LJ_DUALNUM) { |
9413 | dasm_put(Dst, 6993); | 9414 | dasm_put(Dst, 6994); |
9414 | } | 9415 | } |
9415 | dasm_put(Dst, 6995, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); | 9416 | dasm_put(Dst, 6996, Dt6(->hmask), Dt6(->node), 31-5, 31-3, LJ_TNIL, DtB(->key), -(BCBIAS_J*4 >> 16)); |
9416 | break; | 9417 | break; |
9417 | 9418 | ||
9418 | case BC_ISNEXT: | 9419 | case BC_ISNEXT: |
9419 | dasm_put(Dst, 7051, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); | 9420 | dasm_put(Dst, 7052, LJ_TTAB, LJ_TFUNC, LJ_TNIL, Dt8(->ffid), FF_next_N, 32-1, -(BCBIAS_J*4 >> 16), BC_JMP, BC_ITERC, -(BCBIAS_J*4 >> 16)); |
9420 | break; | 9421 | break; |
9421 | 9422 | ||
9422 | case BC_VARG: | 9423 | case BC_VARG: |
9423 | dasm_put(Dst, 7101, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); | 9424 | dasm_put(Dst, 7102, FRAME_VARG, Dt1(->maxstack), Dt1(->top), Dt1(->base), 32-3, Dt1(->base)); |
9424 | dasm_put(Dst, 7181); | 9425 | dasm_put(Dst, 7182); |
9425 | break; | 9426 | break; |
9426 | 9427 | ||
9427 | /* -- Returns ----------------------------------------------------------- */ | 9428 | /* -- Returns ----------------------------------------------------------- */ |
9428 | 9429 | ||
9429 | case BC_RETM: | 9430 | case BC_RETM: |
9430 | dasm_put(Dst, 7187); | 9431 | dasm_put(Dst, 7188); |
9431 | break; | 9432 | break; |
9432 | 9433 | ||
9433 | case BC_RET: | 9434 | case BC_RET: |
9434 | dasm_put(Dst, 7189, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); | 9435 | dasm_put(Dst, 7190, FRAME_TYPE, FRAME_VARG, Dt7(->pc), PC2PROTO(k), FRAME_TYPEP); |
9435 | break; | 9436 | break; |
9436 | 9437 | ||
9437 | case BC_RET0: case BC_RET1: | 9438 | case BC_RET0: case BC_RET1: |
9438 | dasm_put(Dst, 7259, FRAME_TYPE, FRAME_VARG); | 9439 | dasm_put(Dst, 7260, FRAME_TYPE, FRAME_VARG); |
9439 | if (op == BC_RET1) { | 9440 | if (op == BC_RET1) { |
9440 | dasm_put(Dst, 7272); | 9441 | dasm_put(Dst, 7273); |
9441 | } | 9442 | } |
9442 | dasm_put(Dst, 7275, Dt7(->pc), PC2PROTO(k)); | 9443 | dasm_put(Dst, 7276, Dt7(->pc), PC2PROTO(k)); |
9443 | break; | 9444 | break; |
9444 | 9445 | ||
9445 | /* -- Loops and branches ------------------------------------------------ */ | 9446 | /* -- Loops and branches ------------------------------------------------ */ |
9446 | 9447 | ||
9447 | case BC_FORL: | 9448 | case BC_FORL: |
9448 | #if LJ_HASJIT | 9449 | #if LJ_HASJIT |
9449 | dasm_put(Dst, 7303, GG_DISP2HOT, -HOTCOUNT_LOOP); | 9450 | dasm_put(Dst, 7304, GG_DISP2HOT, -HOTCOUNT_LOOP); |
9450 | #endif | 9451 | #endif |
9451 | break; | 9452 | break; |
9452 | 9453 | ||
@@ -9459,100 +9460,100 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
9459 | case BC_IFORL: | 9460 | case BC_IFORL: |
9460 | vk = (op == BC_IFORL || op == BC_JFORL); | 9461 | vk = (op == BC_IFORL || op == BC_JFORL); |
9461 | if (LJ_DUALNUM) { | 9462 | if (LJ_DUALNUM) { |
9462 | dasm_put(Dst, 7313, FORL_IDX*8+4); | 9463 | dasm_put(Dst, 7314, FORL_IDX*8+4); |
9463 | if (vk) { | 9464 | if (vk) { |
9464 | dasm_put(Dst, 7318, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); | 9465 | dasm_put(Dst, 7319, FORL_STEP*8+4, FORL_STOP*8+4, FORL_IDX*8+4); |
9465 | } else { | 9466 | } else { |
9466 | dasm_put(Dst, 7332, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); | 9467 | dasm_put(Dst, 7333, FORL_STEP*8, FORL_STEP*8+4, FORL_STOP*8, FORL_STOP*8+4); |
9467 | } | 9468 | } |
9468 | dasm_put(Dst, 7348, FORL_EXT*8); | 9469 | dasm_put(Dst, 7349, FORL_EXT*8); |
9469 | if (op != BC_JFORL) { | 9470 | if (op != BC_JFORL) { |
9470 | dasm_put(Dst, 7355, 32-1); | 9471 | dasm_put(Dst, 7356, 32-1); |
9471 | } | 9472 | } |
9472 | dasm_put(Dst, 7358, FORL_EXT*8+4); | 9473 | dasm_put(Dst, 7359, FORL_EXT*8+4); |
9473 | if (op != BC_JFORL) { | 9474 | if (op != BC_JFORL) { |
9474 | dasm_put(Dst, 7361); | 9475 | dasm_put(Dst, 7362); |
9475 | } | 9476 | } |
9476 | if (op == BC_FORI) { | 9477 | if (op == BC_FORI) { |
9477 | dasm_put(Dst, 7363); | 9478 | dasm_put(Dst, 7364); |
9478 | } else if (op == BC_JFORI) { | 9479 | } else if (op == BC_JFORI) { |
9479 | dasm_put(Dst, 7366, -(BCBIAS_J*4 >> 16)); | 9480 | dasm_put(Dst, 7367, -(BCBIAS_J*4 >> 16)); |
9480 | } else if (op == BC_IFORL) { | 9481 | } else if (op == BC_IFORL) { |
9481 | dasm_put(Dst, 7371, -(BCBIAS_J*4 >> 16)); | 9482 | dasm_put(Dst, 7372, -(BCBIAS_J*4 >> 16)); |
9482 | } else { | 9483 | } else { |
9483 | dasm_put(Dst, 7376, BC_JLOOP); | 9484 | dasm_put(Dst, 7377, BC_JLOOP); |
9484 | } | 9485 | } |
9485 | dasm_put(Dst, 7379); | 9486 | dasm_put(Dst, 7380); |
9486 | if (vk) { | 9487 | if (vk) { |
9487 | dasm_put(Dst, 7395); | 9488 | dasm_put(Dst, 7396); |
9488 | } | 9489 | } |
9489 | } | 9490 | } |
9490 | if (vk) { | 9491 | if (vk) { |
9491 | if (LJ_DUALNUM) { | 9492 | if (LJ_DUALNUM) { |
9492 | dasm_put(Dst, 7402, FORL_IDX*8); | 9493 | dasm_put(Dst, 7403, FORL_IDX*8); |
9493 | } else { | 9494 | } else { |
9494 | dasm_put(Dst, 7406); | 9495 | dasm_put(Dst, 7407); |
9495 | } | 9496 | } |
9496 | dasm_put(Dst, 7408, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); | 9497 | dasm_put(Dst, 7409, FORL_STEP*8, FORL_STOP*8, FORL_STEP*8, FORL_IDX*8); |
9497 | } else { | 9498 | } else { |
9498 | if (LJ_DUALNUM) { | 9499 | if (LJ_DUALNUM) { |
9499 | dasm_put(Dst, 7418); | 9500 | dasm_put(Dst, 7419); |
9500 | } else { | 9501 | } else { |
9501 | dasm_put(Dst, 7420, FORL_STEP*8, FORL_STOP*8); | 9502 | dasm_put(Dst, 7421, FORL_STEP*8, FORL_STOP*8); |
9502 | } | 9503 | } |
9503 | dasm_put(Dst, 7429, FORL_IDX*8, FORL_STOP*8); | 9504 | dasm_put(Dst, 7430, FORL_IDX*8, FORL_STOP*8); |
9504 | } | 9505 | } |
9505 | dasm_put(Dst, 7438); | 9506 | dasm_put(Dst, 7439); |
9506 | if (op != BC_JFORL) { | 9507 | if (op != BC_JFORL) { |
9507 | dasm_put(Dst, 7440, 32-1); | 9508 | dasm_put(Dst, 7441, 32-1); |
9508 | } | 9509 | } |
9509 | dasm_put(Dst, 7443, FORL_EXT*8); | 9510 | dasm_put(Dst, 7444, FORL_EXT*8); |
9510 | if (op != BC_JFORL) { | 9511 | if (op != BC_JFORL) { |
9511 | dasm_put(Dst, 7446); | 9512 | dasm_put(Dst, 7447); |
9512 | } | 9513 | } |
9513 | dasm_put(Dst, 7448); | 9514 | dasm_put(Dst, 7449); |
9514 | if (op == BC_JFORI) { | 9515 | if (op == BC_JFORI) { |
9515 | dasm_put(Dst, 7450, -(BCBIAS_J*4 >> 16)); | 9516 | dasm_put(Dst, 7451, -(BCBIAS_J*4 >> 16)); |
9516 | } | 9517 | } |
9517 | dasm_put(Dst, 7453); | 9518 | dasm_put(Dst, 7454); |
9518 | if (op == BC_FORI) { | 9519 | if (op == BC_FORI) { |
9519 | dasm_put(Dst, 7456); | 9520 | dasm_put(Dst, 7457); |
9520 | } else if (op == BC_IFORL) { | 9521 | } else if (op == BC_IFORL) { |
9521 | if (LJ_DUALNUM) { | 9522 | if (LJ_DUALNUM) { |
9522 | dasm_put(Dst, 7459); | 9523 | dasm_put(Dst, 7460); |
9523 | } else { | 9524 | } else { |
9524 | dasm_put(Dst, 7462); | 9525 | dasm_put(Dst, 7463); |
9525 | } | 9526 | } |
9526 | dasm_put(Dst, 7465, -(BCBIAS_J*4 >> 16)); | 9527 | dasm_put(Dst, 7466, -(BCBIAS_J*4 >> 16)); |
9527 | } else if (op == BC_JFORI) { | 9528 | } else if (op == BC_JFORI) { |
9528 | dasm_put(Dst, 7469); | 9529 | dasm_put(Dst, 7470); |
9529 | } else { | 9530 | } else { |
9530 | dasm_put(Dst, 7472, BC_JLOOP); | 9531 | dasm_put(Dst, 7473, BC_JLOOP); |
9531 | } | 9532 | } |
9532 | if (LJ_DUALNUM) { | 9533 | if (LJ_DUALNUM) { |
9533 | dasm_put(Dst, 7475); | 9534 | dasm_put(Dst, 7476); |
9534 | } else { | 9535 | } else { |
9535 | dasm_put(Dst, 7478); | 9536 | dasm_put(Dst, 7479); |
9536 | } | 9537 | } |
9537 | dasm_put(Dst, 7490); | 9538 | dasm_put(Dst, 7491); |
9538 | if (op == BC_FORI) { | 9539 | if (op == BC_FORI) { |
9539 | dasm_put(Dst, 7492, -(BCBIAS_J*4 >> 16)); | 9540 | dasm_put(Dst, 7493, -(BCBIAS_J*4 >> 16)); |
9540 | } else if (op == BC_IFORL) { | 9541 | } else if (op == BC_IFORL) { |
9541 | dasm_put(Dst, 7498); | 9542 | dasm_put(Dst, 7499); |
9542 | } else if (op == BC_JFORI) { | 9543 | } else if (op == BC_JFORI) { |
9543 | dasm_put(Dst, 7501); | 9544 | dasm_put(Dst, 7502); |
9544 | } else { | 9545 | } else { |
9545 | dasm_put(Dst, 7504, BC_JLOOP); | 9546 | dasm_put(Dst, 7505, BC_JLOOP); |
9546 | } | 9547 | } |
9547 | dasm_put(Dst, 7507); | 9548 | dasm_put(Dst, 7508); |
9548 | if (op == BC_JFORI) { | 9549 | if (op == BC_JFORI) { |
9549 | dasm_put(Dst, 7510, BC_JLOOP); | 9550 | dasm_put(Dst, 7511, BC_JLOOP); |
9550 | } | 9551 | } |
9551 | break; | 9552 | break; |
9552 | 9553 | ||
9553 | case BC_ITERL: | 9554 | case BC_ITERL: |
9554 | #if LJ_HASJIT | 9555 | #if LJ_HASJIT |
9555 | dasm_put(Dst, 7516, GG_DISP2HOT, -HOTCOUNT_LOOP); | 9556 | dasm_put(Dst, 7517, GG_DISP2HOT, -HOTCOUNT_LOOP); |
9556 | #endif | 9557 | #endif |
9557 | break; | 9558 | break; |
9558 | 9559 | ||
@@ -9561,40 +9562,40 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
9561 | break; | 9562 | break; |
9562 | #endif | 9563 | #endif |
9563 | case BC_IITERL: | 9564 | case BC_IITERL: |
9564 | dasm_put(Dst, 7526, LJ_TNIL); | 9565 | dasm_put(Dst, 7527, LJ_TNIL); |
9565 | if (op == BC_JITERL) { | 9566 | if (op == BC_JITERL) { |
9566 | dasm_put(Dst, 7533, BC_JLOOP); | 9567 | dasm_put(Dst, 7534, BC_JLOOP); |
9567 | } else { | 9568 | } else { |
9568 | dasm_put(Dst, 7538, 32-1, -(BCBIAS_J*4 >> 16)); | 9569 | dasm_put(Dst, 7539, 32-1, -(BCBIAS_J*4 >> 16)); |
9569 | } | 9570 | } |
9570 | dasm_put(Dst, 7546); | 9571 | dasm_put(Dst, 7547); |
9571 | break; | 9572 | break; |
9572 | 9573 | ||
9573 | case BC_LOOP: | 9574 | case BC_LOOP: |
9574 | #if LJ_HASJIT | 9575 | #if LJ_HASJIT |
9575 | dasm_put(Dst, 7558, GG_DISP2HOT, -HOTCOUNT_LOOP); | 9576 | dasm_put(Dst, 7559, GG_DISP2HOT, -HOTCOUNT_LOOP); |
9576 | #endif | 9577 | #endif |
9577 | break; | 9578 | break; |
9578 | 9579 | ||
9579 | case BC_ILOOP: | 9580 | case BC_ILOOP: |
9580 | dasm_put(Dst, 7568); | 9581 | dasm_put(Dst, 7569); |
9581 | break; | 9582 | break; |
9582 | 9583 | ||
9583 | case BC_JLOOP: | 9584 | case BC_JLOOP: |
9584 | #if LJ_HASJIT | 9585 | #if LJ_HASJIT |
9585 | dasm_put(Dst, 7579, DISPATCH_J(trace), 32-1, DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), GG_DISP2G+32768); | 9586 | dasm_put(Dst, 7580, DISPATCH_J(trace), 32-1, DISPATCH_GL(vmstate), DtD(->mcode), DISPATCH_GL(jit_base), DISPATCH_GL(jit_L), GG_DISP2G+32768); |
9586 | #endif | 9587 | #endif |
9587 | break; | 9588 | break; |
9588 | 9589 | ||
9589 | case BC_JMP: | 9590 | case BC_JMP: |
9590 | dasm_put(Dst, 7598, 32-1, -(BCBIAS_J*4 >> 16)); | 9591 | dasm_put(Dst, 7599, 32-1, -(BCBIAS_J*4 >> 16)); |
9591 | break; | 9592 | break; |
9592 | 9593 | ||
9593 | /* -- Function headers -------------------------------------------------- */ | 9594 | /* -- Function headers -------------------------------------------------- */ |
9594 | 9595 | ||
9595 | case BC_FUNCF: | 9596 | case BC_FUNCF: |
9596 | #if LJ_HASJIT | 9597 | #if LJ_HASJIT |
9597 | dasm_put(Dst, 7614, GG_DISP2HOT, -HOTCOUNT_CALL); | 9598 | dasm_put(Dst, 7615, GG_DISP2HOT, -HOTCOUNT_CALL); |
9598 | #endif | 9599 | #endif |
9599 | case BC_FUNCV: /* NYI: compiled vararg functions. */ | 9600 | case BC_FUNCV: /* NYI: compiled vararg functions. */ |
9600 | break; | 9601 | break; |
@@ -9604,42 +9605,42 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
9604 | break; | 9605 | break; |
9605 | #endif | 9606 | #endif |
9606 | case BC_IFUNCF: | 9607 | case BC_IFUNCF: |
9607 | dasm_put(Dst, 7624, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); | 9608 | dasm_put(Dst, 7625, Dt1(->maxstack), -4+PC2PROTO(numparams), -4+PC2PROTO(k), 31-3); |
9608 | if (op != BC_JFUNCF) { | 9609 | if (op != BC_JFUNCF) { |
9609 | dasm_put(Dst, 7636); | 9610 | dasm_put(Dst, 7637); |
9610 | } | 9611 | } |
9611 | dasm_put(Dst, 7639); | 9612 | dasm_put(Dst, 7640); |
9612 | if (op == BC_JFUNCF) { | 9613 | if (op == BC_JFUNCF) { |
9613 | dasm_put(Dst, 7644, BC_JLOOP); | 9614 | dasm_put(Dst, 7645, BC_JLOOP); |
9614 | } else { | 9615 | } else { |
9615 | dasm_put(Dst, 7648); | 9616 | dasm_put(Dst, 7649); |
9616 | } | 9617 | } |
9617 | dasm_put(Dst, 7657); | 9618 | dasm_put(Dst, 7658); |
9618 | break; | 9619 | break; |
9619 | 9620 | ||
9620 | case BC_JFUNCV: | 9621 | case BC_JFUNCV: |
9621 | #if !LJ_HASJIT | 9622 | #if !LJ_HASJIT |
9622 | break; | 9623 | break; |
9623 | #endif | 9624 | #endif |
9624 | dasm_put(Dst, 7663); | 9625 | dasm_put(Dst, 7664); |
9625 | break; /* NYI: compiled vararg functions. */ | 9626 | break; /* NYI: compiled vararg functions. */ |
9626 | 9627 | ||
9627 | case BC_IFUNCV: | 9628 | case BC_IFUNCV: |
9628 | dasm_put(Dst, 7665, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); | 9629 | dasm_put(Dst, 7666, Dt1(->maxstack), 8+FRAME_VARG, -4+PC2PROTO(k), -4+PC2PROTO(numparams), LJ_TNIL); |
9629 | break; | 9630 | break; |
9630 | 9631 | ||
9631 | case BC_FUNCC: | 9632 | case BC_FUNCC: |
9632 | case BC_FUNCCW: | 9633 | case BC_FUNCCW: |
9633 | if (op == BC_FUNCC) { | 9634 | if (op == BC_FUNCC) { |
9634 | dasm_put(Dst, 7718, Dt8(->f)); | 9635 | dasm_put(Dst, 7719, Dt8(->f)); |
9635 | } else { | 9636 | } else { |
9636 | dasm_put(Dst, 7721, DISPATCH_GL(wrapf)); | 9637 | dasm_put(Dst, 7722, DISPATCH_GL(wrapf)); |
9637 | } | 9638 | } |
9638 | dasm_put(Dst, 7724, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); | 9639 | dasm_put(Dst, 7725, Dt1(->maxstack), Dt1(->base), Dt1(->top), ~LJ_VMST_C); |
9639 | if (op == BC_FUNCCW) { | 9640 | if (op == BC_FUNCCW) { |
9640 | dasm_put(Dst, 7737, Dt8(->f)); | 9641 | dasm_put(Dst, 7738, Dt8(->f)); |
9641 | } | 9642 | } |
9642 | dasm_put(Dst, 7740, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); | 9643 | dasm_put(Dst, 7741, DISPATCH_GL(vmstate), Dt1(->base), 31-3, Dt1(->top), ~LJ_VMST_INTERP, DISPATCH_GL(vmstate)); |
9643 | break; | 9644 | break; |
9644 | 9645 | ||
9645 | /* ---------------------------------------------------------------------- */ | 9646 | /* ---------------------------------------------------------------------- */ |
@@ -9659,7 +9660,7 @@ static int build_backend(BuildCtx *ctx) | |||
9659 | 9660 | ||
9660 | build_subroutines(ctx); | 9661 | build_subroutines(ctx); |
9661 | 9662 | ||
9662 | dasm_put(Dst, 7761); | 9663 | dasm_put(Dst, 7762); |
9663 | for (op = 0; op < BC__MAX; op++) | 9664 | for (op = 0; op < BC__MAX; op++) |
9664 | build_ins(ctx, (BCOp)op, op); | 9665 | build_ins(ctx, (BCOp)op, op); |
9665 | 9666 | ||