| Index: src/objects.cc
|
| ===================================================================
|
| --- src/objects.cc (revision 564)
|
| +++ src/objects.cc (working copy)
|
| @@ -2647,7 +2647,8 @@
|
| if (array->IsFailure()) return array;
|
| result->set(kContentArrayIndex, array);
|
| result->set(kEnumerationIndexIndex,
|
| - Smi::FromInt(PropertyDetails::kInitialIndex));
|
| + Smi::FromInt(PropertyDetails::kInitialIndex),
|
| + SKIP_WRITE_BARRIER);
|
| return result;
|
| }
|
|
|
| @@ -4451,7 +4452,7 @@
|
| uint32_t len = static_cast<uint32_t>(elems->length());
|
| for (uint32_t i = 0; i < len; i++) ASSERT(elems->get(i)->IsTheHole());
|
| #endif
|
| - FixedArray::WriteBarrierMode mode = elems->GetWriteBarrierMode();
|
| + WriteBarrierMode mode = elems->GetWriteBarrierMode();
|
| if (HasFastElements()) {
|
| FixedArray* old_elements = FixedArray::cast(elements());
|
| uint32_t old_length = static_cast<uint32_t>(old_elements->length());
|
| @@ -4500,7 +4501,7 @@
|
|
|
| Object* JSArray::Initialize(int capacity) {
|
| ASSERT(capacity >= 0);
|
| - set_length(Smi::FromInt(0));
|
| + set_length(Smi::FromInt(0), SKIP_WRITE_BARRIER);
|
| FixedArray* new_elements;
|
| if (capacity == 0) {
|
| new_elements = Heap::empty_fixed_array();
|
| @@ -4544,7 +4545,7 @@
|
| for (int i = value; i < old_length; i++) {
|
| FixedArray::cast(elements())->set_the_hole(i);
|
| }
|
| - JSArray::cast(this)->set_length(smi_length);
|
| + JSArray::cast(this)->set_length(smi_length, SKIP_WRITE_BARRIER);
|
| }
|
| return this;
|
| }
|
| @@ -4554,7 +4555,8 @@
|
| !ShouldConvertToSlowElements(new_capacity)) {
|
| Object* obj = Heap::AllocateFixedArrayWithHoles(new_capacity);
|
| if (obj->IsFailure()) return obj;
|
| - if (IsJSArray()) JSArray::cast(this)->set_length(smi_length);
|
| + if (IsJSArray()) JSArray::cast(this)->set_length(smi_length,
|
| + SKIP_WRITE_BARRIER);
|
| SetFastElements(FixedArray::cast(obj));
|
| return this;
|
| }
|
| @@ -4571,7 +4573,7 @@
|
| static_cast<uint32_t>(JSArray::cast(this)->length()->Number());
|
| element_dictionary()->RemoveNumberEntries(value, old_length);
|
| }
|
| - JSArray::cast(this)->set_length(smi_length);
|
| + JSArray::cast(this)->set_length(smi_length, SKIP_WRITE_BARRIER);
|
| }
|
| return this;
|
| }
|
| @@ -4592,7 +4594,8 @@
|
| Object* obj = Heap::AllocateFixedArray(1);
|
| if (obj->IsFailure()) return obj;
|
| FixedArray::cast(obj)->set(0, len);
|
| - if (IsJSArray()) JSArray::cast(this)->set_length(Smi::FromInt(1));
|
| + if (IsJSArray()) JSArray::cast(this)->set_length(Smi::FromInt(1),
|
| + SKIP_WRITE_BARRIER);
|
| set_elements(FixedArray::cast(obj));
|
| return this;
|
| }
|
| @@ -4793,7 +4796,8 @@
|
| CHECK(Array::IndexFromObject(JSArray::cast(this)->length(),
|
| &array_length));
|
| if (index >= array_length) {
|
| - JSArray::cast(this)->set_length(Smi::FromInt(index + 1));
|
| + JSArray::cast(this)->set_length(Smi::FromInt(index + 1),
|
| + SKIP_WRITE_BARRIER);
|
| }
|
| }
|
| return value;
|
| @@ -4809,7 +4813,8 @@
|
| Object* obj = Heap::AllocateFixedArrayWithHoles(new_capacity);
|
| if (obj->IsFailure()) return obj;
|
| SetFastElements(FixedArray::cast(obj));
|
| - if (IsJSArray()) JSArray::cast(this)->set_length(Smi::FromInt(index + 1));
|
| + if (IsJSArray()) JSArray::cast(this)->set_length(Smi::FromInt(index + 1),
|
| + SKIP_WRITE_BARRIER);
|
| FixedArray::cast(elements())->set(index, value);
|
| return value;
|
| }
|
| @@ -5091,7 +5096,7 @@
|
| pos++;
|
| }
|
| }
|
| - set_length(Smi::FromInt(pos));
|
| + set_length(Smi::FromInt(pos), SKIP_WRITE_BARRIER);
|
| for (int index = pos; index < len; index++) {
|
| elms->set_the_hole(index);
|
| }
|
| @@ -5107,7 +5112,7 @@
|
| Object* obj = Heap::AllocateFixedArray(length);
|
| if (obj->IsFailure()) return obj;
|
| dict->CopyValuesTo(FixedArray::cast(obj));
|
| - set_length(Smi::FromInt(length));
|
| + set_length(Smi::FromInt(length), SKIP_WRITE_BARRIER);
|
| set_elements(FixedArray::cast(obj));
|
| return this;
|
| }
|
| @@ -5115,7 +5120,7 @@
|
| // Make another dictionary with smaller indices.
|
| Object* obj = dict->RemoveHoles();
|
| if (obj->IsFailure()) return obj;
|
| - set_length(Smi::FromInt(length));
|
| + set_length(Smi::FromInt(length), SKIP_WRITE_BARRIER);
|
| set_elements(Dictionary::cast(obj));
|
| return this;
|
| }
|
| @@ -5443,9 +5448,7 @@
|
| for (int i = 0; i < length; i++) {
|
| if (!FixedArray::cast(elements())->get(i)->IsTheHole()) {
|
| if (storage) {
|
| - storage->set(counter,
|
| - Smi::FromInt(i),
|
| - FixedArray::SKIP_WRITE_BARRIER);
|
| + storage->set(counter, Smi::FromInt(i), SKIP_WRITE_BARRIER);
|
| }
|
| counter++;
|
| }
|
| @@ -5464,9 +5467,7 @@
|
| String* str = String::cast(val);
|
| if (storage) {
|
| for (int i = 0; i < str->length(); i++) {
|
| - storage->set(counter + i,
|
| - Smi::FromInt(i),
|
| - FixedArray::SKIP_WRITE_BARRIER);
|
| + storage->set(counter + i, Smi::FromInt(i), SKIP_WRITE_BARRIER);
|
| }
|
| }
|
| counter += str->length();
|
| @@ -5997,7 +5998,9 @@
|
| Object* obj = Heap::AllocateFixedArray(length);
|
| if (obj->IsFailure()) return obj;
|
| FixedArray* iteration_order = FixedArray::cast(obj);
|
| - for (int i = 0; i < length; i++) iteration_order->set(i, Smi::FromInt(i));
|
| + for (int i = 0; i < length; i++) {
|
| + iteration_order->set(i, Smi::FromInt(i), SKIP_WRITE_BARRIER);
|
| + }
|
|
|
| // Allocate array with enumeration order.
|
| obj = Heap::AllocateFixedArray(length);
|
| @@ -6009,7 +6012,9 @@
|
| int pos = 0;
|
| for (int i = 0; i < capacity; i++) {
|
| if (IsKey(KeyAt(i))) {
|
| - enumeration_order->set(pos++, Smi::FromInt(DetailsAt(i).index()));
|
| + enumeration_order->set(pos++,
|
| + Smi::FromInt(DetailsAt(i).index()),
|
| + SKIP_WRITE_BARRIER);
|
| }
|
| }
|
|
|
| @@ -6020,7 +6025,9 @@
|
| for (int i = 0; i < length; i++) {
|
| int index = Smi::cast(iteration_order->get(i))->value();
|
| int enum_index = PropertyDetails::kInitialIndex + i;
|
| - enumeration_order->set(index, Smi::FromInt(enum_index));
|
| + enumeration_order->set(index,
|
| + Smi::FromInt(enum_index),
|
| + SKIP_WRITE_BARRIER);
|
| }
|
|
|
| // Update the dictionary with new indices.
|
| @@ -6158,13 +6165,17 @@
|
| // Check if this index is high enough that we should require slow
|
| // elements.
|
| if (key > kRequiresSlowElementsLimit) {
|
| - set(kMaxNumberKeyIndex, Smi::FromInt(kRequiresSlowElementsMask));
|
| + set(kMaxNumberKeyIndex,
|
| + Smi::FromInt(kRequiresSlowElementsMask),
|
| + SKIP_WRITE_BARRIER);
|
| return;
|
| }
|
| // Update max key value.
|
| Object* max_index_object = get(kMaxNumberKeyIndex);
|
| if (!max_index_object->IsSmi() || max_number_key() < key) {
|
| - set(kMaxNumberKeyIndex, Smi::FromInt(key << kRequiresSlowElementsTagSize));
|
| + set(kMaxNumberKeyIndex,
|
| + Smi::FromInt(key << kRequiresSlowElementsTagSize),
|
| + SKIP_WRITE_BARRIER);
|
| }
|
| }
|
|
|
| @@ -6261,7 +6272,9 @@
|
| PropertyDetails details = DetailsAt(i);
|
| if (!details.IsDontEnum()) {
|
| storage->set(index, k);
|
| - sort_array->set(index, Smi::FromInt(details.index()));
|
| + sort_array->set(index,
|
| + Smi::FromInt(details.index()),
|
| + SKIP_WRITE_BARRIER);
|
| index++;
|
| }
|
| }
|
|
|