Commit 1540c4d
committed
Serialize Protocol/ProtocolFn in bootstrap cache, fix startup regression (D95)
Startup regressed 4.5ms→23.3ms and memory 10MB→226MB because
reloadProtocolNamespaces re-evaluated ~440 lines of protocols.clj +
reducers.clj at every startup. Fix by making Protocol/ProtocolFn values
serializable in the bootstrap cache (D81).
Key changes:
- Protocol: serialize name + method_sigs + impls (nested type→method maps)
- ProtocolFn: serialize method_name + protocol var ref (deferred fixup)
- Fn: serialize closure_bindings (captured upvalues)
- Protocol.generation counter + ProtocolFn.cached_generation for cache
invalidation when impls change (fixes reify stale cache bug)
- extend_type_method: replace existing methods instead of always appending
- Remove reloadProtocolNamespaces from bootstrap restore path
- Simplify bootstrapFromCache (remove gc parameter, protocol reload)
Result: startup 23.3ms→5.3ms (4.4x), memory 226MB→8.1MB (28x reduction).1 parent a5054c9 commit 1540c4d
File tree
8 files changed
+397
-69
lines changed- .dev
- src
- compiler
- evaluator
- runtime
- vm
8 files changed
+397
-69
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
560 | 560 | | |
561 | 561 | | |
562 | 562 | | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
28 | | - | |
| 29 | + | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
849 | 849 | | |
850 | 850 | | |
851 | 851 | | |
852 | | - | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
853 | 855 | | |
854 | 856 | | |
855 | 857 | | |
| |||
866 | 868 | | |
867 | 869 | | |
868 | 870 | | |
| 871 | + | |
869 | 872 | | |
870 | 873 | | |
871 | 874 | | |
| |||
954 | 957 | | |
955 | 958 | | |
956 | 959 | | |
| 960 | + | |
957 | 961 | | |
958 | 962 | | |
959 | 963 | | |
| |||
1007 | 1011 | | |
1008 | 1012 | | |
1009 | 1013 | | |
| 1014 | + | |
1010 | 1015 | | |
1011 | 1016 | | |
1012 | 1017 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
254 | | - | |
255 | | - | |
256 | | - | |
| 254 | + | |
257 | 255 | | |
258 | 256 | | |
259 | 257 | | |
| |||
435 | 433 | | |
436 | 434 | | |
437 | 435 | | |
438 | | - | |
439 | | - | |
440 | | - | |
441 | | - | |
442 | | - | |
443 | | - | |
| 436 | + | |
444 | 437 | | |
445 | 438 | | |
446 | 439 | | |
| |||
486 | 479 | | |
487 | 480 | | |
488 | 481 | | |
489 | | - | |
490 | | - | |
491 | | - | |
| 482 | + | |
492 | 483 | | |
493 | 484 | | |
494 | 485 | | |
| |||
505 | 496 | | |
506 | 497 | | |
507 | 498 | | |
508 | | - | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
509 | 502 | | |
510 | 503 | | |
511 | 504 | | |
| |||
515 | 508 | | |
516 | 509 | | |
517 | 510 | | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
518 | 517 | | |
519 | 518 | | |
520 | 519 | | |
| |||
551 | 550 | | |
552 | 551 | | |
553 | 552 | | |
554 | | - | |
555 | | - | |
556 | | - | |
| 553 | + | |
557 | 554 | | |
558 | 555 | | |
559 | 556 | | |
| |||
1565 | 1562 | | |
1566 | 1563 | | |
1567 | 1564 | | |
1568 | | - | |
| 1565 | + | |
1569 | 1566 | | |
1570 | 1567 | | |
1571 | 1568 | | |
1572 | 1569 | | |
1573 | | - | |
1574 | | - | |
1575 | | - | |
1576 | | - | |
1577 | 1570 | | |
1578 | 1571 | | |
1579 | 1572 | | |
| |||
1591 | 1584 | | |
1592 | 1585 | | |
1593 | 1586 | | |
1594 | | - | |
1595 | | - | |
1596 | | - | |
1597 | | - | |
| 1587 | + | |
1598 | 1588 | | |
1599 | 1589 | | |
1600 | 1590 | | |
| |||
1638 | 1628 | | |
1639 | 1629 | | |
1640 | 1630 | | |
1641 | | - | |
| 1631 | + | |
1642 | 1632 | | |
1643 | 1633 | | |
1644 | 1634 | | |
1645 | | - | |
1646 | | - | |
1647 | | - | |
1648 | 1635 | | |
1649 | 1636 | | |
1650 | 1637 | | |
| |||
1725 | 1712 | | |
1726 | 1713 | | |
1727 | 1714 | | |
1728 | | - | |
1729 | | - | |
| 1715 | + | |
1730 | 1716 | | |
1731 | 1717 | | |
1732 | 1718 | | |
| |||
1828 | 1814 | | |
1829 | 1815 | | |
1830 | 1816 | | |
1831 | | - | |
1832 | | - | |
1833 | | - | |
| 1817 | + | |
1834 | 1818 | | |
1835 | 1819 | | |
1836 | 1820 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1272 | 1272 | | |
1273 | 1273 | | |
1274 | 1274 | | |
1275 | | - | |
1276 | | - | |
1277 | | - | |
1278 | | - | |
1279 | | - | |
1280 | 1275 | | |
1281 | 1276 | | |
1282 | 1277 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
412 | 412 | | |
413 | 413 | | |
414 | 414 | | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
415 | 418 | | |
416 | 419 | | |
417 | 420 | | |
| |||
426 | 429 | | |
427 | 430 | | |
428 | 431 | | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
429 | 435 | | |
430 | 436 | | |
431 | 437 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
838 | 838 | | |
839 | 839 | | |
840 | 840 | | |
841 | | - | |
| 841 | + | |
842 | 842 | | |
843 | 843 | | |
844 | | - | |
845 | | - | |
846 | | - | |
847 | | - | |
848 | | - | |
849 | | - | |
850 | | - | |
851 | | - | |
852 | | - | |
853 | | - | |
854 | | - | |
855 | | - | |
856 | | - | |
857 | | - | |
858 | | - | |
859 | | - | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
860 | 877 | | |
861 | 878 | | |
862 | 879 | | |
| |||
882 | 899 | | |
883 | 900 | | |
884 | 901 | | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
885 | 905 | | |
886 | 906 | | |
887 | 907 | | |
| |||
1344 | 1364 | | |
1345 | 1365 | | |
1346 | 1366 | | |
1347 | | - | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
1348 | 1370 | | |
1349 | 1371 | | |
1350 | 1372 | | |
| |||
1360 | 1382 | | |
1361 | 1383 | | |
1362 | 1384 | | |
| 1385 | + | |
1363 | 1386 | | |
1364 | 1387 | | |
1365 | 1388 | | |
| |||
0 commit comments