Index: src/mark-compact.h |
diff --git a/src/mark-compact.h b/src/mark-compact.h |
index 3950e7538bfdaf48531223942cee901b59d9a5fa..1d289a75928aefa8fba0c6b2914e03a4769bd376 100644 |
--- a/src/mark-compact.h |
+++ b/src/mark-compact.h |
@@ -41,7 +41,8 @@ typedef bool (*IsAliveFunction)(HeapObject* obj, int* size, int* offset); |
// no attempt to add area to free list is made. |
typedef void (*DeallocateFunction)(Address start, |
int size_in_bytes, |
- bool add_to_freelist); |
+ bool add_to_freelist, |
+ bool last_on_page); |
// Forward declarations. |
@@ -131,8 +132,7 @@ class MarkCompactCollector: public AllStatic { |
SWEEP_SPACES, |
ENCODE_FORWARDING_ADDRESSES, |
UPDATE_POINTERS, |
- RELOCATE_OBJECTS, |
- REBUILD_RSETS |
+ RELOCATE_OBJECTS |
}; |
// The current stage of the collector. |
@@ -269,22 +269,22 @@ class MarkCompactCollector: public AllStatic { |
// written to their map word's offset in the inactive |
// semispace. |
// |
- // Bookkeeping data is written to the remembered-set are of |
+ // Bookkeeping data is written to the page header of |
// eached paged-space page that contains live objects after |
// compaction: |
// |
- // The 3rd word of the page (first word of the remembered |
- // set) contains the relocation top address, the address of |
- // the first word after the end of the last live object in |
- // the page after compaction. |
+ // The allocation watermark field is used to track the |
+ // relocation top address, the address of the first word |
+ // after the end of the last live object in the page after |
+ // compaction. |
// |
- // The 4th word contains the zero-based index of the page in |
- // its space. This word is only used for map space pages, in |
+ // The Page::mc_page_index field contains the zero-based index of the |
+ // page in its space. This word is only used for map space pages, in |
// order to encode the map addresses in 21 bits to free 11 |
// bits per map word for the forwarding address. |
// |
- // The 5th word contains the (nonencoded) forwarding address |
- // of the first live object in the page. |
+ // The Page::mc_first_forwarded field contains the (nonencoded) |
+ // forwarding address of the first live object in the page. |
// |
// In both the new space and the paged spaces, a linked list |
// of live regions is constructructed (linked through |
@@ -319,23 +319,28 @@ class MarkCompactCollector: public AllStatic { |
// generation. |
static void DeallocateOldPointerBlock(Address start, |
int size_in_bytes, |
- bool add_to_freelist); |
+ bool add_to_freelist, |
+ bool last_on_page); |
static void DeallocateOldDataBlock(Address start, |
int size_in_bytes, |
- bool add_to_freelist); |
+ bool add_to_freelist, |
+ bool last_on_page); |
static void DeallocateCodeBlock(Address start, |
int size_in_bytes, |
- bool add_to_freelist); |
+ bool add_to_freelist, |
+ bool last_on_page); |
static void DeallocateMapBlock(Address start, |
int size_in_bytes, |
- bool add_to_freelist); |
+ bool add_to_freelist, |
+ bool last_on_page); |
static void DeallocateCellBlock(Address start, |
int size_in_bytes, |
- bool add_to_freelist); |
+ bool add_to_freelist, |
+ bool last_on_page); |
// If we are not compacting the heap, we simply sweep the spaces except |
// for the large object space, clearing mark bits and adding unmarked |
@@ -349,9 +354,7 @@ class MarkCompactCollector: public AllStatic { |
// |
// After: All pointers in live objects, including encoded map |
// pointers, are updated to point to their target's new |
- // location. The remembered set area of each paged-space |
- // page containing live objects still contains bookkeeping |
- // information. |
+ // location. |
friend class UpdatingVisitor; // helper for updating visited objects |
@@ -373,13 +376,9 @@ class MarkCompactCollector: public AllStatic { |
// Phase 4: Relocating objects. |
// |
// Before: Pointers to live objects are updated to point to their |
- // target's new location. The remembered set area of each |
- // paged-space page containing live objects still contains |
- // bookkeeping information. |
+ // target's new location. |
// |
- // After: Objects have been moved to their new addresses. The |
- // remembered set area of each paged-space page containing |
- // live objects still contains bookkeeping information. |
+ // After: Objects have been moved to their new addresses. |
// Relocates objects in all spaces. |
static void RelocateObjects(); |
@@ -408,17 +407,6 @@ class MarkCompactCollector: public AllStatic { |
// Copy a new object. |
static int RelocateNewObject(HeapObject* obj); |
- // ----------------------------------------------------------------------- |
- // Phase 5: Rebuilding remembered sets. |
- // |
- // Before: The heap is in a normal state except that remembered sets |
- // in the paged spaces are not correct. |
- // |
- // After: The heap is in a normal state. |
- |
- // Rebuild remembered set in old and map spaces. |
- static void RebuildRSets(); |
- |
#ifdef DEBUG |
// ----------------------------------------------------------------------- |
// Debugging variables, functions and classes |