This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
cs330_f2016:lab14 [2016/11/15 18:46] morse |
cs330_f2016:lab14 [2021/06/30 23:42] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ** This version is preliminary and subject to change until this line is removed ** | ||
====Objective:==== | ====Objective:==== | ||
Line 41: | Line 40: | ||
===Stop and Copy=== | ===Stop and Copy=== | ||
- | For the stop-and-copy part of the assignment, you are given the initial tospace, which is identical to the original heap for the mark-and-sweep part. | + | For the stop-and-copy part of the assignment, you are given the initial fromspace, which is identical to the original heap for the mark-and-sweep part. |
However, the interpretation is slightly different: for mark-and-sweep, you have to identify blocks as free and maintain a free-block list. | However, the interpretation is slightly different: for mark-and-sweep, you have to identify blocks as free and maintain a free-block list. | ||
For stop-and-copy, there are no free blocks or a list of such. Instead, all memory above the single free pointer is unused and can be allocated. | For stop-and-copy, there are no free blocks or a list of such. Instead, all memory above the single free pointer is unused and can be allocated. | ||
Line 54: | Line 53: | ||
- update the pointer you just scanned, and | - update the pointer you just scanned, and | ||
- leave a forwarding address in the fromspace should you revisit that object again. | - leave a forwarding address in the fromspace should you revisit that object again. | ||
+ | |||
+ | Continue this process until you've scanned everything that's been copied over and the scan pointer catches up with the free pointer. | ||
---- | ---- | ||
- | ===Hints:=== | + | ====Notes:==== |
+ | |||
+ | - Address 0 is intentionally not used and a reference with value = 0 should be taken as a NULL pointer. | ||
+ | - Use the "Interpretation" column for your own notes, but all necessary information must be in the heap contents, not this column! | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====Hints:==== | ||
+ | |||
+ | Since both methods should result in the same set of live objects, try comparing which blocks still remain after each approach. The order in which they appear in memory will be different, but the set of live objects should be the same. | ||
+ | |||
+ | |||
+ |