Changeset 7b0e8b7 for tests/collections
- Timestamp:
- Oct 18, 2021, 4:31:04 PM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- 6f7aff3
- Parents:
- 804bf677
- Location:
- tests/collections
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/collections/.expect/string-ctx-manage.txt
r804bf677 r7b0e8b7 4 4 bye 5 5 hi 6 bye 6 7 done -
tests/collections/.expect/string-gc.txt
r804bf677 r7b0e8b7 38 38 x from 5 to 15 39 39 y from 5 to 15 40 ======================== fillNoCompact 41 about to expand, a = aaa 42 expanded, a = aaa 43 about to expand, a = aaa 44 expanded, a = aaa 45 about to expand, a = aaa 46 expanded, a = aaa 47 about to expand, a = aaa 48 expanded, a = aaa 49 about to expand, a = aaa 50 expanded, a = aaa -
tests/collections/string-ctx-manage.cfa
r804bf677 r7b0e8b7 36 36 string y = x; // y allocates into private pad, implying eager copy 37 37 assert( y.inner->Handle.s != x.inner->Handle.s); 38 assert( DEBUG_string_bytes_in_heap(y.inner->Handle.ulink) == y.inner->Handle.lnth ); // y is in a perfectly fitting heap 38 39 sout | y; // hi 39 40 40 // -- following hits "need to implement actual growth" 41 // and it passes if I modify string_res.cfa to oversize the owned heaps 42 43 // x = "bye"; 44 // y = x; // into private y => eager copy 45 // assert( y.inner->Handle.s != x.inner->Handle.s); 46 // sout | y; // bye 41 x = "bye"; 42 y = x; // into private y => eager copy 43 assert( y.inner->Handle.s != x.inner->Handle.s); 44 // assert( DEBUG_string_bytes_in_heap(y.inner->Handle.ulink) == y.inner->Handle.lnth ); // optimization required 45 sout | y; // bye 47 46 } 48 47 -
tests/collections/string-gc.cfa
r804bf677 r7b0e8b7 120 120 } 121 121 122 void fillNoCompact() { 123 // show that allocating in a heap filled with mostly live strings (no collectable garbage) causes heap growth 124 125 sout | "======================== fillNoCompact"; 126 127 size_t lastTimeBytesAvail = bytesRemaining(); 128 assert( lastTimeBytesAvail >= 200 ); // starting this test with nontrivial room 129 130 // mostly fill the pad 131 string_res a = "aaa"; // will have to be moved 132 string_res z = "zzz"; 133 for (i; 5) { 134 while ( bytesRemaining() > 10 ) { 135 z += "."; 136 } 137 sout | "about to expand, a = " | a; 138 while ( bytesRemaining() <= 10 ) { 139 z += "."; 140 } 141 sout | "expanded, a = " | a; 142 143 // each growth gives more usable space than the last 144 assert( bytesRemaining() > lastTimeBytesAvail ); 145 lastTimeBytesAvail = bytesRemaining(); 146 } 147 } 148 122 149 int main() { 123 150 basicFillCompact(); 124 151 fillCompact_withSharedEdits(); 152 fillNoCompact(); 125 153 }
Note: See TracChangeset
for help on using the changeset viewer.