| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index d64695bca03a8ba3d6d7fbe518a1d7da613a957f..27fff2e5c77391d4d4ed9633e9061ea8ac7c802d 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -330,13 +330,18 @@ static Handle<Object> CreateObjectLiteralBoilerplate(
|
| Handle<Object> result;
|
| uint32_t element_index = 0;
|
| if (key->IsSymbol()) {
|
| - // If key is a symbol it is not an array element.
|
| - Handle<String> name(String::cast(*key));
|
| - ASSERT(!name->AsArrayIndex(&element_index));
|
| - result = SetProperty(boilerplate, name, value, NONE);
|
| + if (Handle<String>::cast(key)->AsArrayIndex(&element_index)) {
|
| + // Array index as string (uint32).
|
| + result = SetOwnElement(boilerplate, element_index, value);
|
| + } else {
|
| + Handle<String> name(String::cast(*key));
|
| + ASSERT(!name->AsArrayIndex(&element_index));
|
| + result = SetLocalPropertyIgnoreAttributes(boilerplate, name,
|
| + value, NONE);
|
| + }
|
| } else if (key->ToArrayIndex(&element_index)) {
|
| // Array index (uint32).
|
| - result = SetElement(boilerplate, element_index, value);
|
| + result = SetOwnElement(boilerplate, element_index, value);
|
| } else {
|
| // Non-uint32 number.
|
| ASSERT(key->IsNumber());
|
| @@ -345,7 +350,8 @@ static Handle<Object> CreateObjectLiteralBoilerplate(
|
| Vector<char> buffer(arr, ARRAY_SIZE(arr));
|
| const char* str = DoubleToCString(num, buffer);
|
| Handle<String> name = Factory::NewStringFromAscii(CStrVector(str));
|
| - result = SetProperty(boilerplate, name, value, NONE);
|
| + result = SetLocalPropertyIgnoreAttributes(boilerplate, name,
|
| + value, NONE);
|
| }
|
| // If setting the property on the boilerplate throws an
|
| // exception, the exception is converted to an empty handle in
|
| @@ -984,7 +990,7 @@ static MaybeObject* Runtime_DeclareGlobals(Arguments args) {
|
| // of callbacks in the prototype chain (this rules out using
|
| // SetProperty). Also, we must use the handle-based version to
|
| // avoid GC issues.
|
| - IgnoreAttributesAndSetLocalProperty(global, name, value, attributes);
|
| + SetLocalPropertyIgnoreAttributes(global, name, value, attributes);
|
| }
|
| }
|
|
|
| @@ -1099,7 +1105,7 @@ static MaybeObject* Runtime_InitializeVarGlobal(Arguments args) {
|
| // to assign to the property. When adding the property we take
|
| // special precautions to always add it as a local property even in
|
| // case of callbacks in the prototype chain (this rules out using
|
| - // SetProperty). We have IgnoreAttributesAndSetLocalProperty for
|
| + // SetProperty). We have SetLocalPropertyIgnoreAttributes for
|
| // this.
|
| // Note that objects can have hidden prototypes, so we need to traverse
|
| // the whole chain of hidden prototypes to do a 'local' lookup.
|
| @@ -1162,9 +1168,9 @@ static MaybeObject* Runtime_InitializeVarGlobal(Arguments args) {
|
|
|
| global = Top::context()->global();
|
| if (assign) {
|
| - return global->IgnoreAttributesAndSetLocalProperty(*name,
|
| - args[1],
|
| - attributes);
|
| + return global->SetLocalPropertyIgnoreAttributes(*name,
|
| + args[1],
|
| + attributes);
|
| }
|
| return Heap::undefined_value();
|
| }
|
| @@ -1190,13 +1196,13 @@ static MaybeObject* Runtime_InitializeConstGlobal(Arguments args) {
|
| // there, we add the property and take special precautions to always
|
| // add it as a local property even in case of callbacks in the
|
| // prototype chain (this rules out using SetProperty).
|
| - // We use IgnoreAttributesAndSetLocalProperty instead
|
| + // We use SetLocalPropertyIgnoreAttributes instead
|
| LookupResult lookup;
|
| global->LocalLookup(*name, &lookup);
|
| if (!lookup.IsProperty()) {
|
| - return global->IgnoreAttributesAndSetLocalProperty(*name,
|
| - *value,
|
| - attributes);
|
| + return global->SetLocalPropertyIgnoreAttributes(*name,
|
| + *value,
|
| + attributes);
|
| }
|
|
|
| // Determine if this is a redeclaration of something not
|
| @@ -1467,27 +1473,27 @@ static MaybeObject* Runtime_RegExpInitializeObject(Arguments args) {
|
| PropertyAttributes writable =
|
| static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE);
|
| MaybeObject* result;
|
| - result = regexp->IgnoreAttributesAndSetLocalProperty(Heap::source_symbol(),
|
| - source,
|
| - final);
|
| + result = regexp->SetLocalPropertyIgnoreAttributes(Heap::source_symbol(),
|
| + source,
|
| + final);
|
| ASSERT(!result->IsFailure());
|
| - result = regexp->IgnoreAttributesAndSetLocalProperty(Heap::global_symbol(),
|
| - global,
|
| - final);
|
| + result = regexp->SetLocalPropertyIgnoreAttributes(Heap::global_symbol(),
|
| + global,
|
| + final);
|
| ASSERT(!result->IsFailure());
|
| result =
|
| - regexp->IgnoreAttributesAndSetLocalProperty(Heap::ignore_case_symbol(),
|
| - ignoreCase,
|
| - final);
|
| + regexp->SetLocalPropertyIgnoreAttributes(Heap::ignore_case_symbol(),
|
| + ignoreCase,
|
| + final);
|
| ASSERT(!result->IsFailure());
|
| - result = regexp->IgnoreAttributesAndSetLocalProperty(Heap::multiline_symbol(),
|
| - multiline,
|
| - final);
|
| + result = regexp->SetLocalPropertyIgnoreAttributes(Heap::multiline_symbol(),
|
| + multiline,
|
| + final);
|
| ASSERT(!result->IsFailure());
|
| result =
|
| - regexp->IgnoreAttributesAndSetLocalProperty(Heap::last_index_symbol(),
|
| - Smi::FromInt(0),
|
| - writable);
|
| + regexp->SetLocalPropertyIgnoreAttributes(Heap::last_index_symbol(),
|
| + Smi::FromInt(0),
|
| + writable);
|
| ASSERT(!result->IsFailure());
|
| USE(result);
|
| return regexp;
|
| @@ -3571,9 +3577,9 @@ static MaybeObject* Runtime_DefineOrRedefineDataProperty(Arguments args) {
|
| NormalizeProperties(js_object, CLEAR_INOBJECT_PROPERTIES, 0);
|
| // Use IgnoreAttributes version since a readonly property may be
|
| // overridden and SetProperty does not allow this.
|
| - return js_object->IgnoreAttributesAndSetLocalProperty(*name,
|
| - *obj_value,
|
| - attr);
|
| + return js_object->SetLocalPropertyIgnoreAttributes(*name,
|
| + *obj_value,
|
| + attr);
|
| }
|
|
|
| return Runtime::SetObjectProperty(js_object, name, obj_value, attr);
|
| @@ -3674,9 +3680,9 @@ MaybeObject* Runtime::ForceSetObjectProperty(Handle<JSObject> js_object,
|
| } else {
|
| Handle<String> key_string = Handle<String>::cast(key);
|
| key_string->TryFlatten();
|
| - return js_object->IgnoreAttributesAndSetLocalProperty(*key_string,
|
| - *value,
|
| - attr);
|
| + return js_object->SetLocalPropertyIgnoreAttributes(*key_string,
|
| + *value,
|
| + attr);
|
| }
|
| }
|
|
|
| @@ -3689,7 +3695,7 @@ MaybeObject* Runtime::ForceSetObjectProperty(Handle<JSObject> js_object,
|
| if (name->AsArrayIndex(&index)) {
|
| return js_object->SetElement(index, *value);
|
| } else {
|
| - return js_object->IgnoreAttributesAndSetLocalProperty(*name, *value, attr);
|
| + return js_object->SetLocalPropertyIgnoreAttributes(*name, *value, attr);
|
| }
|
| }
|
|
|
| @@ -3771,7 +3777,7 @@ static MaybeObject* Runtime_IgnoreAttributesAndSetProperty(Arguments args) {
|
| }
|
|
|
| return object->
|
| - IgnoreAttributesAndSetLocalProperty(name, args[2], attributes);
|
| + SetLocalPropertyIgnoreAttributes(name, args[2], attributes);
|
| }
|
|
|
|
|
|
|