Revision: 9490
Author:   [email protected]
Date:     Fri Sep 30 01:45:28 2011
Log: Adjust assertions in UpdateSlot to match UpdatePointer in PointersUpdatingVisitor.

[email protected]
BUG=v8:1740

Review URL: http://codereview.chromium.org/8081001
http://code.google.com/p/v8/source/detail?r=9490

Modified:
 /branches/bleeding_edge/src/mark-compact.cc

=======================================
--- /branches/bleeding_edge/src/mark-compact.cc Thu Sep 29 06:51:47 2011
+++ /branches/bleeding_edge/src/mark-compact.cc Fri Sep 30 01:45:28 2011
@@ -2467,21 +2467,29 @@
     rinfo->set_call_address(Code::cast(target)->instruction_start());
   }

- private:
-  inline void UpdatePointer(Object** p) {
-    if (!(*p)->IsHeapObject()) return;
-
-    HeapObject* obj = HeapObject::cast(*p);
-
-    MapWord map_word = obj->map_word();
+  static inline void UpdateSlot(Heap* heap, Object** slot) {
+    Object* obj = *slot;
+
+    if (!obj->IsHeapObject()) return;
+
+    HeapObject* heap_obj = HeapObject::cast(obj);
+
+    MapWord map_word = heap_obj->map_word();
     if (map_word.IsForwardingAddress()) {
-      ASSERT(heap_->InFromSpace(obj) ||
-             MarkCompactCollector::IsOnEvacuationCandidate(obj));
-      *p = obj->map_word().ToForwardingAddress();
-      ASSERT(!heap_->InFromSpace(*p) &&
-             !MarkCompactCollector::IsOnEvacuationCandidate(*p));
+      ASSERT(heap->InFromSpace(heap_obj) ||
+             MarkCompactCollector::IsOnEvacuationCandidate(heap_obj));
+      HeapObject* target = map_word.ToForwardingAddress();
+      *slot = target;
+      ASSERT(!heap->InFromSpace(target) &&
+             !MarkCompactCollector::IsOnEvacuationCandidate(target));
     }
   }
+
+ private:
+
+  inline void UpdatePointer(Object** p) {
+    UpdateSlot(heap_, p);
+  }

   Heap* heap_;
 };
@@ -2726,21 +2734,6 @@
 };


-static inline void UpdateSlot(Object** slot) {
-  Object* obj = *slot;
-  if (!obj->IsHeapObject()) return;
-
-  HeapObject* heap_obj = HeapObject::cast(obj);
-
-  MapWord map_word = heap_obj->map_word();
-  if (map_word.IsForwardingAddress()) {
-    ASSERT(MarkCompactCollector::IsOnEvacuationCandidate(*slot));
-    *slot = map_word.ToForwardingAddress();
-    ASSERT(!MarkCompactCollector::IsOnEvacuationCandidate(*slot));
-  }
-}
-
-
 static inline void UpdateSlot(ObjectVisitor* v,
                               SlotsBuffer::SlotType slot_type,
                               Address addr) {
@@ -3757,7 +3750,7 @@
   for (int slot_idx = 0; slot_idx < idx_; ++slot_idx) {
     ObjectSlot slot = slots_[slot_idx];
     if (!IsTypedSlot(slot)) {
-      UpdateSlot(slot);
+      PointersUpdatingVisitor::UpdateSlot(heap, slot);
     } else {
       ++slot_idx;
       ASSERT(slot_idx < idx_);
@@ -3776,7 +3769,7 @@
     ObjectSlot slot = slots_[slot_idx];
     if (!IsTypedSlot(slot)) {
       if (!IsOnInvalidatedCodeObject(reinterpret_cast<Address>(slot))) {
-        UpdateSlot(slot);
+        PointersUpdatingVisitor::UpdateSlot(heap, slot);
       }
     } else {
       ++slot_idx;

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to