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 | |
| 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).
| -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 | ||
