| Index: src/runtime.cc
|
| ===================================================================
|
| --- src/runtime.cc (revision 3737)
|
| +++ src/runtime.cc (working copy)
|
| @@ -107,25 +107,23 @@
|
| // Deep copy local properties.
|
| if (copy->HasFastProperties()) {
|
| FixedArray* properties = copy->properties();
|
| - WriteBarrierMode mode = properties->GetWriteBarrierMode();
|
| for (int i = 0; i < properties->length(); i++) {
|
| Object* value = properties->get(i);
|
| if (value->IsJSObject()) {
|
| - JSObject* jsObject = JSObject::cast(value);
|
| - result = DeepCopyBoilerplate(jsObject);
|
| + JSObject* js_object = JSObject::cast(value);
|
| + result = DeepCopyBoilerplate(js_object);
|
| if (result->IsFailure()) return result;
|
| - properties->set(i, result, mode);
|
| + properties->set(i, result);
|
| }
|
| }
|
| - mode = copy->GetWriteBarrierMode();
|
| int nof = copy->map()->inobject_properties();
|
| for (int i = 0; i < nof; i++) {
|
| Object* value = copy->InObjectPropertyAt(i);
|
| if (value->IsJSObject()) {
|
| - JSObject* jsObject = JSObject::cast(value);
|
| - result = DeepCopyBoilerplate(jsObject);
|
| + JSObject* js_object = JSObject::cast(value);
|
| + result = DeepCopyBoilerplate(js_object);
|
| if (result->IsFailure()) return result;
|
| - copy->InObjectPropertyAtPut(i, result, mode);
|
| + copy->InObjectPropertyAtPut(i, result);
|
| }
|
| }
|
| } else {
|
| @@ -135,20 +133,20 @@
|
| copy->GetLocalPropertyNames(names, 0);
|
| for (int i = 0; i < names->length(); i++) {
|
| ASSERT(names->get(i)->IsString());
|
| - String* keyString = String::cast(names->get(i));
|
| + String* key_string = String::cast(names->get(i));
|
| PropertyAttributes attributes =
|
| - copy->GetLocalPropertyAttribute(keyString);
|
| + copy->GetLocalPropertyAttribute(key_string);
|
| // Only deep copy fields from the object literal expression.
|
| // In particular, don't try to copy the length attribute of
|
| // an array.
|
| if (attributes != NONE) continue;
|
| - Object* value = copy->GetProperty(keyString, &attributes);
|
| + Object* value = copy->GetProperty(key_string, &attributes);
|
| ASSERT(!value->IsFailure());
|
| if (value->IsJSObject()) {
|
| - JSObject* jsObject = JSObject::cast(value);
|
| - result = DeepCopyBoilerplate(jsObject);
|
| + JSObject* js_object = JSObject::cast(value);
|
| + result = DeepCopyBoilerplate(js_object);
|
| if (result->IsFailure()) return result;
|
| - result = copy->SetProperty(keyString, result, NONE);
|
| + result = copy->SetProperty(key_string, result, NONE);
|
| if (result->IsFailure()) return result;
|
| }
|
| }
|
| @@ -160,14 +158,13 @@
|
| switch (copy->GetElementsKind()) {
|
| case JSObject::FAST_ELEMENTS: {
|
| FixedArray* elements = FixedArray::cast(copy->elements());
|
| - WriteBarrierMode mode = elements->GetWriteBarrierMode();
|
| for (int i = 0; i < elements->length(); i++) {
|
| Object* value = elements->get(i);
|
| if (value->IsJSObject()) {
|
| - JSObject* jsObject = JSObject::cast(value);
|
| - result = DeepCopyBoilerplate(jsObject);
|
| + JSObject* js_object = JSObject::cast(value);
|
| + result = DeepCopyBoilerplate(js_object);
|
| if (result->IsFailure()) return result;
|
| - elements->set(i, result, mode);
|
| + elements->set(i, result);
|
| }
|
| }
|
| break;
|
| @@ -180,8 +177,8 @@
|
| if (element_dictionary->IsKey(k)) {
|
| Object* value = element_dictionary->ValueAt(i);
|
| if (value->IsJSObject()) {
|
| - JSObject* jsObject = JSObject::cast(value);
|
| - result = DeepCopyBoilerplate(jsObject);
|
| + JSObject* js_object = JSObject::cast(value);
|
| + result = DeepCopyBoilerplate(js_object);
|
| if (result->IsFailure()) return result;
|
| element_dictionary->ValueAtPut(i, result);
|
| }
|
| @@ -1437,6 +1434,8 @@
|
| literals->set(JSFunction::kLiteralGlobalContextIndex,
|
| context->global_context());
|
| }
|
| + // It's okay to skip the write barrier here because the literals
|
| + // are guaranteed to be in old space.
|
| target->set_literals(*literals, SKIP_WRITE_BARRIER);
|
| }
|
|
|
| @@ -4715,7 +4714,9 @@
|
| if (obj->IsFailure()) return obj;
|
| FixedArray* array = FixedArray::cast(obj);
|
| ASSERT(array->length() == length);
|
| - WriteBarrierMode mode = array->GetWriteBarrierMode();
|
| +
|
| + AssertNoAllocation no_gc;
|
| + WriteBarrierMode mode = array->GetWriteBarrierMode(no_gc);
|
| for (int i = 0; i < length; i++) {
|
| array->set(i, frame->GetParameter(i), mode);
|
| }
|
| @@ -4740,10 +4741,13 @@
|
| // Allocate the fixed array.
|
| Object* obj = Heap::AllocateRawFixedArray(length);
|
| if (obj->IsFailure()) return obj;
|
| +
|
| + AssertNoAllocation no_gc;
|
| reinterpret_cast<Array*>(obj)->set_map(Heap::fixed_array_map());
|
| FixedArray* array = FixedArray::cast(obj);
|
| array->set_length(length);
|
| - WriteBarrierMode mode = array->GetWriteBarrierMode();
|
| +
|
| + WriteBarrierMode mode = array->GetWriteBarrierMode(no_gc);
|
| for (int i = 0; i < length; i++) {
|
| array->set(i, *--parameters, mode);
|
| }
|
| @@ -6032,7 +6036,7 @@
|
| to->SetContent(FixedArray::cast(from->elements()));
|
| to->set_length(from->length());
|
| from->SetContent(Heap::empty_fixed_array());
|
| - from->set_length(0);
|
| + from->set_length(Smi::FromInt(0));
|
| return to;
|
| }
|
|
|
| @@ -6075,9 +6079,7 @@
|
| } else {
|
| Handle<FixedArray> single_interval = Factory::NewFixedArray(2);
|
| // -1 means start of array.
|
| - single_interval->set(0,
|
| - Smi::FromInt(-1),
|
| - SKIP_WRITE_BARRIER);
|
| + single_interval->set(0, Smi::FromInt(-1));
|
| uint32_t actual_length = static_cast<uint32_t>(array->elements()->length());
|
| uint32_t min_length = actual_length < length ? actual_length : length;
|
| Handle<Object> length_object =
|
| @@ -7450,7 +7452,9 @@
|
| const int length = frame->GetProvidedParametersCount();
|
| Handle<JSObject> arguments = Factory::NewArgumentsObject(function, length);
|
| Handle<FixedArray> array = Factory::NewFixedArray(length);
|
| - WriteBarrierMode mode = array->GetWriteBarrierMode();
|
| +
|
| + AssertNoAllocation no_gc;
|
| + WriteBarrierMode mode = array->GetWriteBarrierMode(no_gc);
|
| for (int i = 0; i < length; i++) {
|
| array->set(i, frame->GetParameter(i), mode);
|
| }
|
| @@ -8032,7 +8036,7 @@
|
| if (cursor + 2 < elements->length()) {
|
| elements->set(cursor++, recv);
|
| elements->set(cursor++, fun);
|
| - elements->set(cursor++, offset, SKIP_WRITE_BARRIER);
|
| + elements->set(cursor++, offset);
|
| } else {
|
| HandleScope scope;
|
| Handle<Object> recv_handle(recv);
|
| @@ -8045,8 +8049,7 @@
|
| iter.Advance();
|
| }
|
|
|
| - result->set_length(Smi::FromInt(cursor), SKIP_WRITE_BARRIER);
|
| -
|
| + result->set_length(Smi::FromInt(cursor));
|
| return *result;
|
| }
|
|
|
|
|