Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(759)

Unified Diff: src/mark-compact.cc

Issue 3301008: [Isolates] Add heap pointer to all maps and use map->heap() more. (Closed)
Patch Set: even more Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 759b9ae3c3d1d18d33574249deecea1e6dc51859..9ac438d832ce5ad750272f95b89a814fe842077a 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -370,9 +370,9 @@ class StaticMarkingVisitor : public StaticVisitorBase {
ASSERT(!obj->IsMarked());
#endif
Map* map = obj->map();
- HEAP->mark_compact_collector()->SetMark(obj);
+ map->heap()->mark_compact_collector()->SetMark(obj);
// Mark the map pointer and the body.
- HEAP->mark_compact_collector()->MarkObject(map);
+ map->heap()->mark_compact_collector()->MarkObject(map);
IterateBody(map, obj);
}
@@ -1613,7 +1613,7 @@ static void SweepNewSpace(Heap* heap, NewSpace* space) {
// Update pointers in old spaces.
heap->IterateDirtyRegions(heap->old_pointer_space(),
- &heap->IteratePointersInDirtyRegion,
+ &Heap::IteratePointersInDirtyRegion,
&UpdatePointerToNewGen,
heap->WATERMARK_SHOULD_BE_VALID);
@@ -2410,20 +2410,20 @@ void MarkCompactCollector::RelocateObjects() {
ASSERT(live_news_size == live_young_objects_size_);
// Flip from and to spaces
- HEAP->new_space()->Flip();
+ heap_->new_space()->Flip();
- HEAP->new_space()->MCCommitRelocationInfo();
+ heap_->new_space()->MCCommitRelocationInfo();
// Set age_mark to bottom in to space
- Address mark = HEAP->new_space()->bottom();
- HEAP->new_space()->set_age_mark(mark);
+ Address mark = heap_->new_space()->bottom();
+ heap_->new_space()->set_age_mark(mark);
PagedSpaces spaces;
for (PagedSpace* space = spaces.next(); space != NULL; space = spaces.next())
space->MCCommitRelocationInfo();
- HEAP->CheckNewSpaceExpansionCriteria();
- HEAP->IncrementYoungSurvivorsCounter(live_news_size);
+ heap_->CheckNewSpaceExpansionCriteria();
+ heap_->IncrementYoungSurvivorsCounter(live_news_size);
}
@@ -2490,8 +2490,8 @@ int MarkCompactCollector::RelocateOldNonCodeObject(HeapObject* obj,
PagedSpace* space) {
// Recover map pointer.
MapWord encoding = obj->map_word();
- Address map_addr = encoding.DecodeMapAddress(HEAP->map_space());
- ASSERT(HEAP->map_space()->Contains(map_addr));
+ Address map_addr = encoding.DecodeMapAddress(heap_->map_space());
+ ASSERT(heap_->map_space()->Contains(map_addr));
// Get forwarding address before resetting map pointer.
Address new_addr = GetForwardingAddressInOldSpace(obj);
@@ -2503,12 +2503,12 @@ int MarkCompactCollector::RelocateOldNonCodeObject(HeapObject* obj,
if (new_addr != old_addr) {
// Move contents.
- if (space == HEAP->old_data_space()) {
- HEAP->MoveBlock(new_addr, old_addr, obj_size);
+ if (space == heap_->old_data_space()) {
+ heap_->MoveBlock(new_addr, old_addr, obj_size);
} else {
- HEAP->MoveBlockToOldSpaceAndUpdateRegionMarks(new_addr,
- old_addr,
- obj_size);
+ heap_->MoveBlockToOldSpaceAndUpdateRegionMarks(new_addr,
+ old_addr,
+ obj_size);
}
}
@@ -2518,7 +2518,7 @@ int MarkCompactCollector::RelocateOldNonCodeObject(HeapObject* obj,
if (copied_to->IsJSFunction()) {
PROFILE(FunctionMoveEvent(old_addr, new_addr));
}
- HEAP_PROFILE(ObjectMoveEvent(old_addr, new_addr));
+ HEAP_PROFILE(heap_, ObjectMoveEvent(old_addr, new_addr));
return obj_size;
}
@@ -2548,20 +2548,21 @@ int MarkCompactCollector::RelocateCellObject(HeapObject* obj) {
int MarkCompactCollector::RelocateCodeObject(HeapObject* obj) {
// Recover map pointer.
MapWord encoding = obj->map_word();
- Address map_addr = encoding.DecodeMapAddress(HEAP->map_space());
- ASSERT(HEAP->map_space()->Contains(HeapObject::FromAddress(map_addr)));
+ Heap* heap = HEAP;
+ Address map_addr = encoding.DecodeMapAddress(heap->map_space());
+ ASSERT(heap->map_space()->Contains(HeapObject::FromAddress(map_addr)));
// Get forwarding address before resetting map pointer
Address new_addr = GetForwardingAddressInOldSpace(obj);
// Reset the map pointer.
- int obj_size = RestoreMap(obj, HEAP->code_space(), new_addr, map_addr);
+ int obj_size = RestoreMap(obj, heap->code_space(), new_addr, map_addr);
Address old_addr = obj->address();
if (new_addr != old_addr) {
// Move contents.
- HEAP->MoveBlock(new_addr, old_addr, obj_size);
+ heap->MoveBlock(new_addr, old_addr, obj_size);
}
HeapObject* copied_to = HeapObject::FromAddress(new_addr);
@@ -2571,7 +2572,7 @@ int MarkCompactCollector::RelocateCodeObject(HeapObject* obj) {
// Notify the logger that compiled code has moved.
PROFILE(CodeMoveEvent(old_addr, new_addr));
}
- HEAP_PROFILE(ObjectMoveEvent(old_addr, new_addr));
+ HEAP_PROFILE(heap, ObjectMoveEvent(old_addr, new_addr));
return obj_size;
}
@@ -2582,26 +2583,27 @@ int MarkCompactCollector::RelocateNewObject(HeapObject* obj) {
// Get forwarding address
Address old_addr = obj->address();
- int offset = HEAP->new_space()->ToSpaceOffsetForAddress(old_addr);
+ Heap* heap = HEAP;
+ int offset = heap->new_space()->ToSpaceOffsetForAddress(old_addr);
Address new_addr =
- Memory::Address_at(HEAP->new_space()->FromSpaceLow() + offset);
+ Memory::Address_at(heap->new_space()->FromSpaceLow() + offset);
#ifdef DEBUG
- if (HEAP->new_space()->FromSpaceContains(new_addr)) {
- ASSERT(HEAP->new_space()->FromSpaceOffsetForAddress(new_addr) <=
- HEAP->new_space()->ToSpaceOffsetForAddress(old_addr));
+ if (heap->new_space()->FromSpaceContains(new_addr)) {
+ ASSERT(heap->new_space()->FromSpaceOffsetForAddress(new_addr) <=
+ heap->new_space()->ToSpaceOffsetForAddress(old_addr));
} else {
- ASSERT(HEAP->TargetSpace(obj) == HEAP->old_pointer_space() ||
- HEAP->TargetSpace(obj) == HEAP->old_data_space());
+ ASSERT(heap->TargetSpace(obj) == heap->old_pointer_space() ||
+ heap->TargetSpace(obj) == heap->old_data_space());
}
#endif
// New and old addresses cannot overlap.
- if (HEAP->InNewSpace(HeapObject::FromAddress(new_addr))) {
- HEAP->CopyBlock(new_addr, old_addr, obj_size);
+ if (heap->InNewSpace(HeapObject::FromAddress(new_addr))) {
+ heap->CopyBlock(new_addr, old_addr, obj_size);
} else {
- HEAP->CopyBlockToOldSpaceAndUpdateRegionMarks(new_addr,
+ heap->CopyBlockToOldSpaceAndUpdateRegionMarks(new_addr,
old_addr,
obj_size);
}
@@ -2616,7 +2618,7 @@ int MarkCompactCollector::RelocateNewObject(HeapObject* obj) {
if (copied_to->IsJSFunction()) {
PROFILE(FunctionMoveEvent(old_addr, new_addr));
}
- HEAP_PROFILE(ObjectMoveEvent(old_addr, new_addr));
+ HEAP_PROFILE(heap, ObjectMoveEvent(old_addr, new_addr));
return obj_size;
}
« src/heap-profiler.h ('K') | « src/heap-profiler.cc ('k') | src/objects-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698