Index: src/incremental-marking.cc |
diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc |
index 94afffa733503ac28a9a7c838c0d13963bf9b7ab..5b58c9d7877bb8d211da7a4375fd0d1569b55c79 100644 |
--- a/src/incremental-marking.cc |
+++ b/src/incremental-marking.cc |
@@ -1,4 +1,4 @@ |
-// Copyright 2012 the V8 project authors. All rights reserved. |
+// Copyright 2011 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -42,7 +42,6 @@ IncrementalMarking::IncrementalMarking(Heap* heap) |
state_(STOPPED), |
marking_deque_memory_(NULL), |
marking_deque_memory_committed_(false), |
- marker_(this, heap->mark_compact_collector()), |
steps_count_(0), |
steps_took_(0), |
longest_step_(0.0), |
@@ -664,22 +663,6 @@ void IncrementalMarking::Hurry() { |
} else if (map == global_context_map) { |
// Global contexts have weak fields. |
VisitGlobalContext(Context::cast(obj), &marking_visitor); |
- } else if (map->instance_type() == MAP_TYPE) { |
- Map* map = Map::cast(obj); |
- heap_->ClearCacheOnMap(map); |
- |
- // When map collection is enabled we have to mark through map's |
- // transitions and back pointers in a special way to make these links |
- // weak. Only maps for subclasses of JSReceiver can have transitions. |
- STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
- if (FLAG_collect_maps && |
- map->instance_type() >= FIRST_JS_RECEIVER_TYPE) { |
- marker_.MarkMapContents(map); |
- } else { |
- marking_visitor.VisitPointers( |
- HeapObject::RawField(map, Map::kPointerFieldsBeginOffset), |
- HeapObject::RawField(map, Map::kPointerFieldsEndOffset)); |
- } |
} else { |
obj->Iterate(&marking_visitor); |
} |
@@ -824,6 +807,12 @@ void IncrementalMarking::Step(intptr_t allocated_bytes, |
Map* map = obj->map(); |
if (map == filler_map) continue; |
+ if (obj->IsMap()) { |
+ Map* map = Map::cast(obj); |
+ heap_->ClearCacheOnMap(map); |
+ } |
+ |
+ |
int size = obj->SizeFromMap(map); |
bytes_to_process -= size; |
MarkBit map_mark_bit = Marking::MarkBitFrom(map); |
@@ -841,22 +830,6 @@ void IncrementalMarking::Step(intptr_t allocated_bytes, |
MarkObjectGreyDoNotEnqueue(ctx->normalized_map_cache()); |
VisitGlobalContext(ctx, &marking_visitor); |
- } else if (map->instance_type() == MAP_TYPE) { |
- Map* map = Map::cast(obj); |
- heap_->ClearCacheOnMap(map); |
- |
- // When map collection is enabled we have to mark through map's |
- // transitions and back pointers in a special way to make these links |
- // weak. Only maps for subclasses of JSReceiver can have transitions. |
- STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE); |
- if (FLAG_collect_maps && |
- map->instance_type() >= FIRST_JS_RECEIVER_TYPE) { |
- marker_.MarkMapContents(map); |
- } else { |
- marking_visitor.VisitPointers( |
- HeapObject::RawField(map, Map::kPointerFieldsBeginOffset), |
- HeapObject::RawField(map, Map::kPointerFieldsEndOffset)); |
- } |
} else if (map->instance_type() == JS_FUNCTION_TYPE) { |
marking_visitor.VisitPointers( |
HeapObject::RawField(obj, JSFunction::kPropertiesOffset), |