Commit 444417f
committed
feat: Add Swift-side per-class identity cache with shared memory flag
Replace per-crossing deinit(pointer) WASM call on identity cache hits with
a Swift-side per-class Set that tracks exported pointers. On cache hit, Swift
uses passUnretained (no retain) and writes a flag to WASM linear memory. JS
reads the flag and skips the deinit call.
On cache miss, normal passRetained path. On FinalizationRegistry race (stale
JS cache but Swift thinks object is known), JS calls bjs_identity_retain to
recover.
Trade-off vs JS-only cache: ~40% slower on roundtrip (Set.contains overhead
on WASM due to SipHash), ~15% faster on create-heavy paths (fewer retain/
release cycles).1 parent 34c5d0d commit 444417f
54 files changed
Lines changed: 464 additions & 43 deletions
File tree
- Benchmarks/Sources/Generated
- Plugins/BridgeJS
- Sources
- BridgeJSCore
- BridgeJSLink
- Tests/BridgeJSToolTests/__Snapshots__
- BridgeJSCodegenTests
- BridgeJSLinkTests
- Sources/JavaScriptKit
- Tests/BridgeJSIdentityTests/Generated
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1531 | 1531 | | |
1532 | 1532 | | |
1533 | 1533 | | |
| 1534 | + | |
| 1535 | + | |
1534 | 1536 | | |
1535 | 1537 | | |
1536 | 1538 | | |
1537 | 1539 | | |
1538 | 1540 | | |
1539 | | - | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
| 1546 | + | |
| 1547 | + | |
| 1548 | + | |
| 1549 | + | |
| 1550 | + | |
| 1551 | + | |
1540 | 1552 | | |
1541 | 1553 | | |
1542 | 1554 | | |
| |||
1651 | 1663 | | |
1652 | 1664 | | |
1653 | 1665 | | |
| 1666 | + | |
1654 | 1667 | | |
1655 | 1668 | | |
1656 | 1669 | | |
| |||
1678 | 1691 | | |
1679 | 1692 | | |
1680 | 1693 | | |
| 1694 | + | |
| 1695 | + | |
1681 | 1696 | | |
1682 | 1697 | | |
1683 | 1698 | | |
1684 | 1699 | | |
1685 | 1700 | | |
1686 | | - | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
| 1710 | + | |
| 1711 | + | |
1687 | 1712 | | |
1688 | 1713 | | |
1689 | 1714 | | |
| |||
1725 | 1750 | | |
1726 | 1751 | | |
1727 | 1752 | | |
| 1753 | + | |
1728 | 1754 | | |
1729 | 1755 | | |
1730 | 1756 | | |
| |||
1752 | 1778 | | |
1753 | 1779 | | |
1754 | 1780 | | |
| 1781 | + | |
| 1782 | + | |
1755 | 1783 | | |
1756 | 1784 | | |
1757 | 1785 | | |
1758 | 1786 | | |
1759 | 1787 | | |
1760 | | - | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
1761 | 1799 | | |
1762 | 1800 | | |
1763 | 1801 | | |
| |||
1788 | 1826 | | |
1789 | 1827 | | |
1790 | 1828 | | |
| 1829 | + | |
1791 | 1830 | | |
1792 | 1831 | | |
1793 | 1832 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
34 | 42 | | |
35 | 43 | | |
36 | 44 | | |
| |||
103 | 111 | | |
104 | 112 | | |
105 | 113 | | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
106 | 117 | | |
107 | 118 | | |
108 | 119 | | |
| |||
323 | 334 | | |
324 | 335 | | |
325 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
326 | 357 | | |
327 | 358 | | |
328 | 359 | | |
| |||
534 | 565 | | |
535 | 566 | | |
536 | 567 | | |
537 | | - | |
| 568 | + | |
| 569 | + | |
538 | 570 | | |
539 | 571 | | |
| 572 | + | |
540 | 573 | | |
541 | 574 | | |
542 | 575 | | |
| |||
548 | 581 | | |
549 | 582 | | |
550 | 583 | | |
551 | | - | |
| 584 | + | |
| 585 | + | |
552 | 586 | | |
553 | 587 | | |
| 588 | + | |
554 | 589 | | |
555 | 590 | | |
556 | 591 | | |
| |||
652 | 687 | | |
653 | 688 | | |
654 | 689 | | |
655 | | - | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
656 | 694 | | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
661 | | - | |
| 695 | + | |
662 | 696 | | |
663 | 697 | | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
664 | 708 | | |
665 | 709 | | |
666 | 710 | | |
667 | 711 | | |
668 | 712 | | |
669 | | - | |
| 713 | + | |
| 714 | + | |
670 | 715 | | |
671 | 716 | | |
672 | 717 | | |
| |||
686 | 731 | | |
687 | 732 | | |
688 | 733 | | |
| 734 | + | |
| 735 | + | |
| 736 | + | |
689 | 737 | | |
690 | 738 | | |
691 | 739 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
86 | 93 | | |
87 | 94 | | |
88 | 95 | | |
| |||
131 | 138 | | |
132 | 139 | | |
133 | 140 | | |
134 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
135 | 155 | | |
136 | 156 | | |
137 | 157 | | |
138 | 158 | | |
139 | 159 | | |
140 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
141 | 175 | | |
142 | 176 | | |
143 | 177 | | |
| |||
350 | 384 | | |
351 | 385 | | |
352 | 386 | | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
353 | 390 | | |
354 | 391 | | |
355 | 392 | | |
| |||
981 | 1018 | | |
982 | 1019 | | |
983 | 1020 | | |
| 1021 | + | |
| 1022 | + | |
| 1023 | + | |
984 | 1024 | | |
985 | 1025 | | |
986 | 1026 | | |
| |||
998 | 1038 | | |
999 | 1039 | | |
1000 | 1040 | | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
| 1053 | + | |
| 1054 | + | |
1001 | 1055 | | |
1002 | 1056 | | |
1003 | 1057 | | |
| |||
1087 | 1141 | | |
1088 | 1142 | | |
1089 | 1143 | | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
1090 | 1150 | | |
1091 | 1151 | | |
1092 | 1152 | | |
| |||
Lines changed: 14 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
1 | 3 | | |
2 | 4 | | |
3 | 5 | | |
4 | 6 | | |
5 | 7 | | |
6 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
7 | 19 | | |
8 | 20 | | |
9 | 21 | | |
| |||
34 | 46 | | |
35 | 47 | | |
36 | 48 | | |
| 49 | + | |
37 | 50 | | |
38 | 51 | | |
39 | 52 | | |
| |||
Lines changed: 4 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
46 | 49 | | |
47 | 50 | | |
48 | 51 | | |
| |||
373 | 376 | | |
374 | 377 | | |
375 | 378 | | |
376 | | - | |
| 379 | + | |
377 | 380 | | |
378 | 381 | | |
379 | 382 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
33 | 36 | | |
34 | 37 | | |
35 | 38 | | |
| |||
0 commit comments