Index: src/heap.h |
=================================================================== |
--- src/heap.h (revision 6554) |
+++ src/heap.h (working copy) |
@@ -214,9 +214,9 @@ |
typedef String* (*ExternalStringTableUpdaterCallback)(Object** pointer); |
-typedef bool (*DirtyRegionCallback)(Address start, |
- Address end, |
- ObjectSlotCallback copy_object_func); |
+typedef void (*PointerRegionCallback)(Address start, |
+ Address end, |
+ ObjectSlotCallback copy_object_func); |
// The all static Heap captures the interface to the global object heap. |
@@ -821,49 +821,36 @@ |
WATERMARK_CAN_BE_INVALID |
}; |
- // For each dirty region on a page in use from an old space call |
- // visit_dirty_region callback. |
- // If either visit_dirty_region or callback can cause an allocation |
+ // For each region of pointers on a page in use from an old space call |
+ // visit_pointer_region callback. |
+ // If either visit_pointer_region or callback can cause an allocation |
// in old space and changes in allocation watermark then |
// can_preallocate_during_iteration should be set to true. |
// All pages will be marked as having invalid watermark upon |
// iteration completion. |
- static void IterateDirtyRegions( |
+ static void IteratePointers( |
PagedSpace* space, |
- DirtyRegionCallback visit_dirty_region, |
+ PointerRegionCallback visit_pointer_region, |
ObjectSlotCallback callback, |
ExpectedPageWatermarkState expected_page_watermark_state); |
- // Interpret marks as a bitvector of dirty marks for regions of size |
- // Page::kRegionSize aligned by Page::kRegionAlignmentMask and covering |
- // memory interval from start to top. For each dirty region call a |
- // visit_dirty_region callback. Return updated bitvector of dirty marks. |
- static uint32_t IterateDirtyRegions(uint32_t marks, |
- Address start, |
- Address end, |
- DirtyRegionCallback visit_dirty_region, |
- ObjectSlotCallback callback); |
- |
// Iterate pointers to from semispace of new space found in memory interval |
// from start to end. |
- // Update dirty marks for page containing start address. |
static void IterateAndMarkPointersToFromSpace(Address start, |
Address end, |
ObjectSlotCallback callback); |
// Iterate pointers to new space found in memory interval from start to end. |
- // Return true if pointers to new space was found. |
- static bool IteratePointersInDirtyRegion(Address start, |
- Address end, |
- ObjectSlotCallback callback); |
+ static void IteratePointersToNewSpace(Address start, |
+ Address end, |
+ ObjectSlotCallback callback); |
// Iterate pointers to new space found in memory interval from start to end. |
// This interval is considered to belong to the map space. |
- // Return true if pointers to new space was found. |
- static bool IteratePointersInDirtyMapsRegion(Address start, |
- Address end, |
- ObjectSlotCallback callback); |
+ static void IteratePointersFromMapsToNewSpace(Address start, |
+ Address end, |
+ ObjectSlotCallback callback); |
// Returns whether the object resides in new space. |
@@ -1518,32 +1505,7 @@ |
} |
} |
}; |
- |
- |
-#ifdef ENABLE_CARDMARKING_WRITE_BARRIER |
-// Visitor class to verify interior pointers in spaces that use region marks |
-// to keep track of intergenerational references. |
-// As VerifyPointersVisitor but also checks that dirty marks are set |
-// for regions covering intergenerational references. |
-class VerifyPointersAndDirtyRegionsVisitor: public ObjectVisitor { |
- public: |
- void VisitPointers(Object** start, Object** end) { |
- for (Object** current = start; current < end; current++) { |
- if ((*current)->IsHeapObject()) { |
- HeapObject* object = HeapObject::cast(*current); |
- ASSERT(Heap::Contains(object)); |
- ASSERT(object->map()->IsMap()); |
- if (Heap::InNewSpace(object)) { |
- ASSERT(Heap::InToSpace(object)); |
- Address addr = reinterpret_cast<Address>(current); |
- ASSERT(Page::FromAddress(addr)->IsRegionDirty(addr)); |
- } |
- } |
- } |
- } |
-}; |
#endif |
-#endif |
// Space iterator for iterating over all spaces of the heap. |