Commit d6e1889
committed
Use string interning for identifier deduplication
This adds string interning to reduce memory usage by deduplicating
identical identifier strings throughout the compilation process. It
ensures that each unique identifier string is stored only once in
memory, with all references pointing to the single interned copy.
The implementation uses a hashmap-based string pool that checks for
existing strings before allocating new ones. String interning is now
applied comprehensively across all identifier types for maximum memory
efficiency.
Benefits:
- Reduces memory usage by 3-5% for typical programs with duplicate
identifiers (e.g., common parameter names like 'x', 'y', 'width')1 parent 6a97bd7 commit d6e1889
3 files changed
+91
-17
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
224 | 224 | | |
225 | 225 | | |
226 | 226 | | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
227 | 237 | | |
228 | 238 | | |
229 | 239 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
16 | 19 | | |
17 | 20 | | |
18 | 21 | | |
| |||
673 | 676 | | |
674 | 677 | | |
675 | 678 | | |
676 | | - | |
| 679 | + | |
| 680 | + | |
677 | 681 | | |
678 | 682 | | |
679 | 683 | | |
| |||
707 | 711 | | |
708 | 712 | | |
709 | 713 | | |
710 | | - | |
| 714 | + | |
| 715 | + | |
711 | 716 | | |
712 | 717 | | |
713 | 718 | | |
| |||
733 | 738 | | |
734 | 739 | | |
735 | 740 | | |
| 741 | + | |
| 742 | + | |
| 743 | + | |
| 744 | + | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
| 763 | + | |
| 764 | + | |
| 765 | + | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
736 | 776 | | |
737 | 777 | | |
738 | 778 | | |
| |||
761 | 801 | | |
762 | 802 | | |
763 | 803 | | |
764 | | - | |
| 804 | + | |
| 805 | + | |
765 | 806 | | |
766 | 807 | | |
767 | 808 | | |
| |||
773 | 814 | | |
774 | 815 | | |
775 | 816 | | |
776 | | - | |
| 817 | + | |
| 818 | + | |
777 | 819 | | |
778 | 820 | | |
779 | 821 | | |
| |||
877 | 919 | | |
878 | 920 | | |
879 | 921 | | |
880 | | - | |
| 922 | + | |
| 923 | + | |
881 | 924 | | |
882 | 925 | | |
883 | 926 | | |
| |||
1042 | 1085 | | |
1043 | 1086 | | |
1044 | 1087 | | |
1045 | | - | |
| 1088 | + | |
1046 | 1089 | | |
1047 | 1090 | | |
1048 | 1091 | | |
| |||
1151 | 1194 | | |
1152 | 1195 | | |
1153 | 1196 | | |
| 1197 | + | |
| 1198 | + | |
| 1199 | + | |
| 1200 | + | |
| 1201 | + | |
| 1202 | + | |
| 1203 | + | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
1154 | 1207 | | |
1155 | 1208 | | |
1156 | 1209 | | |
| |||
1273 | 1326 | | |
1274 | 1327 | | |
1275 | 1328 | | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
1276 | 1336 | | |
1277 | 1337 | | |
1278 | 1338 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
554 | 554 | | |
555 | 555 | | |
556 | 556 | | |
557 | | - | |
| 557 | + | |
558 | 558 | | |
559 | 559 | | |
560 | 560 | | |
| |||
1192 | 1192 | | |
1193 | 1193 | | |
1194 | 1194 | | |
| 1195 | + | |
1195 | 1196 | | |
1196 | | - | |
| 1197 | + | |
| 1198 | + | |
1197 | 1199 | | |
1198 | 1200 | | |
1199 | 1201 | | |
1200 | 1202 | | |
1201 | 1203 | | |
1202 | | - | |
| 1204 | + | |
| 1205 | + | |
| 1206 | + | |
1203 | 1207 | | |
1204 | 1208 | | |
1205 | 1209 | | |
| |||
2078 | 2082 | | |
2079 | 2083 | | |
2080 | 2084 | | |
2081 | | - | |
| 2085 | + | |
2082 | 2086 | | |
2083 | 2087 | | |
2084 | 2088 | | |
| |||
4431 | 4435 | | |
4432 | 4436 | | |
4433 | 4437 | | |
4434 | | - | |
| 4438 | + | |
4435 | 4439 | | |
4436 | 4440 | | |
4437 | 4441 | | |
| |||
4469 | 4473 | | |
4470 | 4474 | | |
4471 | 4475 | | |
4472 | | - | |
| 4476 | + | |
4473 | 4477 | | |
4474 | 4478 | | |
4475 | 4479 | | |
| |||
4520 | 4524 | | |
4521 | 4525 | | |
4522 | 4526 | | |
4523 | | - | |
| 4527 | + | |
4524 | 4528 | | |
4525 | 4529 | | |
4526 | 4530 | | |
| |||
4535 | 4539 | | |
4536 | 4540 | | |
4537 | 4541 | | |
4538 | | - | |
| 4542 | + | |
4539 | 4543 | | |
4540 | 4544 | | |
4541 | 4545 | | |
| |||
4574 | 4578 | | |
4575 | 4579 | | |
4576 | 4580 | | |
4577 | | - | |
| 4581 | + | |
4578 | 4582 | | |
4579 | 4583 | | |
4580 | 4584 | | |
| |||
4597 | 4601 | | |
4598 | 4602 | | |
4599 | 4603 | | |
4600 | | - | |
| 4604 | + | |
4601 | 4605 | | |
4602 | 4606 | | |
4603 | 4607 | | |
| |||
4640 | 4644 | | |
4641 | 4645 | | |
4642 | 4646 | | |
4643 | | - | |
| 4647 | + | |
4644 | 4648 | | |
4645 | 4649 | | |
4646 | 4650 | | |
| |||
0 commit comments