Revision: 10451
Author: [email protected]
Date: Thu Jan 19 10:50:01 2012
Log: Fix missing write-barrier for prototype transitions.
[email protected]
Review URL: https://chromiumcodereview.appspot.com/9150041
http://code.google.com/p/v8/source/detail?r=10451
Modified:
/branches/bleeding_edge/src/mark-compact.cc
=======================================
--- /branches/bleeding_edge/src/mark-compact.cc Thu Jan 19 05:38:37 2012
+++ /branches/bleeding_edge/src/mark-compact.cc Thu Jan 19 10:50:01 2012
@@ -2304,18 +2304,24 @@
Object* prototype = prototype_transitions->get(proto_offset + i *
step);
Object* cached_map = prototype_transitions->get(map_offset + i *
step);
if (IsMarked(prototype) && IsMarked(cached_map)) {
+ int proto_index = proto_offset + new_number_of_transitions * step;
+ int map_index = map_offset + new_number_of_transitions * step;
if (new_number_of_transitions != i) {
prototype_transitions->set_unchecked(
heap_,
- proto_offset + new_number_of_transitions * step,
+ proto_index,
prototype,
UPDATE_WRITE_BARRIER);
prototype_transitions->set_unchecked(
heap_,
- map_offset + new_number_of_transitions * step,
+ map_index,
cached_map,
SKIP_WRITE_BARRIER);
}
+ Object** slot =
+ HeapObject::RawField(prototype_transitions,
+
FixedArray::OffsetOfElementAt(proto_index));
+ RecordSlot(slot, slot, prototype);
new_number_of_transitions++;
}
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev