Removed recording of Target Slot in transition arrays since they only contain maps.
authorverwaest@chromium.org <verwaest@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 27 Jul 2012 17:03:12 +0000 (17:03 +0000)
committerverwaest@chromium.org <verwaest@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 27 Jul 2012 17:03:12 +0000 (17:03 +0000)
Review URL: https://chromiumcodereview.appspot.com/10802048

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12215 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/objects.cc
src/transitions-inl.h
src/transitions.h

index 398213412cf36ce33be12fa4489d430660bb8696..46e691a73553117cd1e4f13c40563f42706266a7 100644 (file)
@@ -7218,6 +7218,7 @@ void Map::ClearNonLiveTransitions(Heap* heap) {
   if (!HasTransitionArray()) return;
 
   TransitionArray* t = transitions();
+  MarkCompactCollector* collector = heap->mark_compact_collector();
 
   int transition_index = 0;
 
@@ -7226,14 +7227,11 @@ void Map::ClearNonLiveTransitions(Heap* heap) {
     if (!ClearBackPointer(heap, t->GetTarget(i))) {
       if (i != transition_index) {
         String* key = t->GetKey(i);
-        Map* target = t->GetTarget(i);
         t->SetKey(transition_index, key);
-        t->SetTarget(transition_index, target);
-        MarkCompactCollector* collector = heap->mark_compact_collector();
         Object** key_slot = t->GetKeySlot(transition_index);
         collector->RecordSlot(key_slot, key_slot, key);
-        Object** target_slot = t->GetTargetSlot(transition_index);
-        collector->RecordSlot(target_slot, target_slot, target);
+        // Target slots do not need to be recorded since maps are not compacted.
+        t->SetTarget(transition_index, t->GetTarget(i));
       }
       transition_index++;
     }
index 24ff8c2af09e9ff23a8bb95f1234616d1aec0f3a..6716c717abdc323bb5a8b1d150af9181b1ddb539 100644 (file)
@@ -144,14 +144,6 @@ Map* TransitionArray::GetTarget(int transition_number) {
 }
 
 
-Object** TransitionArray::GetTargetSlot(int transition_number) {
-  ASSERT(transition_number < number_of_transitions());
-  return HeapObject::RawField(
-      reinterpret_cast<HeapObject*>(this),
-      OffsetOfElementAt(ToTargetIndex(transition_number)));
-}
-
-
 void TransitionArray::SetTarget(int transition_number, Map* value) {
   ASSERT(transition_number < number_of_transitions());
   set(ToTargetIndex(transition_number), value);
index bc661acf526657ee0483e619d6789be1cf71dc96..57f32535a5a01ebd938ca80513e4ddfe86fa3ea2 100644 (file)
@@ -53,7 +53,6 @@ class TransitionArray: public FixedArray {
 
   inline Map* GetTarget(int transition_number);
   inline void SetTarget(int transition_number, Map* target);
-  inline Object** GetTargetSlot(int transition_number);
 
   inline PropertyDetails GetTargetDetails(int transition_number);