Changeset 70f97c8
- Timestamp:
- Jul 3, 2023, 1:12:51 PM (2 years ago)
- Branches:
- master
- Children:
- 96ea77a
- Parents:
- 00b046f (diff), 1ae3ac46 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 47 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/papers/llheap/figures/AddressSpace.fig
r00b046f r70f97c8 32 32 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 33 33 3900 1350 4800 1350 4800 2100 3900 2100 3900 1350 34 4 0 0 50 -1 0 1 10.0000 2 180 900 1200 2325 high address\00135 4 2 0 50 -1 0 1 10.0000 2 135 855 6600 2325 low address\00136 4 1 0 50 -1 0 1 10.0000 2 120 330 6150 2025 Data\00137 4 1 0 50 -1 0 1 10.0000 2 135 675 6150 1800 Code and\00138 4 1 0 50 -1 0 1 10.0000 2 120 390 6150 1575 Static\00139 4 1 0 50 -1 0 1 10.0000 2 135 390 1650 1800 Stack\00140 4 1 0 50 -1 0 1 10.0000 2 165 615 2550 1950 Memory\00141 4 1 0 50 -1 0 1 10.0000 2 165 615 4350 1950 Memory\00142 4 1 0 50 -1 0 1 10.0000 2 120 315 2550 1650 Free\00143 4 1 0 50 -1 0 1 10.0000 2 120 330 3450 2025 Data\00144 4 1 0 50 -1 0 1 10.0000 2 135 675 3450 1800 Code and\00145 4 1 0 50 -1 0 1 10.0000 2 165 645 3450 1575 Dynamic\00146 4 1 0 50 -1 0 1 10.0000 2 120 315 4350 1650 Free\00147 4 1 0 50 -1 0 1 10.0000 2 120 735 5250 1950 Allocation\00148 4 1 0 50 -1 0 1 10.0000 2 165 645 5250 1650 Dynamic\00134 4 0 0 50 -1 0 10 0.0000 2 180 900 1200 2325 high address\001 35 4 2 0 50 -1 0 10 0.0000 2 135 855 6600 2325 low address\001 36 4 1 0 50 -1 0 10 0.0000 2 120 330 6150 2025 Data\001 37 4 1 0 50 -1 0 10 0.0000 2 135 675 6150 1800 Code and\001 38 4 1 0 50 -1 0 10 0.0000 2 120 390 6150 1575 Static\001 39 4 1 0 50 -1 0 10 0.0000 2 135 390 1650 1800 Stack\001 40 4 1 0 50 -1 0 10 0.0000 2 165 615 2550 1950 Memory\001 41 4 1 0 50 -1 0 10 0.0000 2 165 615 4350 1950 Memory\001 42 4 1 0 50 -1 0 10 0.0000 2 120 315 2550 1650 Free\001 43 4 1 0 50 -1 0 10 0.0000 2 120 330 3450 2025 Data\001 44 4 1 0 50 -1 0 10 0.0000 2 135 675 3450 1800 Code and\001 45 4 1 0 50 -1 0 10 0.0000 2 165 645 3450 1575 Dynamic\001 46 4 1 0 50 -1 0 10 0.0000 2 120 315 4350 1650 Free\001 47 4 1 0 50 -1 0 10 0.0000 2 120 735 5250 1950 Allocation\001 48 4 1 0 50 -1 0 10 0.0000 2 165 645 5250 1650 Dynamic\001 -
doc/papers/llheap/figures/Alignment1.fig
r00b046f r70f97c8 11 11 1 1 1.00 45.00 90.00 12 12 6 6525 1575 7650 1800 13 4 0 0 50 -1 4 1 20.0000 2 195 1095 6525 1725 E$^{\\prime}$\00113 4 0 0 50 -1 4 10 0.0000 2 195 1095 6525 1725 E$^{\\prime}$\001 14 14 -6 15 15 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 … … 25 25 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 26 26 3300 1200 6600 1200 6600 1500 3300 1500 3300 1200 27 4 1 0 50 -1 4 1 20.0000 2 150 135 2100 1725 E\00128 4 1 0 50 -1 0 1 20.0000 2 180 510 4800 1425 object\00129 4 1 0 50 -1 0 1 20.0000 2 135 585 6150 1425 unused\00130 4 1 0 50 -1 0 1 20.0000 2 180 1185 1650 1425 $\\cdots$ heap\00131 4 0 0 50 -1 4 1 20.0000 2 180 390 4200 1725 A(P)\00132 4 1 0 50 -1 0 1 20.0000 2 135 540 3750 1425 header\00133 4 1 0 50 -1 0 1 20.0000 2 135 300 2700 1425 free\00134 4 1 0 50 -1 4 1 20.0000 2 150 135 3300 1725 H\00135 4 0 0 50 -1 0 1 20.0000 2 180 1200 4650 1725 (multiple of N)\00127 4 1 0 50 -1 4 10 0.0000 2 150 135 2100 1725 E\001 28 4 1 0 50 -1 0 10 0.0000 2 180 510 4800 1425 object\001 29 4 1 0 50 -1 0 10 0.0000 2 135 585 6150 1425 unused\001 30 4 1 0 50 -1 0 10 0.0000 2 180 1185 1650 1425 $\\cdots$ heap\001 31 4 0 0 50 -1 4 10 0.0000 2 180 390 4200 1725 A(P)\001 32 4 1 0 50 -1 0 10 0.0000 2 135 540 3750 1425 header\001 33 4 1 0 50 -1 0 10 0.0000 2 135 300 2700 1425 free\001 34 4 1 0 50 -1 4 10 0.0000 2 150 135 3300 1725 H\001 35 4 0 0 50 -1 0 10 0.0000 2 180 1200 4650 1725 (multiple of N)\001 -
doc/papers/llheap/figures/Alignment2.fig
r00b046f r70f97c8 20 20 2 2 0 0 0 7 60 -1 18 0.000 0 0 -1 0 0 5 21 21 5700 1500 6600 1500 6600 1800 5700 1800 5700 1500 22 4 1 0 50 -1 0 1 20.0000 2 135 540 1650 1725 header\00123 4 1 0 50 -1 4 1 20.0000 2 150 135 1200 2025 H\00124 4 1 0 50 -1 4 1 20.0000 2 150 135 2100 2025 P\00125 4 0 0 50 -1 0 1 20.0000 2 180 1575 2175 2025 (min. alignment M)\00126 4 1 0 50 -1 0 1 20.0000 2 180 510 4950 1725 object\00127 4 1 0 50 -1 0 1 20.0000 2 135 315 4950 1425 size\00128 4 1 0 50 -1 0 1 20.0000 2 180 1815 3150 1425 internal fragmentation\00129 4 1 0 50 -1 0 1 20.0000 2 135 585 6150 1725 unused\00130 4 1 0 50 -1 4 1 20.0000 2 150 135 4200 2025 A\00131 4 0 0 50 -1 0 1 20.0000 2 180 1200 4275 2025 (multiple of N)\00122 4 1 0 50 -1 0 10 0.0000 2 135 540 1650 1725 header\001 23 4 1 0 50 -1 4 10 0.0000 2 150 135 1200 2025 H\001 24 4 1 0 50 -1 4 10 0.0000 2 150 135 2100 2025 P\001 25 4 0 0 50 -1 0 10 0.0000 2 180 1575 2175 2025 (min. alignment M)\001 26 4 1 0 50 -1 0 10 0.0000 2 180 510 4950 1725 object\001 27 4 1 0 50 -1 0 10 0.0000 2 135 315 4950 1425 size\001 28 4 1 0 50 -1 0 10 0.0000 2 180 1815 3150 1425 internal fragmentation\001 29 4 1 0 50 -1 0 10 0.0000 2 135 585 6150 1725 unused\001 30 4 1 0 50 -1 4 10 0.0000 2 150 135 4200 2025 A\001 31 4 0 0 50 -1 0 10 0.0000 2 180 1200 4275 2025 (multiple of N)\001 -
doc/papers/llheap/figures/Alignment2Impl.fig
r00b046f r70f97c8 21 21 2 2 0 0 0 7 60 -1 18 0.000 0 0 -1 0 0 5 22 22 2100 1500 3300 1500 3300 1875 2100 1875 2100 1500 23 4 1 0 50 -1 0 1 20.0000 2 180 1815 2550 1425 internal fragmentation\00124 4 1 0 50 -1 0 1 20.0000 2 180 510 4950 1725 object\00125 4 1 0 50 -1 0 1 20.0000 2 135 315 4950 1425 size\00126 4 1 0 50 -1 4 1 20.0000 2 150 135 1200 2100 H\00127 4 1 0 50 -1 4 1 20.0000 2 150 135 2100 2100 P\00128 4 0 0 50 -1 0 1 20.0000 2 180 1575 2175 2100 (min. alignment M)\00129 4 1 0 50 -1 4 1 20.0000 2 150 135 4200 2100 A\00130 4 0 0 50 -1 0 1 20.0000 2 180 1200 4275 2100 (multiple of N)\00131 4 1 0 50 -1 0 1 20.0000 2 135 540 3750 1850 header\00132 4 1 0 50 -1 0 1 20.0000 2 135 345 3750 1700 fake\00133 4 1 0 50 -1 0 1 20.0000 2 135 450 2700 1700 offset\00134 4 1 0 50 -1 0 1 20.0000 2 135 540 1650 1850 header\00135 4 1 0 50 -1 0 1 20.0000 2 135 570 1650 1675 normal\00123 4 1 0 50 -1 0 10 0.0000 2 180 1815 2550 1425 internal fragmentation\001 24 4 1 0 50 -1 0 10 0.0000 2 180 510 4950 1725 object\001 25 4 1 0 50 -1 0 10 0.0000 2 135 315 4950 1425 size\001 26 4 1 0 50 -1 4 10 0.0000 2 150 135 1200 2100 H\001 27 4 1 0 50 -1 4 10 0.0000 2 150 135 2100 2100 P\001 28 4 0 0 50 -1 0 10 0.0000 2 180 1575 2175 2100 (min. alignment M)\001 29 4 1 0 50 -1 4 10 0.0000 2 150 135 4200 2100 A\001 30 4 0 0 50 -1 0 10 0.0000 2 180 1200 4275 2100 (multiple of N)\001 31 4 1 0 50 -1 0 10 0.0000 2 135 540 3750 1850 header\001 32 4 1 0 50 -1 0 10 0.0000 2 135 345 3750 1700 fake\001 33 4 1 0 50 -1 0 10 0.0000 2 135 450 2700 1700 offset\001 34 4 1 0 50 -1 0 10 0.0000 2 135 540 1650 1850 header\001 35 4 1 0 50 -1 0 10 0.0000 2 135 570 1650 1675 normal\001 -
doc/papers/llheap/figures/AllocDS1.fig
r00b046f r70f97c8 114 114 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 115 115 3600 3150 5100 3150 5100 3525 3600 3525 3600 3150 116 4 2 0 50 -1 0 1 10.0000 2 135 300 2625 1950 lock\001117 4 1 0 50 -1 0 1 10.0000 2 150 1155 3000 1725 N$\\times$S$_1$\001118 4 1 0 50 -1 0 1 10.0000 2 150 1155 3600 1725 N$\\times$S$_2$\001119 4 1 0 50 -1 0 1 20.0000 2 180 390 4425 1500 heap\001120 4 2 0 50 -1 0 1 20.0000 2 135 1140 2550 1425 kernel threads\001121 4 2 0 50 -1 0 1 10.0000 2 120 270 2625 2100 size\001122 4 2 0 50 -1 0 1 10.0000 2 120 270 2625 2250 free\001123 4 2 0 50 -1 0 1 20.0000 2 135 600 2625 2700 free list\001124 4 0 0 50 -1 0 1 20.0000 2 135 360 3675 3325 lock\001125 4 1 0 50 -1 0 1 20.0000 2 180 1455 4350 3075 global pool (sbrk)\001126 4 1 0 50 -1 0 1 10.0000 2 150 1110 4800 1725 N$\\times$S$_t$\001116 4 2 0 50 -1 0 10 0.0000 2 135 300 2625 1950 lock\001 117 4 1 0 50 -1 0 10 0.0000 2 150 1155 3000 1725 N$\\times$S$_1$\001 118 4 1 0 50 -1 0 10 0.0000 2 150 1155 3600 1725 N$\\times$S$_2$\001 119 4 1 0 50 -1 0 10 0.0000 2 180 390 4425 1500 heap\001 120 4 2 0 50 -1 0 10 0.0000 2 135 1140 2550 1425 kernel threads\001 121 4 2 0 50 -1 0 10 0.0000 2 120 270 2625 2100 size\001 122 4 2 0 50 -1 0 10 0.0000 2 120 270 2625 2250 free\001 123 4 2 0 50 -1 0 10 0.0000 2 135 600 2625 2700 free list\001 124 4 0 0 50 -1 0 10 0.0000 2 135 360 3675 3325 lock\001 125 4 1 0 50 -1 0 10 0.0000 2 180 1455 4350 3075 global pool (sbrk)\001 126 4 1 0 50 -1 0 10 0.0000 2 150 1110 4800 1725 N$\\times$S$_t$\001 -
doc/papers/llheap/figures/AllocDS2.fig
r00b046f r70f97c8 40 40 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 41 41 1950 3525 3150 3525 3150 3900 1950 3900 1950 3525 42 4 0 0 50 -1 0 1 20.0000 2 135 360 2025 3700 lock\00142 4 0 0 50 -1 0 10 0.0000 2 135 360 2025 3700 lock\001 43 43 -6 44 44 6 4050 1575 4350 1725 … … 58 58 1 3 0 1 0 0 50 -1 20 0.000 1 0.0000 5100 3675 20 20 5100 3675 5120 3675 59 59 -6 60 4 1 0 50 -1 0 1 20.0000 2 180 900 5700 3150 local pools\00161 4 1 0 50 -1 0 1 20.0000 2 180 465 5700 2925 heaps\00160 4 1 0 50 -1 0 10 0.0000 2 180 900 5700 3150 local pools\001 61 4 1 0 50 -1 0 10 0.0000 2 180 465 5700 2925 heaps\001 62 62 -6 63 63 6 3600 4050 5100 4650 … … 67 67 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 68 68 3600 4275 5100 4275 5100 4650 3600 4650 3600 4275 69 4 1 0 50 -1 0 1 20.0000 2 180 1455 4350 4200 global pool (sbrk)\00170 4 0 0 50 -1 0 1 20.0000 2 135 360 3675 4450 lock\00169 4 1 0 50 -1 0 10 0.0000 2 180 1455 4350 4200 global pool (sbrk)\001 70 4 0 0 50 -1 0 10 0.0000 2 135 360 3675 4450 lock\001 71 71 -6 72 72 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 … … 137 137 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 138 138 3450 2400 4650 2400 139 4 2 0 50 -1 0 1 10.0000 2 135 300 1875 2250 lock\001140 4 1 0 50 -1 0 1 20.0000 2 180 1245 3900 1425 H heap buckets\001141 4 1 0 50 -1 0 1 20.0000 2 180 810 4425 2025 heap$_2$\001142 4 1 0 50 -1 0 1 20.0000 2 180 810 2175 2025 heap$_1$\001143 4 2 0 50 -1 0 1 10.0000 2 120 270 1875 2400 size\001144 4 2 0 50 -1 0 1 10.0000 2 120 270 1875 2550 free\001145 4 1 0 50 -1 0 1 20.0000 2 180 825 2550 3450 local pool\001146 4 0 0 50 -1 0 1 20.0000 2 135 360 3525 3700 lock\001147 4 2 0 50 -1 0 1 20.0000 2 135 600 1875 3000 free list\001148 4 1 0 50 -1 0 1 20.0000 2 180 825 4050 3450 local pool\001139 4 2 0 50 -1 0 10 0.0000 2 135 300 1875 2250 lock\001 140 4 1 0 50 -1 0 10 0.0000 2 180 1245 3900 1425 H heap buckets\001 141 4 1 0 50 -1 0 10 0.0000 2 180 810 4425 2025 heap$_2$\001 142 4 1 0 50 -1 0 10 0.0000 2 180 810 2175 2025 heap$_1$\001 143 4 2 0 50 -1 0 10 0.0000 2 120 270 1875 2400 size\001 144 4 2 0 50 -1 0 10 0.0000 2 120 270 1875 2550 free\001 145 4 1 0 50 -1 0 10 0.0000 2 180 825 2550 3450 local pool\001 146 4 0 0 50 -1 0 10 0.0000 2 135 360 3525 3700 lock\001 147 4 2 0 50 -1 0 10 0.0000 2 135 600 1875 3000 free list\001 148 4 1 0 50 -1 0 10 0.0000 2 180 825 4050 3450 local pool\001 -
doc/papers/llheap/figures/AllocInducedActiveFalseSharing.fig
r00b046f r70f97c8 13 13 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 14 14 3450 2700 4350 2700 4350 3000 3450 3000 3450 2700 15 4 1 0 50 -1 0 1 10.0000 2 165 825 3000 2925 Object$_1$\00116 4 1 0 50 -1 0 1 10.0000 2 165 825 3900 2925 Object$_2$\00115 4 1 0 50 -1 0 10 0.0000 2 165 825 3000 2925 Object$_1$\001 16 4 1 0 50 -1 0 10 0.0000 2 165 825 3900 2925 Object$_2$\001 17 17 -6 18 18 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 … … 38 38 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 39 39 5625 1500 4875 1500 4875 1275 5625 1275 5625 1500 40 4 1 0 50 -1 0 1 10.0000 2 165 855 2850 1425 Thread$_1$\00141 4 0 0 50 -1 0 1 10.0000 2 165 720 1275 1425 CPU$_1$\00142 4 1 0 50 -1 0 1 10.0000 2 135 435 2250 1725 Cache\00143 4 1 0 50 -1 0 1 10.0000 2 165 825 1800 2025 Object$_1$\00144 4 1 0 50 -1 0 1 10.0000 2 165 825 2700 2025 Object$_2$\00145 4 2 0 50 -1 2 1 10.0000 2 135 525 2550 2550 1. alloc\00146 4 1 0 50 -1 0 1 10.0000 2 165 855 5250 1425 Thread$_2$\00147 4 0 0 50 -1 0 1 10.0000 2 165 720 3675 1425 CPU$_2$\00148 4 1 0 50 -1 0 1 10.0000 2 165 825 4200 2025 Object$_1$\00149 4 1 0 50 -1 0 1 10.0000 2 165 825 5100 2025 Object$_2$\00150 4 1 0 50 -1 0 1 10.0000 2 135 435 4650 1725 Cache\00151 4 2 0 50 -1 0 1 10.0000 2 165 615 2475 2925 Memory\00152 4 0 0 50 -1 2 1 10.0000 2 180 720 4350 2550 4. modify\00153 4 2 0 50 -1 2 1 10.0000 2 135 525 4200 2475 3. alloc\00154 4 0 0 50 -1 2 1 10.0000 2 180 720 2700 2475 2. modify\00140 4 1 0 50 -1 0 10 0.0000 2 165 855 2850 1425 Thread$_1$\001 41 4 0 0 50 -1 0 10 0.0000 2 165 720 1275 1425 CPU$_1$\001 42 4 1 0 50 -1 0 10 0.0000 2 135 435 2250 1725 Cache\001 43 4 1 0 50 -1 0 10 0.0000 2 165 825 1800 2025 Object$_1$\001 44 4 1 0 50 -1 0 10 0.0000 2 165 825 2700 2025 Object$_2$\001 45 4 2 0 50 -1 2 10 0.0000 2 135 525 2550 2550 1. alloc\001 46 4 1 0 50 -1 0 10 0.0000 2 165 855 5250 1425 Thread$_2$\001 47 4 0 0 50 -1 0 10 0.0000 2 165 720 3675 1425 CPU$_2$\001 48 4 1 0 50 -1 0 10 0.0000 2 165 825 4200 2025 Object$_1$\001 49 4 1 0 50 -1 0 10 0.0000 2 165 825 5100 2025 Object$_2$\001 50 4 1 0 50 -1 0 10 0.0000 2 135 435 4650 1725 Cache\001 51 4 2 0 50 -1 0 10 0.0000 2 165 615 2475 2925 Memory\001 52 4 0 0 50 -1 2 10 0.0000 2 180 720 4350 2550 4. modify\001 53 4 2 0 50 -1 2 10 0.0000 2 135 525 4200 2475 3. alloc\001 54 4 0 0 50 -1 2 10 0.0000 2 180 720 2700 2475 2. modify\001 -
doc/papers/llheap/figures/AllocInducedPassiveFalseSharing.fig
r00b046f r70f97c8 15 15 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 16 16 3450 3000 4350 3000 4350 3300 3450 3300 3450 3000 17 4 1 0 50 -1 0 1 10.0000 2 165 825 3000 3225 Object$_1$\00118 4 1 0 50 -1 0 1 10.0000 2 165 825 3900 3225 Object$_2$\00117 4 1 0 50 -1 0 10 0.0000 2 165 825 3000 3225 Object$_1$\001 18 4 1 0 50 -1 0 10 0.0000 2 165 825 3900 3225 Object$_2$\001 19 19 -6 20 20 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 … … 40 40 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 41 41 5625 1800 4875 1800 4875 1575 5625 1575 5625 1800 42 4 1 0 50 -1 0 1 10.0000 2 165 855 2850 1725 Thread$_1$\00143 4 0 0 50 -1 0 1 10.0000 2 165 720 1275 1725 CPU$_1$\00144 4 1 0 50 -1 0 1 10.0000 2 135 435 2250 2025 Cache\00145 4 1 0 50 -1 0 1 10.0000 2 165 825 1800 2325 Object$_1$\00146 4 1 0 50 -1 0 1 10.0000 2 165 825 2700 2325 Object$_2$\00147 4 1 0 50 -1 0 1 10.0000 2 165 855 5250 1725 Thread$_2$\00148 4 0 0 50 -1 0 1 10.0000 2 165 720 3675 1725 CPU$_2$\00149 4 1 0 50 -1 0 1 10.0000 2 165 825 4200 2325 Object$_1$\00150 4 1 0 50 -1 0 1 10.0000 2 165 825 5100 2325 Object$_2$\00151 4 1 0 50 -1 0 1 10.0000 2 135 435 4650 2025 Cache\00152 4 0 0 50 -1 2 1 10.0000 2 180 720 4350 2850 6. modify\00153 4 2 0 50 -1 0 1 10.0000 2 165 615 2475 3225 Memory\00154 4 2 0 50 -1 2 1 10.0000 2 135 525 2550 2850 1. alloc\00155 4 0 0 50 -1 2 1 10.0000 2 180 720 2700 2775 3. modify\00156 4 2 0 50 -1 2 1 10.0000 2 135 525 3975 2925 5. alloc\00157 4 2 0 50 -1 2 1 10.0000 2 135 705 4275 2775 4. dealloc\00158 4 1 0 50 -1 2 1 10.0000 2 165 2220 4050 1275 2. pass Object$_2$ reference\00142 4 1 0 50 -1 0 10 0.0000 2 165 855 2850 1725 Thread$_1$\001 43 4 0 0 50 -1 0 10 0.0000 2 165 720 1275 1725 CPU$_1$\001 44 4 1 0 50 -1 0 10 0.0000 2 135 435 2250 2025 Cache\001 45 4 1 0 50 -1 0 10 0.0000 2 165 825 1800 2325 Object$_1$\001 46 4 1 0 50 -1 0 10 0.0000 2 165 825 2700 2325 Object$_2$\001 47 4 1 0 50 -1 0 10 0.0000 2 165 855 5250 1725 Thread$_2$\001 48 4 0 0 50 -1 0 10 0.0000 2 165 720 3675 1725 CPU$_2$\001 49 4 1 0 50 -1 0 10 0.0000 2 165 825 4200 2325 Object$_1$\001 50 4 1 0 50 -1 0 10 0.0000 2 165 825 5100 2325 Object$_2$\001 51 4 1 0 50 -1 0 10 0.0000 2 135 435 4650 2025 Cache\001 52 4 0 0 50 -1 2 10 0.0000 2 180 720 4350 2850 6. modify\001 53 4 2 0 50 -1 0 10 0.0000 2 165 615 2475 3225 Memory\001 54 4 2 0 50 -1 2 10 0.0000 2 135 525 2550 2850 1. alloc\001 55 4 0 0 50 -1 2 10 0.0000 2 180 720 2700 2775 3. modify\001 56 4 2 0 50 -1 2 10 0.0000 2 135 525 3975 2925 5. alloc\001 57 4 2 0 50 -1 2 10 0.0000 2 135 705 4275 2775 4. dealloc\001 58 4 1 0 50 -1 2 10 0.0000 2 165 2220 4050 1275 2. pass Object$_2$ reference\001 -
doc/papers/llheap/figures/AllocatedObject.fig
r00b046f r70f97c8 22 22 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 23 23 4800 1200 4800 1500 24 4 1 0 50 -1 0 1 10.0000 2 135 555 1650 1425 Header\00125 4 1 0 50 -1 0 1 10.0000 2 180 600 2550 1425 Padding\00126 4 1 0 50 -1 0 1 10.0000 2 180 510 3450 1425 Object\00127 4 1 0 50 -1 0 1 10.0000 2 180 600 4350 1425 Spacing\00128 4 1 0 50 -1 0 1 10.0000 2 135 495 5250 1425 Trailer\00124 4 1 0 50 -1 0 10 0.0000 2 135 555 1650 1425 Header\001 25 4 1 0 50 -1 0 10 0.0000 2 180 600 2550 1425 Padding\001 26 4 1 0 50 -1 0 10 0.0000 2 180 510 3450 1425 Object\001 27 4 1 0 50 -1 0 10 0.0000 2 180 600 4350 1425 Spacing\001 28 4 1 0 50 -1 0 10 0.0000 2 135 495 5250 1425 Trailer\001 -
doc/papers/llheap/figures/AllocatorComponents.fig
r00b046f r70f97c8 58 58 2 2 0 1 0 7 60 -1 13 0.000 0 0 -1 0 0 5 59 59 3300 2700 6300 2700 6300 3000 3300 3000 3300 2700 60 4 0 0 50 -1 2 1 10.0000 2 165 1005 3300 1725 Storage Data\00161 4 2 0 50 -1 0 1 10.0000 2 165 810 3000 1875 free objects\00162 4 2 0 50 -1 0 1 10.0000 2 135 1140 3000 2850 reserve memory\00163 4 1 0 50 -1 0 1 10.0000 2 120 795 2325 1500 Static Zone\00164 4 1 0 50 -1 0 1 10.0000 2 165 1845 4800 1500 Dynamic-Allocation Zone\00165 4 2 0 50 -1 2 1 10.0000 2 165 1005 2325 2325 Management\00166 4 2 0 50 -1 2 1 10.0000 2 135 375 2325 2525 Data\00160 4 0 0 50 -1 2 10 0.0000 2 165 1005 3300 1725 Storage Data\001 61 4 2 0 50 -1 0 10 0.0000 2 165 810 3000 1875 free objects\001 62 4 2 0 50 -1 0 10 0.0000 2 135 1140 3000 2850 reserve memory\001 63 4 1 0 50 -1 0 10 0.0000 2 120 795 2325 1500 Static Zone\001 64 4 1 0 50 -1 0 10 0.0000 2 165 1845 4800 1500 Dynamic-Allocation Zone\001 65 4 2 0 50 -1 2 10 0.0000 2 165 1005 2325 2325 Management\001 66 4 2 0 50 -1 2 10 0.0000 2 135 375 2325 2525 Data\001 -
doc/papers/llheap/figures/CoalesceAllocated.fig
r00b046f r70f97c8 19 19 1 1 1.00 45.00 90.00 20 20 2550 1200 2550 1050 1800 1050 21 4 1 0 50 -1 0 1 10.0000 2 180 510 3450 1425 Object\00122 4 1 0 50 -1 0 1 10.0000 2 135 330 1650 1425 Size\00123 4 1 0 50 -1 0 1 10.0000 2 135 510 2550 1425 Owner\00124 4 1 0 50 -1 0 1 10.0000 2 195 780 4350 1425 $\\pm$Size\00121 4 1 0 50 -1 0 10 0.0000 2 180 510 3450 1425 Object\001 22 4 1 0 50 -1 0 10 0.0000 2 135 330 1650 1425 Size\001 23 4 1 0 50 -1 0 10 0.0000 2 135 510 2550 1425 Owner\001 24 4 1 0 50 -1 0 10 0.0000 2 195 780 4350 1425 $\\pm$Size\001 -
doc/papers/llheap/figures/CoalesceFree.fig
r00b046f r70f97c8 22 22 2 2 0 1 0 7 60 -1 18 0.000 0 0 -1 0 0 5 23 23 2100 1200 3000 1200 3000 1500 2100 1500 2100 1200 24 4 1 0 50 -1 0 1 10.0000 2 195 780 4350 1425 $\\pm$Size\00125 4 1 0 50 -1 0 1 10.0000 2 135 330 1650 1425 Size\00126 4 1 0 50 -1 0 1 10.0000 2 135 660 2550 1425 Previous\00127 4 1 0 50 -1 0 1 10.0000 2 135 375 3450 1425 Next\00124 4 1 0 50 -1 0 10 0.0000 2 195 780 4350 1425 $\\pm$Size\001 25 4 1 0 50 -1 0 10 0.0000 2 135 330 1650 1425 Size\001 26 4 1 0 50 -1 0 10 0.0000 2 135 660 2550 1425 Previous\001 27 4 1 0 50 -1 0 10 0.0000 2 135 375 3450 1425 Next\001 -
doc/papers/llheap/figures/Container.fig
r00b046f r70f97c8 11 11 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1275 1200 2025 1200 2025 1500 1275 1500 1275 1200 13 4 1 0 50 -1 0 1 10.0000 2 135 555 1650 1425 Header\00113 4 1 0 50 -1 0 10 0.0000 2 135 555 1650 1425 Header\001 14 14 -6 15 15 6 1950 1125 2850 1575 16 16 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 17 17 2025 1200 2775 1200 2775 1500 2025 1500 2025 1200 18 4 1 0 50 -1 0 1 10.0000 2 195 870 2400 1425 Object$_1$\00118 4 1 0 50 -1 0 10 0.0000 2 195 870 2400 1425 Object$_1$\001 19 19 -6 20 20 6 2700 1125 3600 1575 21 21 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 22 22 2775 1200 3525 1200 3525 1500 2775 1500 2775 1200 23 4 1 0 50 -1 0 1 10.0000 2 195 870 3150 1425 Object$_2$\00123 4 1 0 50 -1 0 10 0.0000 2 195 870 3150 1425 Object$_2$\001 24 24 -6 25 25 6 3450 1125 4350 1575 26 26 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 27 27 3525 1200 4275 1200 4275 1500 3525 1500 3525 1200 28 4 1 0 50 -1 0 1 10.0000 2 195 870 3900 1425 Object$_3$\00128 4 1 0 50 -1 0 10 0.0000 2 195 870 3900 1425 Object$_3$\001 29 29 -6 -
doc/papers/llheap/figures/ContainerFalseSharing1.fig
r00b046f r70f97c8 13 13 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 14 14 1200 1200 1800 1200 1800 1500 1200 1500 1200 1200 15 4 1 0 50 -1 0 1 10.0000 2 195 765 1500 1425 Heap$_1$\00115 4 1 0 50 -1 0 10 0.0000 2 195 765 1500 1425 Heap$_1$\001 16 16 -6 17 17 6 2250 1200 3150 1500 18 18 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 19 19 2400 1200 3000 1200 3000 1500 2400 1500 2400 1200 20 4 1 0 50 -1 0 1 10.0000 2 195 765 2700 1425 Heap$_2$\00120 4 1 0 50 -1 0 10 0.0000 2 195 765 2700 1425 Heap$_2$\001 21 21 -6 22 22 6 1200 1950 3000 2250 … … 24 24 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 25 25 1200 1950 1800 1950 1800 2250 1200 2250 1200 1950 26 4 1 0 50 -1 0 1 10.0000 2 135 555 1500 2175 Header\00126 4 1 0 50 -1 0 10 0.0000 2 135 555 1500 2175 Header\001 27 27 -6 28 28 6 1650 1950 2550 2250 29 29 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 30 30 1800 1950 2400 1950 2400 2250 1800 2250 1800 1950 31 4 1 0 50 -1 0 1 10.0000 2 195 870 2100 2175 Object$_1$\00131 4 1 0 50 -1 0 10 0.0000 2 195 870 2100 2175 Object$_1$\001 32 32 -6 33 33 6 2400 1950 3000 2250 34 34 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 35 35 2400 1950 3000 1950 3000 2250 2400 2250 2400 1950 36 4 1 0 50 -1 0 1 10.0000 2 135 345 2700 2175 Free\00136 4 1 0 50 -1 0 10 0.0000 2 135 345 2700 2175 Free\001 37 37 -6 38 38 -6 … … 43 43 1 1 1.00 45.00 90.00 44 44 1650 1500 2100 1950 45 4 2 0 50 -1 0 1 10.0000 2 90 315 975 1875 own\00146 4 0 0 50 -1 0 1 10.0000 2 180 510 1950 1725 modify\00147 4 1 0 50 -1 0 1 10.0000 2 180 2370 1875 825 pass object container indirectly\00148 4 1 0 50 -1 0 1 10.0000 2 180 1410 2025 1050 via the global heap\00145 4 2 0 50 -1 0 10 0.0000 2 90 315 975 1875 own\001 46 4 0 0 50 -1 0 10 0.0000 2 180 510 1950 1725 modify\001 47 4 1 0 50 -1 0 10 0.0000 2 180 2370 1875 825 pass object container indirectly\001 48 4 1 0 50 -1 0 10 0.0000 2 180 1410 2025 1050 via the global heap\001 -
doc/papers/llheap/figures/ContainerFalseSharing2.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1200 1200 1800 1200 1800 1500 1200 1500 1200 1200 13 4 1 0 50 -1 0 1 10.0000 2 195 765 1500 1425 Heap$_1$\00113 4 1 0 50 -1 0 10 0.0000 2 195 765 1500 1425 Heap$_1$\001 14 14 -6 15 15 6 2250 1200 3150 1500 16 16 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 17 17 2400 1200 3000 1200 3000 1500 2400 1500 2400 1200 18 4 1 0 50 -1 0 1 10.0000 2 195 765 2700 1425 Heap$_2$\00118 4 1 0 50 -1 0 10 0.0000 2 195 765 2700 1425 Heap$_2$\001 19 19 -6 20 20 6 1200 1950 3150 2250 … … 22 22 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 23 23 1200 1950 1800 1950 1800 2250 1200 2250 1200 1950 24 4 1 0 50 -1 0 1 10.0000 2 135 555 1500 2175 Header\00124 4 1 0 50 -1 0 10 0.0000 2 135 555 1500 2175 Header\001 25 25 -6 26 26 6 1650 1950 2550 2250 27 27 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 28 28 1800 1950 2400 1950 2400 2250 1800 2250 1800 1950 29 4 1 0 50 -1 0 1 10.0000 2 195 870 2100 2175 Object$_1$\00129 4 1 0 50 -1 0 10 0.0000 2 195 870 2100 2175 Object$_1$\001 30 30 -6 31 31 6 2250 1950 3150 2250 32 32 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 33 33 2400 1950 3000 1950 3000 2250 2400 2250 2400 1950 34 4 1 0 50 -1 0 1 10.0000 2 195 870 2700 2175 Object$_2$\00134 4 1 0 50 -1 0 10 0.0000 2 195 870 2700 2175 Object$_2$\001 35 35 -6 36 36 -6 … … 44 44 1 1 1.00 45.00 90.00 45 45 2550 1500 2550 1950 46 4 0 0 50 -1 0 1 10.0000 2 180 510 1950 1725 modify\00147 4 0 0 50 -1 0 1 10.0000 2 135 360 2625 1725 alloc\00148 4 0 0 50 -1 0 1 10.0000 2 90 315 3225 1725 own\00146 4 0 0 50 -1 0 10 0.0000 2 180 510 1950 1725 modify\001 47 4 0 0 50 -1 0 10 0.0000 2 135 360 2625 1725 alloc\001 48 4 0 0 50 -1 0 10 0.0000 2 90 315 3225 1725 own\001 -
doc/papers/llheap/figures/ContainerNoOwnership.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1350 1200 1950 1200 1950 1500 1350 1500 1350 1200 13 4 1 0 50 -1 0 1 10.0000 2 135 555 1650 1425 Header\00113 4 1 0 50 -1 0 10 0.0000 2 135 555 1650 1425 Header\001 14 14 -6 15 15 6 1800 1800 2700 2100 16 16 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 17 17 1950 1800 2550 1800 2550 2100 1950 2100 1950 1800 18 4 1 0 50 -1 0 1 10.0000 2 195 765 2250 2025 Heap$_1$\00118 4 1 0 50 -1 0 10 0.0000 2 195 765 2250 2025 Heap$_1$\001 19 19 -6 20 20 6 1800 1200 2700 1500 21 21 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 22 22 1950 1200 2550 1200 2550 1500 1950 1500 1950 1200 23 4 1 0 50 -1 0 1 10.0000 2 195 870 2250 1425 Object$_1$\00123 4 1 0 50 -1 0 10 0.0000 2 195 870 2250 1425 Object$_1$\001 24 24 -6 25 25 6 2400 1200 3300 1500 26 26 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 27 27 2550 1200 3150 1200 3150 1500 2550 1500 2550 1200 28 4 1 0 50 -1 0 1 10.0000 2 195 870 2850 1425 Object$_2$\00128 4 1 0 50 -1 0 10 0.0000 2 195 870 2850 1425 Object$_2$\001 29 29 -6 30 30 6 3000 1200 3900 1500 31 31 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 32 32 3150 1200 3750 1200 3750 1500 3150 1500 3150 1200 33 4 1 0 50 -1 0 1 10.0000 2 195 870 3450 1425 Object$_3$\00133 4 1 0 50 -1 0 10 0.0000 2 195 870 3450 1425 Object$_3$\001 34 34 -6 35 35 6 2700 1800 3600 2100 36 36 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 37 37 2850 1800 3450 1800 3450 2100 2850 2100 2850 1800 38 4 1 0 50 -1 0 1 10.0000 2 195 765 3150 2025 Heap$_2$\00138 4 1 0 50 -1 0 10 0.0000 2 195 765 3150 2025 Heap$_2$\001 39 39 -6 40 40 6 3750 1200 4350 1500 41 41 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 42 42 3750 1200 4350 1200 4350 1500 3750 1500 3750 1200 43 4 1 0 50 -1 0 1 10.0000 2 135 345 4050 1425 Free\00143 4 1 0 50 -1 0 10 0.0000 2 135 345 4050 1425 Free\001 44 44 -6 45 45 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 -
doc/papers/llheap/figures/ContainerNoOwnershipFreelist.fig
r00b046f r70f97c8 65 65 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 66 66 2475 3375 2775 3375 2775 3600 2475 3600 2475 3375 67 4 1 0 50 -1 0 1 10.0000 2 195 495 1500 1500 H$_1$\00168 4 1 0 50 -1 0 1 10.0000 2 195 495 1500 3450 H$_2$\00167 4 1 0 50 -1 0 10 0.0000 2 195 495 1500 1500 H$_1$\001 68 4 1 0 50 -1 0 10 0.0000 2 195 495 1500 3450 H$_2$\001 -
doc/papers/llheap/figures/ContainerOwnership.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1200 1200 1800 1200 1800 1500 1200 1500 1200 1200 13 4 1 0 50 -1 0 1 10.0000 2 135 555 1500 1425 Header\00113 4 1 0 50 -1 0 10 0.0000 2 135 555 1500 1425 Header\001 14 14 -6 15 15 6 1650 1200 2550 1500 16 16 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 17 17 1800 1200 2400 1200 2400 1500 1800 1500 1800 1200 18 4 1 0 50 -1 0 1 10.0000 2 195 870 2100 1425 Object$_1$\00118 4 1 0 50 -1 0 10 0.0000 2 195 870 2100 1425 Object$_1$\001 19 19 -6 20 20 6 1650 1800 2550 2100 21 21 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 22 22 1800 1800 2400 1800 2400 2100 1800 2100 1800 1800 23 4 1 0 50 -1 0 1 10.0000 2 195 765 2100 2025 Heap$_1$\00123 4 1 0 50 -1 0 10 0.0000 2 195 765 2100 2025 Heap$_1$\001 24 24 -6 25 25 6 2400 1200 3000 1500 26 26 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 27 27 2400 1200 3000 1200 3000 1500 2400 1500 2400 1200 28 4 1 0 50 -1 0 1 10.0000 2 135 345 2700 1425 Free\00128 4 1 0 50 -1 0 10 0.0000 2 135 345 2700 1425 Free\001 29 29 -6 30 30 6 3000 1200 3600 1500 31 31 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 32 32 3000 1200 3600 1200 3600 1500 3000 1500 3000 1200 33 4 1 0 50 -1 0 1 10.0000 2 135 345 3300 1425 Free\00133 4 1 0 50 -1 0 10 0.0000 2 135 345 3300 1425 Free\001 34 34 -6 35 35 6 4500 1200 5100 1500 36 36 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 37 37 4500 1200 5100 1200 5100 1500 4500 1500 4500 1200 38 4 1 0 50 -1 0 1 10.0000 2 135 555 4800 1425 Header\00138 4 1 0 50 -1 0 10 0.0000 2 135 555 4800 1425 Header\001 39 39 -6 40 40 6 4950 1200 5850 1500 41 41 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 42 42 5100 1200 5700 1200 5700 1500 5100 1500 5100 1200 43 4 1 0 50 -1 0 1 10.0000 2 195 870 5400 1425 Object$_2$\00143 4 1 0 50 -1 0 10 0.0000 2 195 870 5400 1425 Object$_2$\001 44 44 -6 45 45 6 5550 1200 6450 1500 46 46 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 47 47 5700 1200 6300 1200 6300 1500 5700 1500 5700 1200 48 4 1 0 50 -1 0 1 10.0000 2 195 870 6000 1425 Object$_3$\00148 4 1 0 50 -1 0 10 0.0000 2 195 870 6000 1425 Object$_3$\001 49 49 -6 50 50 6 6300 1200 6900 1500 51 51 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 52 52 6300 1200 6900 1200 6900 1500 6300 1500 6300 1200 53 4 1 0 50 -1 0 1 10.0000 2 135 345 6600 1425 Free\00153 4 1 0 50 -1 0 10 0.0000 2 135 345 6600 1425 Free\001 54 54 -6 55 55 6 5250 1800 6150 2100 56 56 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 57 57 5400 1800 6000 1800 6000 2100 5400 2100 5400 1800 58 4 1 0 50 -1 0 1 10.0000 2 195 765 5700 2025 Heap$_2$\00158 4 1 0 50 -1 0 10 0.0000 2 195 765 5700 2025 Heap$_2$\001 59 59 -6 60 60 6 3600 1200 4200 1500 61 61 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 62 62 3600 1200 4200 1200 4200 1500 3600 1500 3600 1200 63 4 1 0 50 -1 0 1 10.0000 2 135 345 3900 1425 Free\00163 4 1 0 50 -1 0 10 0.0000 2 135 345 3900 1425 Free\001 64 64 -6 65 65 6 6900 1200 7500 1500 66 66 2 2 0 1 0 7 60 -1 17 0.000 0 0 -1 0 0 5 67 67 6900 1200 7500 1200 7500 1500 6900 1500 6900 1200 68 4 1 0 50 -1 0 1 10.0000 2 135 345 7200 1425 Free\00168 4 1 0 50 -1 0 10 0.0000 2 135 345 7200 1425 Free\001 69 69 -6 70 70 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 -
doc/papers/llheap/figures/ContainerOwnershipFreelist.fig
r00b046f r70f97c8 60 60 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 61 61 1800 2100 4050 2100 4050 2850 1800 2850 1800 2100 62 4 1 0 50 -1 0 1 10.0000 2 195 495 1500 1500 H$_1$\00163 4 1 0 50 -1 0 1 10.0000 2 195 495 1500 3450 H$_2$\00162 4 1 0 50 -1 0 10 0.0000 2 195 495 1500 1500 H$_1$\001 63 4 1 0 50 -1 0 10 0.0000 2 195 495 1500 3450 H$_2$\001 -
doc/papers/llheap/figures/FakeHeader.fig
r00b046f r70f97c8 17 17 1 1 1.00 45.00 90.00 18 18 2925 1950 2625 1950 2625 1800 19 4 1 0 50 -1 0 1 20.0000 2 135 450 3450 1725 offset\00120 4 1 0 50 -1 0 1 20.0000 2 180 825 1950 1725 alignment\00121 4 1 0 50 -1 0 1 20.0000 2 135 105 2625 1725 1\00122 4 0 0 50 -1 0 1 20.0000 2 180 1920 3000 2025 alignment (fake header)\00123 4 1 0 50 -1 0 1 20.0000 2 180 765 1950 1425 4/8-bytes\00124 4 1 0 50 -1 0 1 20.0000 2 180 765 3450 1425 4/8-bytes\00119 4 1 0 50 -1 0 10 0.0000 2 135 450 3450 1725 offset\001 20 4 1 0 50 -1 0 10 0.0000 2 180 825 1950 1725 alignment\001 21 4 1 0 50 -1 0 10 0.0000 2 135 105 2625 1725 1\001 22 4 0 0 50 -1 0 10 0.0000 2 180 1920 3000 2025 alignment (fake header)\001 23 4 1 0 50 -1 0 10 0.0000 2 180 765 1950 1425 4/8-bytes\001 24 4 1 0 50 -1 0 10 0.0000 2 180 765 3450 1425 4/8-bytes\001 -
doc/papers/llheap/figures/FreeListAmongContainers.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 2400 600 3000 600 3000 900 2400 900 2400 600 13 4 1 0 50 -1 0 1 10.0000 2 180 405 2700 825 Heap\00113 4 1 0 50 -1 0 10 0.0000 2 180 405 2700 825 Heap\001 14 14 -6 15 15 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 … … 54 54 2 1 0 0 7 7 50 -1 -1 0.000 0 0 -1 0 0 1 55 55 2400 2850 56 4 1 0 50 -1 0 1 10.0000 2 135 555 2700 1425 Header\00157 4 1 0 50 -1 0 1 10.0000 2 135 345 3300 1425 Free\00158 4 1 0 50 -1 0 1 10.0000 2 195 870 3900 1425 Object$_1$\00159 4 1 0 50 -1 0 1 10.0000 2 195 870 4500 1425 Object$_2$\00160 4 1 0 50 -1 0 1 10.0000 2 135 555 2700 2025 Header\00161 4 1 0 50 -1 0 1 10.0000 2 135 555 2700 2625 Header\00162 4 1 0 50 -1 0 1 10.0000 2 135 345 3300 2625 Free\00163 4 1 0 50 -1 0 1 10.0000 2 195 870 3300 2025 Object$_3$\00164 4 1 0 50 -1 0 1 10.0000 2 195 870 3900 2625 Object$_4$\00165 4 1 0 50 -1 0 1 10.0000 2 135 345 3900 2025 Free\00166 4 1 0 50 -1 0 1 10.0000 2 135 345 4500 2025 Free\00167 4 1 0 50 -1 0 1 10.0000 2 135 345 4500 2625 Free\00168 4 0 0 50 -1 0 1 10.0000 2 180 1110 3150 825 object free-list\00169 4 1 0 50 -1 0 1 10.0000 2 135 795 3750 1125 containers\00156 4 1 0 50 -1 0 10 0.0000 2 135 555 2700 1425 Header\001 57 4 1 0 50 -1 0 10 0.0000 2 135 345 3300 1425 Free\001 58 4 1 0 50 -1 0 10 0.0000 2 195 870 3900 1425 Object$_1$\001 59 4 1 0 50 -1 0 10 0.0000 2 195 870 4500 1425 Object$_2$\001 60 4 1 0 50 -1 0 10 0.0000 2 135 555 2700 2025 Header\001 61 4 1 0 50 -1 0 10 0.0000 2 135 555 2700 2625 Header\001 62 4 1 0 50 -1 0 10 0.0000 2 135 345 3300 2625 Free\001 63 4 1 0 50 -1 0 10 0.0000 2 195 870 3300 2025 Object$_3$\001 64 4 1 0 50 -1 0 10 0.0000 2 195 870 3900 2625 Object$_4$\001 65 4 1 0 50 -1 0 10 0.0000 2 135 345 3900 2025 Free\001 66 4 1 0 50 -1 0 10 0.0000 2 135 345 4500 2025 Free\001 67 4 1 0 50 -1 0 10 0.0000 2 135 345 4500 2625 Free\001 68 4 0 0 50 -1 0 10 0.0000 2 180 1110 3150 825 object free-list\001 69 4 1 0 50 -1 0 10 0.0000 2 135 795 3750 1125 containers\001 -
doc/papers/llheap/figures/FreeListWithinContainers.fig
r00b046f r70f97c8 21 21 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 22 22 2400 600 3000 600 3000 900 2400 900 2400 600 23 4 1 0 50 -1 0 1 10.0000 2 180 405 2700 825 Heap\00123 4 1 0 50 -1 0 10 0.0000 2 180 405 2700 825 Heap\001 24 24 -6 25 25 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 … … 56 56 2 2 0 1 0 7 50 -1 17 0.000 0 0 -1 0 0 5 57 57 4200 2400 4800 2400 4800 2700 4200 2700 4200 2400 58 4 0 0 50 -1 0 1 10.0000 2 135 1350 3150 825 container free-list\00159 4 1 0 50 -1 0 1 10.0000 2 135 555 2700 1425 Header\00160 4 1 0 50 -1 0 1 10.0000 2 135 555 2700 2025 Header\00161 4 1 0 50 -1 0 1 10.0000 2 135 555 2700 2625 Header\00162 4 1 0 50 -1 0 1 10.0000 2 135 345 3300 1425 Free\00163 4 1 0 50 -1 0 1 10.0000 2 195 870 3300 2025 Object$_3$\00164 4 1 0 50 -1 0 1 10.0000 2 135 345 3225 2625 Free\00165 4 1 0 50 -1 0 1 10.0000 2 195 870 3900 1425 Object$_1$\00166 4 1 0 50 -1 0 1 10.0000 2 135 345 3900 2025 Free\00167 4 1 0 50 -1 0 1 10.0000 2 195 870 3900 2625 Object$_4$\00168 4 1 0 50 -1 0 1 10.0000 2 195 870 4500 1425 Object$_2$\00169 4 1 0 50 -1 0 1 10.0000 2 135 345 4500 2025 Free\00170 4 1 0 50 -1 0 1 10.0000 2 135 345 4500 2625 Free\00171 4 1 0 50 -1 0 1 10.0000 2 135 795 3750 1125 containers\00172 4 0 0 50 -1 0 1 10.0000 2 180 1110 3150 1650 object free-list\00158 4 0 0 50 -1 0 10 0.0000 2 135 1350 3150 825 container free-list\001 59 4 1 0 50 -1 0 10 0.0000 2 135 555 2700 1425 Header\001 60 4 1 0 50 -1 0 10 0.0000 2 135 555 2700 2025 Header\001 61 4 1 0 50 -1 0 10 0.0000 2 135 555 2700 2625 Header\001 62 4 1 0 50 -1 0 10 0.0000 2 135 345 3300 1425 Free\001 63 4 1 0 50 -1 0 10 0.0000 2 195 870 3300 2025 Object$_3$\001 64 4 1 0 50 -1 0 10 0.0000 2 135 345 3225 2625 Free\001 65 4 1 0 50 -1 0 10 0.0000 2 195 870 3900 1425 Object$_1$\001 66 4 1 0 50 -1 0 10 0.0000 2 135 345 3900 2025 Free\001 67 4 1 0 50 -1 0 10 0.0000 2 195 870 3900 2625 Object$_4$\001 68 4 1 0 50 -1 0 10 0.0000 2 195 870 4500 1425 Object$_2$\001 69 4 1 0 50 -1 0 10 0.0000 2 135 345 4500 2025 Free\001 70 4 1 0 50 -1 0 10 0.0000 2 135 345 4500 2625 Free\001 71 4 1 0 50 -1 0 10 0.0000 2 135 795 3750 1125 containers\001 72 4 0 0 50 -1 0 10 0.0000 2 180 1110 3150 1650 object free-list\001 -
doc/papers/llheap/figures/Header.fig
r00b046f r70f97c8 31 31 1 1 1.00 45.00 90.00 32 32 4200 3000 3450 3000 3450 2025 33 4 0 0 50 -1 0 1 20.0000 2 180 1185 1875 1725 bucket pointer\00134 4 0 0 50 -1 0 1 20.0000 2 180 1005 1875 2025 mapped size\00135 4 0 0 50 -1 0 1 20.0000 2 135 1215 1875 2325 next free block\00136 4 2 0 50 -1 0 1 20.0000 2 135 480 1725 2025 union\00137 4 1 0 50 -1 0 1 20.0000 2 180 945 5400 2025 request size\00138 4 1 0 50 -1 0 1 20.0000 2 180 765 5400 1425 4/8-bytes\00139 4 1 0 50 -1 0 1 20.0000 2 180 765 3000 1425 4/8-bytes\00140 4 1 0 50 -1 0 1 20.0000 2 135 270 3475 2025 0/1\00141 4 1 0 50 -1 0 1 20.0000 2 135 270 3775 1725 0/1\00142 4 1 0 50 -1 0 1 20.0000 2 135 270 4075 1725 0/1\00143 4 0 0 50 -1 0 1 20.0000 2 180 1515 4275 3075 mapped allocation\00144 4 0 0 50 -1 0 1 20.0000 2 135 825 4275 2850 zero filled\00145 4 0 0 50 -1 0 1 20.0000 2 180 1920 4275 2625 alignment (fake header)\00133 4 0 0 50 -1 0 10 0.0000 2 180 1185 1875 1725 bucket pointer\001 34 4 0 0 50 -1 0 10 0.0000 2 180 1005 1875 2025 mapped size\001 35 4 0 0 50 -1 0 10 0.0000 2 135 1215 1875 2325 next free block\001 36 4 2 0 50 -1 0 10 0.0000 2 135 480 1725 2025 union\001 37 4 1 0 50 -1 0 10 0.0000 2 180 945 5400 2025 request size\001 38 4 1 0 50 -1 0 10 0.0000 2 180 765 5400 1425 4/8-bytes\001 39 4 1 0 50 -1 0 10 0.0000 2 180 765 3000 1425 4/8-bytes\001 40 4 1 0 50 -1 0 10 0.0000 2 135 270 3475 2025 0/1\001 41 4 1 0 50 -1 0 10 0.0000 2 135 270 3775 1725 0/1\001 42 4 1 0 50 -1 0 10 0.0000 2 135 270 4075 1725 0/1\001 43 4 0 0 50 -1 0 10 0.0000 2 180 1515 4275 3075 mapped allocation\001 44 4 0 0 50 -1 0 10 0.0000 2 135 825 4275 2850 zero filled\001 45 4 0 0 50 -1 0 10 0.0000 2 180 1920 4275 2625 alignment (fake header)\001 -
doc/papers/llheap/figures/HeapStructure.fig
r00b046f r70f97c8 10 10 6 1650 1200 2250 1500 11 11 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1950 1350 150 150 1950 1350 2100 1350 12 4 1 0 50 -1 0 1 10.0000 2 195 465 1950 1425 T$_2$\00112 4 1 0 50 -1 0 10 0.0000 2 195 465 1950 1425 T$_2$\001 13 13 -6 14 14 6 1200 1200 1800 1500 15 15 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1500 1350 150 150 1500 1350 1650 1350 16 4 1 0 50 -1 0 1 10.0000 2 195 465 1500 1425 T$_1$\00116 4 1 0 50 -1 0 10 0.0000 2 195 465 1500 1425 T$_1$\001 17 17 -6 18 18 6 2100 1200 2700 1500 19 19 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 1350 150 150 2400 1350 2550 1350 20 4 1 0 50 -1 0 1 10.0000 2 195 465 2400 1425 T$_3$\00120 4 1 0 50 -1 0 10 0.0000 2 195 465 2400 1425 T$_3$\001 21 21 -6 22 22 6 2700 3000 3000 3300 23 23 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 24 24 2700 3000 3000 3000 3000 3300 2700 3300 2700 3000 25 4 1 0 50 -1 0 1 10.0000 2 135 135 2850 3225 G\00125 4 1 0 50 -1 0 10 0.0000 2 135 135 2850 3225 G\001 26 26 -6 27 27 6 1650 2400 2250 2700 28 28 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1950 2550 150 150 1950 2550 2100 2550 29 4 1 0 50 -1 0 1 10.0000 2 195 465 1950 2625 T$_2$\00129 4 1 0 50 -1 0 10 0.0000 2 195 465 1950 2625 T$_2$\001 30 30 -6 31 31 6 1200 2400 1800 2700 32 32 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1500 2550 150 150 1500 2550 1650 2550 33 4 1 0 50 -1 0 1 10.0000 2 195 465 1500 2625 T$_1$\00133 4 1 0 50 -1 0 10 0.0000 2 195 465 1500 2625 T$_1$\001 34 34 -6 35 35 6 2100 2400 2700 2700 36 36 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2400 2550 150 150 2400 2550 2550 2550 37 4 1 0 50 -1 0 1 10.0000 2 195 465 2400 2625 T$_3$\00137 4 1 0 50 -1 0 10 0.0000 2 195 465 2400 2625 T$_3$\001 38 38 -6 39 39 6 1650 3600 2250 4500 … … 43 43 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 44 44 1800 4200 2100 4200 2100 4500 1800 4500 1800 4200 45 4 1 0 50 -1 0 1 10.0000 2 195 495 1950 4425 H$_2$\00146 4 1 0 50 -1 0 1 10.0000 2 195 465 1950 3825 T$_2$\00145 4 1 0 50 -1 0 10 0.0000 2 195 495 1950 4425 H$_2$\001 46 4 1 0 50 -1 0 10 0.0000 2 195 465 1950 3825 T$_2$\001 47 47 -6 48 48 6 1200 3600 1800 4500 … … 52 52 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 53 53 1350 4200 1650 4200 1650 4500 1350 4500 1350 4200 54 4 1 0 50 -1 0 1 10.0000 2 195 495 1500 4425 H$_1$\00155 4 1 0 50 -1 0 1 10.0000 2 195 465 1500 3825 T$_1$\00154 4 1 0 50 -1 0 10 0.0000 2 195 495 1500 4425 H$_1$\001 55 4 1 0 50 -1 0 10 0.0000 2 195 465 1500 3825 T$_1$\001 56 56 -6 57 57 6 2100 3600 2700 4500 … … 61 61 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 62 62 2250 4200 2550 4200 2550 4500 2250 4500 2250 4200 63 4 1 0 50 -1 0 1 10.0000 2 195 495 2400 4425 H$_3$\00164 4 1 0 50 -1 0 1 10.0000 2 195 465 2400 3825 T$_3$\00163 4 1 0 50 -1 0 10 0.0000 2 195 495 2400 4425 H$_3$\001 64 4 1 0 50 -1 0 10 0.0000 2 195 465 2400 3825 T$_3$\001 65 65 -6 66 66 6 2850 4200 3150 4500 67 67 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 68 68 2850 4200 3150 4200 3150 4500 2850 4500 2850 4200 69 4 1 0 50 -1 0 1 10.0000 2 135 135 3000 4425 G\00169 4 1 0 50 -1 0 10 0.0000 2 135 135 3000 4425 G\001 70 70 -6 71 71 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 … … 91 91 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 92 92 2100 3000 2400 3000 2400 3300 2100 3300 2100 3000 93 4 1 0 50 -1 0 1 10.0000 2 195 495 1950 2025 H$_1$\00194 4 1 0 50 -1 0 1 10.0000 2 195 1320 2250 2025 $\\Leftrightarrow$\00195 4 0 0 50 -1 0 1 10.0000 2 135 240 2400 2025 OS\00196 4 1 0 50 -1 0 1 10.0000 2 195 495 1650 3225 H$_1$\00197 4 1 0 50 -1 0 1 10.0000 2 195 495 2250 3225 H$_2$\00198 4 1 0 50 -1 0 1 10.0000 2 195 1320 2550 3225 $\\Leftrightarrow$\00199 4 1 0 50 -1 0 1 10.0000 2 195 1320 3150 3225 $\\Leftrightarrow$\001100 4 0 0 50 -1 0 1 10.0000 2 135 240 3300 3225 OS\001101 4 1 0 50 -1 0 1 10.0000 2 195 1320 2700 4425 $\\Leftrightarrow$\001102 4 1 0 50 -1 0 1 10.0000 2 195 1320 3300 4425 $\\Leftrightarrow$\001103 4 0 0 50 -1 0 1 10.0000 2 135 240 3450 4425 OS\00193 4 1 0 50 -1 0 10 0.0000 2 195 495 1950 2025 H$_1$\001 94 4 1 0 50 -1 0 10 0.0000 2 195 1320 2250 2025 $\\Leftrightarrow$\001 95 4 0 0 50 -1 0 10 0.0000 2 135 240 2400 2025 OS\001 96 4 1 0 50 -1 0 10 0.0000 2 195 495 1650 3225 H$_1$\001 97 4 1 0 50 -1 0 10 0.0000 2 195 495 2250 3225 H$_2$\001 98 4 1 0 50 -1 0 10 0.0000 2 195 1320 2550 3225 $\\Leftrightarrow$\001 99 4 1 0 50 -1 0 10 0.0000 2 195 1320 3150 3225 $\\Leftrightarrow$\001 100 4 0 0 50 -1 0 10 0.0000 2 135 240 3300 3225 OS\001 101 4 1 0 50 -1 0 10 0.0000 2 195 1320 2700 4425 $\\Leftrightarrow$\001 102 4 1 0 50 -1 0 10 0.0000 2 195 1320 3300 4425 $\\Leftrightarrow$\001 103 4 0 0 50 -1 0 10 0.0000 2 135 240 3450 4425 OS\001 -
doc/papers/llheap/figures/IntExtFragmentation.fig
r00b046f r70f97c8 11 11 2 2 0 0 0 7 60 -1 17 0.000 0 0 -1 0 0 5 12 12 3150 1200 3900 1200 3900 1500 3150 1500 3150 1200 13 4 1 0 50 -1 0 1 10.0000 2 180 600 3525 1425 Spacing\00113 4 1 0 50 -1 0 10 0.0000 2 180 600 3525 1425 Spacing\001 14 14 -6 15 15 6 4425 1125 5775 1575 16 16 2 2 0 2 0 7 60 -1 17 0.000 0 0 -1 0 0 5 17 17 4500 1200 5700 1200 5700 1500 4500 1500 4500 1200 18 4 1 0 50 -1 0 1 10.0000 2 180 1020 5100 1425 Free Memory\00118 4 1 0 50 -1 0 10 0.0000 2 180 1020 5100 1425 Free Memory\001 19 19 -6 20 20 6 1200 1575 2550 1725 … … 29 29 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 30 30 2550 1575 2550 1725 31 4 1 0 50 -1 0 1 10.0000 2 135 570 1875 1725 internal\00131 4 1 0 50 -1 0 10 0.0000 2 135 570 1875 1725 internal\001 32 32 -6 33 33 6 3150 1575 4500 1725 … … 42 42 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 43 43 4500 1575 4500 1725 44 4 1 0 50 -1 0 1 10.0000 2 135 570 3825 1725 internal\00144 4 1 0 50 -1 0 10 0.0000 2 135 570 3825 1725 internal\001 45 45 -6 46 46 6 4500 1575 5700 1725 … … 55 55 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 56 56 5700 1575 5700 1725 57 4 1 0 50 -1 0 1 10.0000 2 135 615 5100 1725 external\00157 4 1 0 50 -1 0 10 0.0000 2 135 615 5100 1725 external\001 58 58 -6 59 59 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 … … 69 69 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 70 70 1200 1200 4500 1200 4500 1500 1200 1500 1200 1200 71 4 1 0 50 -1 0 1 10.0000 2 135 555 1500 1425 Header\00172 4 1 0 50 -1 0 1 10.0000 2 180 600 2175 1425 Padding\00173 4 1 0 50 -1 0 1 10.0000 2 180 510 2850 1425 Object\00174 4 1 0 50 -1 0 1 10.0000 2 135 495 4200 1425 Trailer\00171 4 1 0 50 -1 0 10 0.0000 2 135 555 1500 1425 Header\001 72 4 1 0 50 -1 0 10 0.0000 2 180 600 2175 1425 Padding\001 73 4 1 0 50 -1 0 10 0.0000 2 180 510 2850 1425 Object\001 74 4 1 0 50 -1 0 10 0.0000 2 135 495 4200 1425 Trailer\001 -
doc/papers/llheap/figures/MemoryFragmentation.fig
r00b046f r70f97c8 49 49 1 1 1.00 45.00 90.00 50 50 750 600 750 2700 51 4 1 0 50 -1 0 1 10.0000 2 195 870 2850 825 Object$_2$\00152 4 1 0 50 -1 0 1 10.0000 2 195 870 4050 825 Object$_3$\00153 4 1 0 50 -1 0 1 10.0000 2 195 870 4050 1275 Object$_3$\00154 4 1 0 50 -1 0 1 10.0000 2 195 870 4050 1725 Object$_3$\00155 4 1 0 50 -1 0 1 10.0000 2 195 870 4050 2175 Object$_3$\00156 4 1 0 50 -1 0 1 10.0000 2 195 870 4050 2625 Object$_3$\00157 4 1 0 50 -1 0 1 10.0000 2 195 870 2700 1725 Object$_4$\00158 4 1 0 50 -1 0 1 10.0000 2 195 870 2700 2625 Object$_4$\00159 4 1 0 50 -1 0 1 10.0000 2 195 870 2700 2175 Object$_4$\00160 4 1 0 50 -1 0 1 10.0000 2 195 870 1500 825 Object$_1$\00161 4 1 0 50 -1 0 1 10.0000 2 195 870 1500 1275 Object$_1$\00162 4 1 0 50 -1 0 1 10.0000 2 195 870 1500 1725 Object$_1$\00163 4 1 0 50 -1 0 1 10.0000 2 195 870 1350 2625 Object$_5$\00164 4 2 0 50 -1 0 1 10.0000 2 135 330 600 1725 time\00151 4 1 0 50 -1 0 10 0.0000 2 195 870 2850 825 Object$_2$\001 52 4 1 0 50 -1 0 10 0.0000 2 195 870 4050 825 Object$_3$\001 53 4 1 0 50 -1 0 10 0.0000 2 195 870 4050 1275 Object$_3$\001 54 4 1 0 50 -1 0 10 0.0000 2 195 870 4050 1725 Object$_3$\001 55 4 1 0 50 -1 0 10 0.0000 2 195 870 4050 2175 Object$_3$\001 56 4 1 0 50 -1 0 10 0.0000 2 195 870 4050 2625 Object$_3$\001 57 4 1 0 50 -1 0 10 0.0000 2 195 870 2700 1725 Object$_4$\001 58 4 1 0 50 -1 0 10 0.0000 2 195 870 2700 2625 Object$_4$\001 59 4 1 0 50 -1 0 10 0.0000 2 195 870 2700 2175 Object$_4$\001 60 4 1 0 50 -1 0 10 0.0000 2 195 870 1500 825 Object$_1$\001 61 4 1 0 50 -1 0 10 0.0000 2 195 870 1500 1275 Object$_1$\001 62 4 1 0 50 -1 0 10 0.0000 2 195 870 1500 1725 Object$_1$\001 63 4 1 0 50 -1 0 10 0.0000 2 195 870 1350 2625 Object$_5$\001 64 4 2 0 50 -1 0 10 0.0000 2 135 330 600 1725 time\001 -
doc/papers/llheap/figures/MultipleHeapsNoOwnership.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1200 2100 1500 2100 1500 1800 1200 1800 1200 2100 13 4 1 0 50 -1 0 1 10.0000 2 165 495 1350 2025 H$_1$\00113 4 1 0 50 -1 0 10 0.0000 2 165 495 1350 2025 H$_1$\001 14 14 -6 15 15 6 1950 1800 2550 2100 16 16 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 17 17 2100 2100 2400 2100 2400 1800 2100 1800 2100 2100 18 4 1 0 50 -1 0 1 10.0000 2 165 495 2250 2025 H$_2$\00118 4 1 0 50 -1 0 10 0.0000 2 165 495 2250 2025 H$_2$\001 19 19 -6 20 20 1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 1350 1350 150 150 1350 1350 1500 1350 … … 40 40 1 1 1.00 45.00 90.00 41 41 2325 1800 2325 1500 42 4 1 0 50 -1 0 1 10.0000 2 165 465 1350 1425 T$_1$\00143 4 1 0 50 -1 0 1 10.0000 2 165 465 2250 1425 T$_2$\00142 4 1 0 50 -1 0 10 0.0000 2 165 465 1350 1425 T$_1$\001 43 4 1 0 50 -1 0 10 0.0000 2 165 465 2250 1425 T$_2$\001 -
doc/papers/llheap/figures/MultipleHeapsOwnership.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1200 2100 1500 2100 1500 1800 1200 1800 1200 2100 13 4 1 0 50 -1 0 1 10.0000 2 165 495 1350 2025 H$_1$\00113 4 1 0 50 -1 0 10 0.0000 2 165 495 1350 2025 H$_1$\001 14 14 -6 15 15 6 1950 1800 2550 2100 16 16 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 17 17 2100 2100 2400 2100 2400 1800 2100 1800 2100 2100 18 4 1 0 50 -1 0 1 10.0000 2 165 495 2250 2025 H$_2$\00118 4 1 0 50 -1 0 10 0.0000 2 165 495 2250 2025 H$_2$\001 19 19 -6 20 20 1 3 0 1 0 7 50 -1 -1 0.000 0 -0.0000 1350 1350 150 150 1350 1350 1500 1350 … … 36 36 1 1 1.00 45.00 90.00 37 37 1425 1500 2175 1800 38 4 1 0 50 -1 0 1 10.0000 2 165 465 2250 1425 T$_2$\00139 4 1 0 50 -1 0 1 10.0000 2 165 465 1350 1425 T$_1$\00138 4 1 0 50 -1 0 10 0.0000 2 165 465 2250 1425 T$_2$\001 39 4 1 0 50 -1 0 10 0.0000 2 165 465 1350 1425 T$_1$\001 -
doc/papers/llheap/figures/MultipleHeapsOwnershipStorage.fig
r00b046f r70f97c8 233 233 1 1 1.00 45.00 90.00 234 234 2691 2618 3000 2700 235 4 1 0 50 -1 0 1 10.0000 2 135 885 1500 1350 Static Zone\001236 4 1 0 50 -1 0 1 10.0000 2 195 495 2550 1725 H$_1$\001237 4 1 0 50 -1 0 1 10.0000 2 180 1950 4050 1350 Dynamic-Allocation Zone\001238 4 1 0 50 -1 0 1 10.0000 2 135 225 1650 1725 Hs\001239 4 1 0 50 -1 0 1 10.0000 2 195 495 2550 2625 H$_3$\001240 4 1 0 50 -1 0 1 10.0000 2 195 495 2550 2175 H$_2$\001235 4 1 0 50 -1 0 10 0.0000 2 135 885 1500 1350 Static Zone\001 236 4 1 0 50 -1 0 10 0.0000 2 195 495 2550 1725 H$_1$\001 237 4 1 0 50 -1 0 10 0.0000 2 180 1950 4050 1350 Dynamic-Allocation Zone\001 238 4 1 0 50 -1 0 10 0.0000 2 135 225 1650 1725 Hs\001 239 4 1 0 50 -1 0 10 0.0000 2 195 495 2550 2625 H$_3$\001 240 4 1 0 50 -1 0 10 0.0000 2 195 495 2550 2175 H$_2$\001 -
doc/papers/llheap/figures/MultipleHeapsStorage.fig
r00b046f r70f97c8 165 165 1 1 1.00 45.00 90.00 166 166 2700 2625 3000 2400 167 4 1 0 50 -1 0 1 10.0000 2 135 885 1500 1350 Static Zone\001168 4 1 0 50 -1 0 1 10.0000 2 195 495 2550 1725 H$_1$\001169 4 1 0 50 -1 0 1 10.0000 2 180 1950 4050 1350 Dynamic-Allocation Zone\001170 4 1 0 50 -1 0 1 10.0000 2 135 225 1650 1725 Hs\001171 4 1 0 50 -1 0 1 10.0000 2 195 495 2550 2625 H$_3$\001172 4 1 0 50 -1 0 1 10.0000 2 195 495 2550 2175 H$_2$\001167 4 1 0 50 -1 0 10 0.0000 2 135 885 1500 1350 Static Zone\001 168 4 1 0 50 -1 0 10 0.0000 2 195 495 2550 1725 H$_1$\001 169 4 1 0 50 -1 0 10 0.0000 2 180 1950 4050 1350 Dynamic-Allocation Zone\001 170 4 1 0 50 -1 0 10 0.0000 2 135 225 1650 1725 Hs\001 171 4 1 0 50 -1 0 10 0.0000 2 195 495 2550 2625 H$_3$\001 172 4 1 0 50 -1 0 10 0.0000 2 195 495 2550 2175 H$_2$\001 -
doc/papers/llheap/figures/ObjectHeaders.fig
r00b046f r70f97c8 13 13 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 14 14 1200 1200 2700 1200 2700 1500 1200 1500 1200 1200 15 4 1 0 50 -1 0 1 10.0000 2 195 915 1575 1425 Header$_1$\00116 4 1 0 50 -1 0 1 10.0000 2 195 870 2325 1425 Object$_1$\00115 4 1 0 50 -1 0 10 0.0000 2 195 915 1575 1425 Header$_1$\001 16 4 1 0 50 -1 0 10 0.0000 2 195 870 2325 1425 Object$_1$\001 17 17 -6 18 18 6 2550 1125 4275 1575 … … 21 21 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 22 22 2700 1200 4200 1200 4200 1500 2700 1500 2700 1200 23 4 1 0 50 -1 0 1 10.0000 2 195 915 3075 1425 Header$_2$\00124 4 1 0 50 -1 0 1 10.0000 2 195 870 3825 1425 Object$_2$\00123 4 1 0 50 -1 0 10 0.0000 2 195 915 3075 1425 Header$_2$\001 24 4 1 0 50 -1 0 10 0.0000 2 195 870 3825 1425 Object$_2$\001 25 25 -6 26 26 6 4050 1125 5775 1575 … … 29 29 2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 30 30 4200 1200 5700 1200 5700 1500 4200 1500 4200 1200 31 4 1 0 50 -1 0 1 10.0000 2 195 915 4575 1425 Header$_3$\00132 4 1 0 50 -1 0 1 10.0000 2 195 870 5325 1425 Object$_3$\00131 4 1 0 50 -1 0 10 0.0000 2 195 915 4575 1425 Header$_3$\001 32 4 1 0 50 -1 0 10 0.0000 2 195 870 5325 1425 Object$_3$\001 33 33 -6 -
doc/papers/llheap/figures/PerThreadHeap.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 2700 1800 3000 1800 3000 2100 2700 2100 2700 1800 13 4 1 0 50 -1 0 1 10.0000 2 120 135 2850 2025 G\00113 4 1 0 50 -1 0 10 0.0000 2 120 135 2850 2025 G\001 14 14 -6 15 15 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 1350 150 150 1350 1350 1500 1350 … … 34 34 1 1 1.00 45.00 90.00 35 35 2250 1500 2250 1800 36 4 1 0 50 -1 0 1 10.0000 2 180 1260 2550 2025 $\\Leftrightarrow$\00137 4 1 0 50 -1 0 1 10.0000 2 180 1260 3150 2025 $\\Leftrightarrow$\00138 4 0 0 50 -1 0 1 10.0000 2 120 240 3300 2025 OS\00139 4 1 0 50 -1 0 1 10.0000 2 165 495 1350 2025 H$_1$\00140 4 1 0 50 -1 0 1 10.0000 2 165 465 1350 1425 T$_1$\00141 4 1 0 50 -1 0 1 10.0000 2 165 495 1800 2025 H$_2$\00142 4 1 0 50 -1 0 1 10.0000 2 165 465 1800 1425 T$_2$\00143 4 1 0 50 -1 0 1 10.0000 2 165 495 2250 2025 H$_3$\00144 4 1 0 50 -1 0 1 10.0000 2 165 465 2250 1425 T$_3$\00136 4 1 0 50 -1 0 10 0.0000 2 180 1260 2550 2025 $\\Leftrightarrow$\001 37 4 1 0 50 -1 0 10 0.0000 2 180 1260 3150 2025 $\\Leftrightarrow$\001 38 4 0 0 50 -1 0 10 0.0000 2 120 240 3300 2025 OS\001 39 4 1 0 50 -1 0 10 0.0000 2 165 495 1350 2025 H$_1$\001 40 4 1 0 50 -1 0 10 0.0000 2 165 465 1350 1425 T$_1$\001 41 4 1 0 50 -1 0 10 0.0000 2 165 495 1800 2025 H$_2$\001 42 4 1 0 50 -1 0 10 0.0000 2 165 465 1800 1425 T$_2$\001 43 4 1 0 50 -1 0 10 0.0000 2 165 495 2250 2025 H$_3$\001 44 4 1 0 50 -1 0 10 0.0000 2 165 465 2250 1425 T$_3$\001 -
doc/papers/llheap/figures/PrivatePublicHeaps.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 2550 1200 3750 1200 3750 1500 2550 1500 2550 1200 13 4 1 0 50 -1 0 1 10.0000 2 180 900 3150 1425 Global Heap\00113 4 1 0 50 -1 0 10 0.0000 2 180 900 3150 1425 Global Heap\001 14 14 -6 15 15 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 … … 71 71 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 72 72 3600 2700 4800 2700 4800 3000 3600 3000 3600 2700 73 4 1 0 50 -1 0 1 10.0000 2 180 525 3150 2025 locking\00174 4 1 0 50 -1 0 1 11.5708 2 120 330 1200 2850 alloc\00175 4 1 0 50 -1 0 1 14.7124 2 135 495 4725 3300 dealloc\00176 4 1 0 50 -1 0 1 14.7124 2 120 330 5100 2850 alloc\00177 4 1 0 50 -1 0 1 15.4803 2 135 495 3375 3375 dealloc\00178 4 1 0 50 -1 0 1 10.8029 2 180 750 2700 3225 ownership\00179 4 1 0 50 -1 0 1 10.8029 2 135 495 2925 3375 dealloc\00180 4 1 0 50 -1 0 1 15.4803 2 180 750 3600 3225 ownership\00181 4 1 0 50 -1 0 1 14.7124 2 135 495 4725 2400 dealloc\00182 4 1 0 50 -1 0 1 11.5708 2 135 495 1575 3300 dealloc\00183 4 1 0 50 -1 0 1 11.5708 2 135 495 1575 2400 dealloc\00184 4 1 0 50 -1 0 1 11.5708 2 120 330 1950 3300 alloc\00185 4 1 0 50 -1 0 1 14.7124 2 120 330 4350 3300 alloc\00186 4 1 0 50 -1 0 1 10.0000 2 165 855 1800 3825 Thread$_1$\00187 4 1 0 50 -1 0 1 10.0000 2 165 855 4500 3825 Thread$_2$\00188 4 1 0 50 -1 0 1 10.0000 2 180 1230 1800 2025 Public Heap$_1$\00189 4 1 0 50 -1 0 1 10.0000 2 180 1275 2100 2925 Private Heap$_1$\00190 4 1 0 50 -1 0 1 10.0000 2 180 1230 4500 2025 Public Heap$_2$\00191 4 1 0 50 -1 0 1 10.0000 2 180 1275 4200 2925 Private Heap$_2$\00173 4 1 0 50 -1 0 10 0.0000 2 180 525 3150 2025 locking\001 74 4 1 0 50 -1 0 10 1.5708 2 120 330 1200 2850 alloc\001 75 4 1 0 50 -1 0 10 4.7124 2 135 495 4725 3300 dealloc\001 76 4 1 0 50 -1 0 10 4.7124 2 120 330 5100 2850 alloc\001 77 4 1 0 50 -1 0 10 5.4803 2 135 495 3375 3375 dealloc\001 78 4 1 0 50 -1 0 10 0.8029 2 180 750 2700 3225 ownership\001 79 4 1 0 50 -1 0 10 0.8029 2 135 495 2925 3375 dealloc\001 80 4 1 0 50 -1 0 10 5.4803 2 180 750 3600 3225 ownership\001 81 4 1 0 50 -1 0 10 4.7124 2 135 495 4725 2400 dealloc\001 82 4 1 0 50 -1 0 10 1.5708 2 135 495 1575 3300 dealloc\001 83 4 1 0 50 -1 0 10 1.5708 2 135 495 1575 2400 dealloc\001 84 4 1 0 50 -1 0 10 1.5708 2 120 330 1950 3300 alloc\001 85 4 1 0 50 -1 0 10 4.7124 2 120 330 4350 3300 alloc\001 86 4 1 0 50 -1 0 10 0.0000 2 165 855 1800 3825 Thread$_1$\001 87 4 1 0 50 -1 0 10 0.0000 2 165 855 4500 3825 Thread$_2$\001 88 4 1 0 50 -1 0 10 0.0000 2 180 1230 1800 2025 Public Heap$_1$\001 89 4 1 0 50 -1 0 10 0.0000 2 180 1275 2100 2925 Private Heap$_1$\001 90 4 1 0 50 -1 0 10 0.0000 2 180 1230 4500 2025 Public Heap$_2$\001 91 4 1 0 50 -1 0 10 0.0000 2 180 1275 4200 2925 Private Heap$_2$\001 -
doc/papers/llheap/figures/ProgramFalseSharing.fig
r00b046f r70f97c8 15 15 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 16 16 3450 3000 4350 3000 4350 3300 3450 3300 3450 3000 17 4 1 0 50 -1 0 1 10.0000 2 165 825 3000 3225 Object$_1$\00118 4 1 0 50 -1 0 1 10.0000 2 165 825 3900 3225 Object$_2$\00117 4 1 0 50 -1 0 10 0.0000 2 165 825 3000 3225 Object$_1$\001 18 4 1 0 50 -1 0 10 0.0000 2 165 825 3900 3225 Object$_2$\001 19 19 -6 20 20 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 … … 40 40 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 41 41 3225 1800 3225 1575 2475 1575 2475 1800 3225 1800 42 4 1 0 50 -1 0 1 10.0000 2 165 855 2850 1725 Thread$_1$\00143 4 0 0 50 -1 0 1 10.0000 2 165 720 1275 1725 CPU$_1$\00144 4 1 0 50 -1 0 1 10.0000 2 135 435 2250 2025 Cache\00145 4 1 0 50 -1 0 1 10.0000 2 165 825 1800 2325 Object$_1$\00146 4 1 0 50 -1 0 1 10.0000 2 165 825 2700 2325 Object$_2$\00147 4 1 0 50 -1 0 1 10.0000 2 165 855 5250 1725 Thread$_2$\00148 4 0 0 50 -1 0 1 10.0000 2 165 720 3675 1725 CPU$_2$\00149 4 1 0 50 -1 0 1 10.0000 2 165 825 4200 2325 Object$_1$\00150 4 1 0 50 -1 0 1 10.0000 2 165 825 5100 2325 Object$_2$\00151 4 1 0 50 -1 0 1 10.0000 2 135 435 4650 2025 Cache\00152 4 2 0 50 -1 0 1 10.0000 2 165 615 2475 3225 Memory\00153 4 2 0 50 -1 2 1 10.0000 2 135 525 2550 2850 1. alloc\00154 4 0 0 50 -1 2 1 10.0000 2 180 720 2700 2775 3. modify\00155 4 0 0 50 -1 2 1 10.0000 2 180 720 4350 2850 4. modify\00156 4 1 0 50 -1 2 1 10.0000 2 165 2220 4050 1275 2. pass Object$_2$ reference\00142 4 1 0 50 -1 0 10 0.0000 2 165 855 2850 1725 Thread$_1$\001 43 4 0 0 50 -1 0 10 0.0000 2 165 720 1275 1725 CPU$_1$\001 44 4 1 0 50 -1 0 10 0.0000 2 135 435 2250 2025 Cache\001 45 4 1 0 50 -1 0 10 0.0000 2 165 825 1800 2325 Object$_1$\001 46 4 1 0 50 -1 0 10 0.0000 2 165 825 2700 2325 Object$_2$\001 47 4 1 0 50 -1 0 10 0.0000 2 165 855 5250 1725 Thread$_2$\001 48 4 0 0 50 -1 0 10 0.0000 2 165 720 3675 1725 CPU$_2$\001 49 4 1 0 50 -1 0 10 0.0000 2 165 825 4200 2325 Object$_1$\001 50 4 1 0 50 -1 0 10 0.0000 2 165 825 5100 2325 Object$_2$\001 51 4 1 0 50 -1 0 10 0.0000 2 135 435 4650 2025 Cache\001 52 4 2 0 50 -1 0 10 0.0000 2 165 615 2475 3225 Memory\001 53 4 2 0 50 -1 2 10 0.0000 2 135 525 2550 2850 1. alloc\001 54 4 0 0 50 -1 2 10 0.0000 2 180 720 2700 2775 3. modify\001 55 4 0 0 50 -1 2 10 0.0000 2 180 720 4350 2850 4. modify\001 56 4 1 0 50 -1 2 10 0.0000 2 165 2220 4050 1275 2. pass Object$_2$ reference\001 -
doc/papers/llheap/figures/RemoteFreeList.fig
r00b046f r70f97c8 41 41 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 42 42 3900 1200 5100 1200 5100 1500 3900 1500 3900 1200 43 4 1 0 50 -1 0 1 11.5708 2 135 495 1500 2250 dealloc\00144 4 1 0 50 -1 0 1 11.5708 2 120 330 1200 2250 alloc\00145 4 1 0 50 -1 0 1 14.7124 2 135 495 4800 2250 dealloc\00146 4 1 0 50 -1 0 1 10.0000 2 180 525 3150 2025 locking\00147 4 1 0 50 -1 0 1 10.5934 2 135 495 2850 2925 dealloc\00148 4 1 0 50 -1 0 1 15.6898 2 135 495 3450 2925 dealloc\00149 4 1 0 50 -1 0 1 10.5934 2 180 750 2700 2725 ownership\00150 4 1 0 50 -1 0 1 15.6898 2 180 750 3600 2725 ownership\00151 4 1 0 50 -1 0 1 11.5708 2 120 330 2025 1800 alloc\00152 4 1 0 50 -1 0 1 14.7124 2 120 330 5100 2250 alloc\00153 4 1 0 50 -1 0 1 14.7124 2 120 330 4275 1800 alloc\00154 4 1 0 50 -1 0 1 10.0000 2 165 855 1800 3225 Thread$_1$\00155 4 1 0 50 -1 0 1 10.0000 2 165 855 4500 3225 Thread$_2$\00156 4 1 0 50 -1 0 1 10.0000 2 180 1275 1800 1425 Private Heap$_1$\00157 4 1 0 50 -1 0 1 10.0000 2 165 1260 2400 2325 Remote Free$_1$\00158 4 1 0 50 -1 0 1 10.0000 2 180 1275 4500 1425 Private Heap$_2$\00159 4 1 0 50 -1 0 1 10.0000 2 165 1260 3900 2325 Remote Free$_2$\00143 4 1 0 50 -1 0 10 1.5708 2 135 495 1500 2250 dealloc\001 44 4 1 0 50 -1 0 10 1.5708 2 120 330 1200 2250 alloc\001 45 4 1 0 50 -1 0 10 4.7124 2 135 495 4800 2250 dealloc\001 46 4 1 0 50 -1 0 10 0.0000 2 180 525 3150 2025 locking\001 47 4 1 0 50 -1 0 10 0.5934 2 135 495 2850 2925 dealloc\001 48 4 1 0 50 -1 0 10 5.6898 2 135 495 3450 2925 dealloc\001 49 4 1 0 50 -1 0 10 0.5934 2 180 750 2700 2725 ownership\001 50 4 1 0 50 -1 0 10 5.6898 2 180 750 3600 2725 ownership\001 51 4 1 0 50 -1 0 10 1.5708 2 120 330 2025 1800 alloc\001 52 4 1 0 50 -1 0 10 4.7124 2 120 330 5100 2250 alloc\001 53 4 1 0 50 -1 0 10 4.7124 2 120 330 4275 1800 alloc\001 54 4 1 0 50 -1 0 10 0.0000 2 165 855 1800 3225 Thread$_1$\001 55 4 1 0 50 -1 0 10 0.0000 2 165 855 4500 3225 Thread$_2$\001 56 4 1 0 50 -1 0 10 0.0000 2 180 1275 1800 1425 Private Heap$_1$\001 57 4 1 0 50 -1 0 10 0.0000 2 165 1260 2400 2325 Remote Free$_1$\001 58 4 1 0 50 -1 0 10 0.0000 2 180 1275 4500 1425 Private Heap$_2$\001 59 4 1 0 50 -1 0 10 0.0000 2 165 1260 3900 2325 Remote Free$_2$\001 -
doc/papers/llheap/figures/SharedHeaps.fig
r00b046f r70f97c8 10 10 6 1500 1200 2100 1500 11 11 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 1350 150 150 1800 1350 1950 1350 12 4 1 0 50 -1 0 1 10.0000 2 165 465 1800 1425 T$_2$\00112 4 1 0 50 -1 0 10 0.0000 2 165 465 1800 1425 T$_2$\001 13 13 -6 14 14 6 1050 1200 1650 1500 15 15 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 1350 150 150 1350 1350 1500 1350 16 4 1 0 50 -1 0 1 10.0000 2 165 465 1350 1425 T$_1$\00116 4 1 0 50 -1 0 10 0.0000 2 165 465 1350 1425 T$_1$\001 17 17 -6 18 18 6 1950 1200 2550 1500 19 19 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 1350 150 150 2250 1350 2400 1350 20 4 1 0 50 -1 0 1 10.0000 2 165 465 2250 1425 T$_3$\00120 4 1 0 50 -1 0 10 0.0000 2 165 465 2250 1425 T$_3$\001 21 21 -6 22 22 6 1275 1800 1875 2100 23 23 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 24 24 1425 1800 1725 1800 1725 2100 1425 2100 1425 1800 25 4 1 0 50 -1 0 1 10.0000 2 165 495 1575 2025 H$_1$\00125 4 1 0 50 -1 0 10 0.0000 2 165 495 1575 2025 H$_1$\001 26 26 -6 27 27 6 1725 1800 2325 2100 28 28 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 29 29 1875 1800 2175 1800 2175 2100 1875 2100 1875 1800 30 4 1 0 50 -1 0 1 10.0000 2 165 495 2025 2025 H$_2$\00130 4 1 0 50 -1 0 10 0.0000 2 165 495 2025 2025 H$_2$\001 31 31 -6 32 32 6 2475 1800 2775 2100 33 33 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 34 34 2475 1800 2775 1800 2775 2100 2475 2100 2475 1800 35 4 1 0 50 -1 0 1 10.0000 2 120 135 2625 2025 G\00135 4 1 0 50 -1 0 10 0.0000 2 120 135 2625 2025 G\001 36 36 -6 37 37 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 … … 55 55 1 1 1.00 45.00 90.00 56 56 2250 1500 2100 1800 57 4 0 0 50 -1 0 1 10.0000 2 120 240 3075 2025 OS\00158 4 1 0 50 -1 0 1 10.0000 2 180 1260 2325 2025 $\\Leftrightarrow$\00159 4 1 0 50 -1 0 1 10.0000 2 180 1260 2925 2025 $\\Leftrightarrow$\00157 4 0 0 50 -1 0 10 0.0000 2 120 240 3075 2025 OS\001 58 4 1 0 50 -1 0 10 0.0000 2 180 1260 2325 2025 $\\Leftrightarrow$\001 59 4 1 0 50 -1 0 10 0.0000 2 180 1260 2925 2025 $\\Leftrightarrow$\001 -
doc/papers/llheap/figures/SingleHeap.fig
r00b046f r70f97c8 10 10 6 1500 1200 2100 1500 11 11 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 1350 150 150 1800 1350 1950 1350 12 4 1 0 50 -1 0 1 10.0000 2 165 465 1800 1425 T$_2$\00112 4 1 0 50 -1 0 10 0.0000 2 165 465 1800 1425 T$_2$\001 13 13 -6 14 14 6 1050 1200 1650 1500 15 15 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 1350 150 150 1350 1350 1500 1350 16 4 1 0 50 -1 0 1 10.0000 2 165 465 1350 1425 T$_1$\00116 4 1 0 50 -1 0 10 0.0000 2 165 465 1350 1425 T$_1$\001 17 17 -6 18 18 6 1950 1200 2550 1500 19 19 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 1350 150 150 2250 1350 2400 1350 20 4 1 0 50 -1 0 1 10.0000 2 165 465 2250 1425 T$_3$\00120 4 1 0 50 -1 0 10 0.0000 2 165 465 2250 1425 T$_3$\001 21 21 -6 22 22 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 … … 34 34 1 1 1.00 45.00 90.00 35 35 1800 1500 1800 1800 36 4 1 0 50 -1 0 1 10.0000 2 165 495 1800 2025 H$_1$\00137 4 1 0 50 -1 0 1 10.0000 2 180 1260 2100 2025 $\\Leftrightarrow$\00138 4 0 0 50 -1 0 1 10.0000 2 120 240 2250 2025 OS\00136 4 1 0 50 -1 0 10 0.0000 2 165 495 1800 2025 H$_1$\001 37 4 1 0 50 -1 0 10 0.0000 2 180 1260 2100 2025 $\\Leftrightarrow$\001 38 4 0 0 50 -1 0 10 0.0000 2 120 240 2250 2025 OS\001 -
doc/papers/llheap/figures/SuperContainers.fig
r00b046f r70f97c8 52 52 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 53 53 7200 2175 7200 2325 54 4 1 0 50 -1 0 1 10.0000 2 180 1035 1800 1425 Super Header\00155 4 1 0 50 -1 0 1 10.0000 2 180 810 3150 1425 8B objects\00156 4 1 0 50 -1 0 1 10.0000 2 135 135 3750 1425 H\00157 4 1 0 50 -1 0 1 10.0000 2 180 990 4500 1425 256B objects\00158 4 1 0 50 -1 0 1 10.0000 2 135 135 2550 1425 H\00159 4 1 0 50 -1 0 1 10.0000 2 135 135 5250 1425 H\00160 4 1 0 50 -1 0 1 10.0000 2 180 900 5925 1425 64B objects\00161 4 1 0 50 -1 0 1 10.0000 2 180 1035 1800 2025 Super Header\00162 4 1 0 50 -1 0 1 10.0000 2 135 135 2550 2025 H\00163 4 1 0 50 -1 0 1 10.0000 2 135 435 4425 2325 64KB\00164 4 1 0 50 -1 0 1 10.0000 2 180 945 4650 2025 4KB objects\00165 4 1 0 50 -1 0 1 10.0000 2 135 345 6825 1425 Free\00166 4 1 0 50 -1 0 1 10.0000 2 135 345 6825 2025 Free\00154 4 1 0 50 -1 0 10 0.0000 2 180 1035 1800 1425 Super Header\001 55 4 1 0 50 -1 0 10 0.0000 2 180 810 3150 1425 8B objects\001 56 4 1 0 50 -1 0 10 0.0000 2 135 135 3750 1425 H\001 57 4 1 0 50 -1 0 10 0.0000 2 180 990 4500 1425 256B objects\001 58 4 1 0 50 -1 0 10 0.0000 2 135 135 2550 1425 H\001 59 4 1 0 50 -1 0 10 0.0000 2 135 135 5250 1425 H\001 60 4 1 0 50 -1 0 10 0.0000 2 180 900 5925 1425 64B objects\001 61 4 1 0 50 -1 0 10 0.0000 2 180 1035 1800 2025 Super Header\001 62 4 1 0 50 -1 0 10 0.0000 2 135 135 2550 2025 H\001 63 4 1 0 50 -1 0 10 0.0000 2 135 435 4425 2325 64KB\001 64 4 1 0 50 -1 0 10 0.0000 2 180 945 4650 2025 4KB objects\001 65 4 1 0 50 -1 0 10 0.0000 2 135 345 6825 1425 Free\001 66 4 1 0 50 -1 0 10 0.0000 2 135 345 6825 2025 Free\001 -
doc/papers/llheap/figures/UserKernelHeaps.fig
r00b046f r70f97c8 10 10 6 1500 1200 2100 1500 11 11 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1800 1350 150 150 1800 1350 1950 1350 12 4 1 0 50 -1 0 1 10.0000 2 165 495 1800 1425 U$_2$\00112 4 1 0 50 -1 0 10 0.0000 2 165 495 1800 1425 U$_2$\001 13 13 -6 14 14 6 1050 1200 1650 1500 15 15 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1350 1350 150 150 1350 1350 1500 1350 16 4 1 0 50 -1 0 1 10.0000 2 165 495 1350 1425 U$_1$\00116 4 1 0 50 -1 0 10 0.0000 2 165 495 1350 1425 U$_1$\001 17 17 -6 18 18 6 1950 1200 2550 1500 19 19 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2250 1350 150 150 2250 1350 2400 1350 20 4 1 0 50 -1 0 1 10.0000 2 165 495 2250 1425 U$_3$\00120 4 1 0 50 -1 0 10 0.0000 2 165 495 2250 1425 U$_3$\001 21 21 -6 22 22 6 2850 1200 3450 1500 23 23 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3150 1350 150 150 3150 1350 3300 1350 24 4 1 0 50 -1 0 1 10.0000 2 165 495 3150 1425 U$_4$\00124 4 1 0 50 -1 0 10 0.0000 2 165 495 3150 1425 U$_4$\001 25 25 -6 26 26 6 2400 1200 3000 1500 27 27 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2700 1350 150 150 2700 1350 2850 1350 28 4 1 0 50 -1 0 1 10.0000 2 165 495 2700 1425 U$_5$\00128 4 1 0 50 -1 0 10 0.0000 2 165 495 2700 1425 U$_5$\001 29 29 -6 30 30 6 3300 1200 3900 1500 31 31 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3600 1350 150 150 3600 1350 3750 1350 32 4 1 0 50 -1 0 1 10.0000 2 165 495 3600 1425 U$_6$\00132 4 1 0 50 -1 0 10 0.0000 2 165 495 3600 1425 U$_6$\001 33 33 -6 34 34 6 2175 1800 2775 2100 35 35 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2475 1950 150 150 2475 1950 2625 1950 36 4 1 0 50 -1 0 1 10.0000 2 165 495 2475 2025 K$_2$\00136 4 1 0 50 -1 0 10 0.0000 2 165 495 2475 2025 K$_2$\001 37 37 -6 38 38 6 1725 1800 2325 2100 39 39 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2025 1950 150 150 2025 1950 2175 1950 40 4 1 0 50 -1 0 1 10.0000 2 165 495 2025 2025 K$_1$\00140 4 1 0 50 -1 0 10 0.0000 2 165 495 2025 2025 K$_1$\001 41 41 -6 42 42 6 2625 1800 3225 2100 43 43 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2925 1950 150 150 2925 1950 3075 1950 44 4 1 0 50 -1 0 1 10.0000 2 165 495 2925 2025 K$_3$\00144 4 1 0 50 -1 0 10 0.0000 2 165 495 2925 2025 K$_3$\001 45 45 -6 46 46 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 1 2 … … 56 56 1 1 1.00 45.00 90.00 57 57 2925 2100 2925 2400 58 4 1 0 50 -1 0 1 10.0000 2 135 2235 2475 1725 scheduled across kernel threads\00159 4 1 0 50 -1 0 1 10.0000 2 180 2145 2475 2625 K:1 or K:H or 1:1 heap model\00158 4 1 0 50 -1 0 10 0.0000 2 135 2235 2475 1725 scheduled across kernel threads\001 59 4 1 0 50 -1 0 10 0.0000 2 180 2145 2475 2625 K:1 or K:H or 1:1 heap model\001 -
doc/papers/llheap/figures/llheap.fig
r00b046f r70f97c8 11 11 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 12 12 1275 1950 1725 1950 1725 2250 1275 2250 1275 1950 13 4 1 0 50 -1 0 1 20.0000 2 135 360 1500 2175 lock\00113 4 1 0 50 -1 0 10 0.0000 2 135 360 1500 2175 lock\001 14 14 -6 15 15 6 4125 4050 4275 4350 … … 31 31 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 32 32 3225 4650 3675 4650 3675 4950 3225 4950 3225 4650 33 4 1 0 50 -1 0 1 20.0000 2 135 360 3450 4875 lock\00133 4 1 0 50 -1 0 10 0.0000 2 135 360 3450 4875 lock\001 34 34 -6 35 35 6 3750 2325 3900 2700 … … 55 55 2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 56 56 2550 3750 3450 3750 3450 3975 2550 3975 2550 3750 57 4 1 0 50 -1 0 1 20.0000 2 180 900 3000 3300 local pools\00157 4 1 0 50 -1 0 10 0.0000 2 180 900 3000 3300 local pools\001 58 58 -6 59 59 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 … … 161 161 2 2 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 162 162 1200 3000 1800 3000 1800 3525 1200 3525 1200 3000 163 4 2 0 50 -1 0 1 10.0000 2 135 300 2325 1950 lock\001164 4 2 0 50 -1 0 1 10.0000 2 120 270 2325 2100 size\001165 4 2 0 50 -1 0 1 10.0000 2 120 270 2325 2400 free\001166 4 2 0 50 -1 0 1 10.0000 2 165 495 2325 2250 (away)\001167 4 1 0 50 -1 0 1 20.0000 2 180 1455 4575 4575 global pool (sbrk)\001168 4 1 0 50 -1 0 1 20.0000 2 180 900 4200 3300 local pools\001169 4 1 0 50 -1 0 1 20.0000 2 180 1695 4350 1425 global heaps (mmap)\001170 4 1 0 50 -1 0 1 20.0000 2 180 810 3000 1725 heap$_1$\001171 4 1 0 50 -1 0 1 20.0000 2 180 810 4200 1725 heap$_2$\001172 4 1 0 50 -1 0 1 10.0000 2 120 255 1500 3150 fast\001173 4 1 0 50 -1 0 1 10.0000 2 180 495 1500 3300 lookup\001174 4 1 0 50 -1 0 1 10.0000 2 135 330 1500 3450 table\001175 4 1 0 50 -1 0 1 10.0000 2 120 315 1575 4050 stats\001176 4 1 0 50 -1 0 1 10.0000 2 120 600 1575 4200 counters\001177 4 1 0 50 -1 0 1 10.0000 2 135 330 1575 4350 table\001163 4 2 0 50 -1 0 10 0.0000 2 135 300 2325 1950 lock\001 164 4 2 0 50 -1 0 10 0.0000 2 120 270 2325 2100 size\001 165 4 2 0 50 -1 0 10 0.0000 2 120 270 2325 2400 free\001 166 4 2 0 50 -1 0 10 0.0000 2 165 495 2325 2250 (away)\001 167 4 1 0 50 -1 0 10 0.0000 2 180 1455 4575 4575 global pool (sbrk)\001 168 4 1 0 50 -1 0 10 0.0000 2 180 900 4200 3300 local pools\001 169 4 1 0 50 -1 0 10 0.0000 2 180 1695 4350 1425 global heaps (mmap)\001 170 4 1 0 50 -1 0 10 0.0000 2 180 810 3000 1725 heap$_1$\001 171 4 1 0 50 -1 0 10 0.0000 2 180 810 4200 1725 heap$_2$\001 172 4 1 0 50 -1 0 10 0.0000 2 120 255 1500 3150 fast\001 173 4 1 0 50 -1 0 10 0.0000 2 180 495 1500 3300 lookup\001 174 4 1 0 50 -1 0 10 0.0000 2 135 330 1500 3450 table\001 175 4 1 0 50 -1 0 10 0.0000 2 120 315 1575 4050 stats\001 176 4 1 0 50 -1 0 10 0.0000 2 120 600 1575 4200 counters\001 177 4 1 0 50 -1 0 10 0.0000 2 135 330 1575 4350 table\001 -
doc/theses/colby_parsons_MMAth/Makefile
r00b046f r70f97c8 6 6 TeXLIB = .:style:text:${Macros}:${Build}:../../bibliography: 7 7 LaTeX = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error -output-directory=${Build} 8 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex -terse8 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex 9 9 10 10 MAKEFLAGS = --no-print-directory --silent # … … 117 117 # Must have *.aux file containing citations for bibtex 118 118 if [ ! -r ${basename $@}.aux ] ; then ${LaTeX} ${basename $@}.tex ; fi 119 -${BibTeX} ${Build}/${basename $@}119 ${BibTeX} ${Build}/${basename $@} 120 120 # Some citations reference others so run again to resolve these citations 121 121 # ${LaTeX} ${basename $@}.tex -
doc/theses/colby_parsons_MMAth/glossary.tex
r00b046f r70f97c8 35 35 \newabbreviation{rtti}{RTTI}{\Newterm{run-time type information}} 36 36 \newabbreviation{fcfs}{FCFS}{\Newterm{first-come first-served}} 37 \newabbreviation{lifo}{LIFO}{\Newterm{last-in first-out}} 38 \newabbreviation{fifo}{FIFO}{\Newterm{first-in first-out}} 37 39 \newabbreviation{toctou}{TOCTOU}{\Newterm{time-of-check to time-of-use}} 38 40 -
doc/theses/colby_parsons_MMAth/local.bib
r00b046f r70f97c8 27 27 pages={11--20}, 28 28 year={2017} 29 }30 31 @phdthesis{Delisle22,32 author={{Delisle, Thierry}},33 title={The \textsf{C}$\mathbf{\forall}$ Scheduler},34 year={2022},35 publisher="UWSpace",36 url={http://hdl.handle.net/10012/18941}37 }38 39 @article{Hoare78,40 title={Communicating sequential processes},41 author={Hoare, Charles Antony Richard},42 journal={Communications of the ACM},43 volume={21},44 number={8},45 pages={666--677},46 year={1978},47 publisher={ACM New York, NY, USA}48 }49 50 @mastersthesis{Beach21,51 author={{Beach, Andrew James}},52 title={Exception Handling in \textsf{C}$\mathbf{\forall}$},53 year={2021},54 publisher="UWSpace",55 url={http://hdl.handle.net/10012/17617}56 29 } 57 30 -
doc/theses/colby_parsons_MMAth/text/channels.tex
r00b046f r70f97c8 9 9 This model is an alternative to shared-memory concurrency, where threads communicate directly by changing shared state. 10 10 11 Channels were first introduced by Kahn~\cite{Kahn74} and extended by Hoare~\cite{ Hoare78} (CSP).11 Channels were first introduced by Kahn~\cite{Kahn74} and extended by Hoare~\cite{CSP} (CSP). 12 12 Both papers present a pseudo (unimplemented) concurrent language where processes communicate using input/output channels to send data. 13 13 Both languages are highly restrictive. … … 47 47 48 48 In general, the order values are processed by the consumer does not affect the correctness of the producer-consumer problem. 49 For example, the buffer can be LIFO, FIFO, or prioritized with respect to insertion and removal.49 For example, the buffer can be \gls{lifo}, \gls{fifo}, or prioritized with respect to insertion and removal. 50 50 However, like MX, a buffer should ensure every value is eventually removed after some reasonable bounded time (no long-term starvation). 51 51 The simplest way to prevent starvation is to implement the buffer as a queue, either with a cyclic array or linked nodes. … … 53 53 \section{First-Come First-Served} 54 54 As pointed out, a bounded buffer requires MX among multiple producers or consumers. 55 This MX should be fair among threads, independent of the FIFObuffer being fair among values.55 This MX should be fair among threads, independent of the \gls{fifo} buffer being fair among values. 56 56 Fairness among threads is called \gls{fcfs} and was defined by Lamport~\cite[p.~454]{Lamport74}. 57 57 \gls{fcfs} is defined in relation to a doorway~\cite[p.~330]{Lamport86II}, which is the point at which an ordering among threads can be established. … … 68 68 Currently, only the Go programming language provides user-level threading where the primary communication mechanism is channels. 69 69 Experiments were conducted that varied the producer-consumer algorithm and lock type used inside the channel. 70 With the exception of non-\gls{fcfs} or non- FIFOalgorithms, no algorithm or lock usage in the channel implementation was found to be consistently more performant that Go's choice of algorithm and lock implementation.70 With the exception of non-\gls{fcfs} or non-\gls{fifo} algorithms, no algorithm or lock usage in the channel implementation was found to be consistently more performant that Go's choice of algorithm and lock implementation. 71 71 Performance of channels can be improved by sharding the underlying buffer \cite{Dice11}. 72 However, the FIFOproperty is lost, which is undesirable for user-facing channels.72 However, the \gls{fifo} property is lost, which is undesirable for user-facing channels. 73 73 Therefore, the low-level channel implementation in \CFA is largely copied from the Go implementation, but adapted to the \CFA type and runtime systems. 74 74 As such the research contributions added by \CFA's channel implementation lie in the realm of safety and productivity features. -
src/Parser/parser.yy
r00b046f r70f97c8 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Jun 20 22:10:31202313 // Update Count : 63 4812 // Last Modified On : Fri Jun 30 12:32:36 2023 13 // Update Count : 6364 14 14 // 15 15 … … 2680 2680 ENUM attribute_list_opt '{' enumerator_list comma_opt '}' 2681 2681 { $$ = DeclarationNode::newEnum( nullptr, $4, true, false )->addQualifiers( $2 ); } 2682 | ENUM attribute_list_opt '!' '{' enumerator_list comma_opt '}' // invalid syntax rule 2683 { SemanticError( yylloc, "syntax error, hiding '!' the enumerator names of an anonymous enumeration means the names are inaccessible." ); $$ = nullptr; } 2682 2684 | ENUM attribute_list_opt identifier 2683 2685 { typedefTable.makeTypedef( *$3 ); } 2684 2686 hide_opt '{' enumerator_list comma_opt '}' 2685 2687 { $$ = DeclarationNode::newEnum( $3, $7, true, false, nullptr, $5 )->addQualifiers( $2 ); } 2686 | ENUM attribute_list_opt typedef_name // unqualified type name 2687 hide_opt '{' enumerator_list comma_opt '}' 2688 | ENUM attribute_list_opt typedef_name hide_opt '{' enumerator_list comma_opt '}' // unqualified type name 2688 2689 { $$ = DeclarationNode::newEnum( $3->name, $6, true, false, nullptr, $4 )->addQualifiers( $2 ); } 2689 2690 | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt '{' enumerator_list comma_opt '}' … … 2694 2695 $$ = DeclarationNode::newEnum( nullptr, $7, true, true, $3 )->addQualifiers( $5 ); 2695 2696 } 2697 | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt '!' '{' enumerator_list comma_opt '}' // unqualified type name 2698 { SemanticError( yylloc, "syntax error, hiding '!' the enumerator names of an anonymous enumeration means the names are inaccessible." ); $$ = nullptr; } 2696 2699 | ENUM '(' ')' attribute_list_opt '{' enumerator_list comma_opt '}' 2697 2700 { 2698 2701 $$ = DeclarationNode::newEnum( nullptr, $6, true, true )->addQualifiers( $4 ); 2699 2702 } 2703 | ENUM '(' ')' attribute_list_opt '!' '{' enumerator_list comma_opt '}' // invalid syntax rule 2704 { SemanticError( yylloc, "syntax error, hiding '!' the enumerator names of an anonymous enumeration means the names are inaccessible." ); $$ = nullptr; } 2700 2705 | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt identifier attribute_list_opt 2701 2706 { … … 2709 2714 $$ = DeclarationNode::newEnum( $6, $11, true, true, $3, $9 )->addQualifiers( $5 )->addQualifiers( $7 ); 2710 2715 } 2711 | ENUM '(' ')' attribute_list_opt identifier attribute_list_opt 2712 hide_opt '{' enumerator_list comma_opt '}' 2716 | ENUM '(' ')' attribute_list_opt identifier attribute_list_opt hide_opt '{' enumerator_list comma_opt '}' 2713 2717 { 2714 2718 $$ = DeclarationNode::newEnum( $5, $9, true, true, nullptr, $7 )->addQualifiers( $4 )->addQualifiers( $6 ); 2715 2719 } 2716 | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt typedef_name attribute_list_opt 2717 hide_opt '{' enumerator_list comma_opt '}' 2720 | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt typedef_name attribute_list_opt hide_opt '{' enumerator_list comma_opt '}' 2718 2721 { 2719 2722 $$ = DeclarationNode::newEnum( $6->name, $10, true, true, $3, $8 )->addQualifiers( $5 )->addQualifiers( $7 ); 2720 2723 } 2721 | ENUM '(' ')' attribute_list_opt typedef_name attribute_list_opt 2722 hide_opt '{' enumerator_list comma_opt '}' 2724 | ENUM '(' ')' attribute_list_opt typedef_name attribute_list_opt hide_opt '{' enumerator_list comma_opt '}' 2723 2725 { 2724 2726 $$ = DeclarationNode::newEnum( $5->name, $9, true, true, nullptr, $7 )->addQualifiers( $4 )->addQualifiers( $6 ); -
tests/raii/.expect/memberCtors-ERR1.txt
r00b046f r70f97c8 1 raii/memberCtors.cfa:9 2:1 error: in ?{}, field a2 used before being constructed1 raii/memberCtors.cfa:94:1 error: in ?{}, field a2 used before being constructed -
tests/raii/memberCtors.cfa
r00b046f r70f97c8 1 #include <fstream.hfa> 2 1 3 struct WrappedInt { 2 3 4 int x; 5 int id; 4 6 }; 5 7 int intID = 0; 6 8 7 void ?{}( WrappedInt & this) {8 9 printf("constructing int id: %d\n", this.id);10 9 void ?{}( WrappedInt & this ) { 10 this.id = intID++; 11 sout | "constructing int id: " | this.id; 12 this.x = 0; 11 13 } 12 14 13 void ?{}( WrappedInt & this, WrappedInt other) {14 15 printf("copy constructing int: %d id: %d\n", other.x, this.id);16 15 void ?{}( WrappedInt & this, WrappedInt other ) { 16 this.id = intID++; 17 sout | "copy constructing int: " | other.x | "id: " | this.id; 18 this.x = other.x; 17 19 } 18 20 19 void ?{}( WrappedInt & this, int x) {20 21 printf("constructing int: %d id: %d\n", x, this.id);22 21 void ?{}( WrappedInt & this, int x ) { 22 this.id = intID++; 23 sout | "constructing int: " | x | "id: " | this.id; 24 this.x = x; 23 25 } 24 26 25 void ^?{}( WrappedInt & this) {26 printf("destructing int: %d id: %d\n", this.x, this.id);27 void ^?{}( WrappedInt & this ) { 28 sout | "destructing int: " | this.x | "id: " | this.id; 27 29 } 28 30 29 /* WrappedInt */ void ?=?( WrappedInt & this, int x) {30 printf("assigning int: %d %d id: %d\n", this.x, x, this.id);31 32 31 /* WrappedInt */ void ?=?( WrappedInt & this, int x ) { 32 sout | "assigning int: " | this.x | x | "id: " | this.id; 33 this.x = x; 34 // return this; 33 35 } 34 36 35 // WrappedInt ?=?( WrappedInt & this, WrappedInt other) {36 // printf("assigning int: %d %d\n", this.x, other.x);37 // WrappedInt ?=?( WrappedInt & this, WrappedInt other ) { 38 // sout | "assigning int: " | this.x | other.x; 37 39 // this.x = other.x; 38 40 // return this; … … 40 42 41 43 struct A { 42 43 44 WrappedInt x, y, z; 45 int id; 44 46 }; 45 47 int AID = 0; 46 48 47 void ?{}( A & a) {48 49 50 printf("default construct A %d\n", a.id);49 void ?{}( A & a ) { 50 // currently must define default ctor, since there's no "= default" syntax 51 a.id = AID++; 52 sout | "default construct A" | a.id; 51 53 } 52 54 53 void ?{}( A & a, int x) {54 55 printf("begin construct A id: %d\n", a.id);56 printf("construct a.x\n");57 58 printf("assign a.y\n");59 60 printf("end construct A\n");55 void ?{}( A & a, int x ) { 56 a.id = AID++; 57 sout | "begin construct A id: " | a.id; 58 sout | "construct a.x"; 59 (a.x){ x+999 }; 60 sout | "assign a.y"; 61 a.y = 0; // not a constructor - default constructor will be inserted 62 sout | "end construct A"; 61 63 } // z never constructed - will be automatically default constructed 62 64 63 void ?{}( A & this, A other) {64 65 printf("begin copy construct A id: %d\n", this.id);66 printf("copy construct this.x\n");67 68 printf("assign this.y\n");69 70 printf("end copy construct A\n");65 void ?{}( A & this, A other ) { 66 this.id = AID++; 67 sout | "begin copy construct A id: " | this.id; 68 sout | "copy construct this.x"; 69 (this.x){ other.x }; 70 sout | "assign this.y"; 71 this.y = other.y; // not a constructor - copy constructor will be inserted 72 sout | "end copy construct A"; 71 73 } // z never constructed - will be automatically copy constructed 72 74 73 A ?=?( A & this, A other) {74 printf("begin ?=? A id: %d\n", this.id);75 76 77 78 printf("end ?=? A\n");79 75 A ?=?( A & this, A other ) { 76 sout | "begin ?=? A id: " | this.id; 77 this.x = other.x; 78 this.y = other.y; 79 this.z = other.z; 80 sout | "end ?=? A"; 81 return this; 80 82 } 81 83 82 84 struct B { 83 84 85 A a1, a2, a3; 86 int id; 85 87 }; 86 88 int BID = 0; 87 89 88 void ?{}( B & b) {89 90 printf("begin construct B id: %d\n", b.id);91 printf("assign b.a2\n");92 b.a2 = (A){ 2 };93 printf("construct b.a1\n");94 90 void ?{}( B & b ) { 91 b.id = BID++; 92 sout | "begin construct B id: " | b.id; 93 sout | "assign b.a2"; 94 b.a2 = (A){ 2 }; 95 sout | "construct b.a1"; 96 (b.a1){ 1 }; 95 97 #ifdef ERR1 96 98 (b.a2){ b.a3 }; // error, b->a2 was used previously but is explicitly constructed 97 99 #endif 98 printf("end construct B\n");100 sout | "end construct B"; 99 101 } // a2, a3 never constructed - will be automatically default constructed 100 102 101 void ^?{}( B & b) {102 103 printf("begin destruct B id: %d\n", b.id);104 105 106 printf("end destruct B\n");103 void ^?{}( B & b ) { 104 b.id = BID++; 105 sout | "begin destruct B id: " | b.id; 106 b.a2 = (A) { 0 }; 107 ^(b.a1){}; 108 sout | "end destruct B"; 107 109 } // a2, a3 never destructed - will be automatically destructed 108 110 109 111 int main() { 110 printf("Before declaration of b1\n");111 112 printf("Before declaration of b2\n");113 114 printf("End of main\n");112 sout | "Before declaration of b1"; 113 B b1; // b1 = { { 1000, 0, 0 }, { 1001, 0, 0 }, { 0, 0, 0 } } 114 sout | "Before declaration of b2"; 115 B b2 = b1; 116 sout | "End of main"; 115 117 }
Note:
See TracChangeset
for help on using the changeset viewer.