| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index c5b184314fbc3994d6eafca4b95fbf533dd5ca7e..abd018770bbcaf37dbf552ea06ebfa6d7cc92f13 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -1869,15 +1869,9 @@ void JSObject::AddSlowProperty(Handle<JSObject> object,
|
|
|
|
|
| MaybeHandle<Object> JSObject::AddPropertyInternal(
|
| - Handle<JSObject> object,
|
| - Handle<Name> name,
|
| - Handle<Object> value,
|
| - PropertyAttributes attributes,
|
| - StrictMode strict_mode,
|
| - JSReceiver::StoreFromKeyed store_mode,
|
| - ExtensibilityCheck extensibility_check,
|
| - StoreMode mode,
|
| - TransitionFlag transition_flag) {
|
| + Handle<JSObject> object, Handle<Name> name, Handle<Object> value,
|
| + PropertyAttributes attributes, JSReceiver::StoreFromKeyed store_mode,
|
| + ExtensibilityCheck extensibility_check, TransitionFlag transition_flag) {
|
| ASSERT(!object->IsJSGlobalProxy());
|
| Isolate* isolate = object->GetIsolate();
|
|
|
| @@ -1888,14 +1882,10 @@ MaybeHandle<Object> JSObject::AddPropertyInternal(
|
|
|
| if (extensibility_check == PERFORM_EXTENSIBILITY_CHECK &&
|
| !object->map()->is_extensible()) {
|
| - if (strict_mode == SLOPPY) {
|
| - return value;
|
| - } else {
|
| - Handle<Object> args[1] = { name };
|
| - Handle<Object> error = isolate->factory()->NewTypeError(
|
| - "object_not_extensible", HandleVector(args, ARRAY_SIZE(args)));
|
| - return isolate->Throw<Object>(error);
|
| - }
|
| + Handle<Object> args[1] = {name};
|
| + Handle<Object> error = isolate->factory()->NewTypeError(
|
| + "object_not_extensible", HandleVector(args, ARRAY_SIZE(args)));
|
| + return isolate->Throw<Object>(error);
|
| }
|
|
|
| if (object->HasFastProperties()) {
|
| @@ -2259,11 +2249,10 @@ void JSObject::MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map) {
|
| void JSObject::GeneralizeFieldRepresentation(Handle<JSObject> object,
|
| int modify_index,
|
| Representation new_representation,
|
| - Handle<HeapType> new_field_type,
|
| - StoreMode store_mode) {
|
| + Handle<HeapType> new_field_type) {
|
| Handle<Map> new_map = Map::GeneralizeRepresentation(
|
| - handle(object->map()), modify_index, new_representation,
|
| - new_field_type, store_mode);
|
| + handle(object->map()), modify_index, new_representation, new_field_type,
|
| + FORCE_FIELD);
|
| MigrateToMap(object, new_map);
|
| }
|
|
|
| @@ -3992,9 +3981,9 @@ MaybeHandle<Object> JSObject::SetPropertyUsingTransition(
|
| // fast copy of the map. If we get a fast copy of the map, all field
|
| // representations will be tagged since the transition is omitted.
|
| return JSObject::AddPropertyInternal(
|
| - object, name, value, attributes, SLOPPY,
|
| + object, name, value, attributes,
|
| JSReceiver::CERTAINLY_NOT_STORE_FROM_KEYED,
|
| - JSReceiver::OMIT_EXTENSIBILITY_CHECK, FORCE_FIELD, OMIT_TRANSITION);
|
| + JSReceiver::OMIT_EXTENSIBILITY_CHECK, OMIT_TRANSITION);
|
| }
|
|
|
| // Keep the target CONSTANT if the same value is stored.
|
| @@ -4051,8 +4040,7 @@ void JSObject::SetPropertyToField(LookupResult* lookup, Handle<Object> value) {
|
| lookup->isolate(), field_representation);
|
| JSObject::GeneralizeFieldRepresentation(handle(lookup->holder()),
|
| lookup->GetDescriptorIndex(),
|
| - field_representation, field_type,
|
| - FORCE_FIELD);
|
| + field_representation, field_type);
|
| }
|
| lookup->holder()->WriteToField(lookup->GetDescriptorIndex(), *value);
|
| }
|
| @@ -4074,9 +4062,9 @@ void JSObject::ConvertAndSetOwnProperty(LookupResult* lookup,
|
|
|
| int descriptor_index = lookup->GetDescriptorIndex();
|
| if (lookup->GetAttributes() == attributes) {
|
| - JSObject::GeneralizeFieldRepresentation(
|
| - object, descriptor_index, Representation::Tagged(),
|
| - HeapType::Any(lookup->isolate()), FORCE_FIELD);
|
| + JSObject::GeneralizeFieldRepresentation(object, descriptor_index,
|
| + Representation::Tagged(),
|
| + HeapType::Any(lookup->isolate()));
|
| } else {
|
| Handle<Map> old_map(object->map());
|
| Handle<Map> new_map = Map::CopyGeneralizeAllRepresentations(old_map,
|
| @@ -4101,12 +4089,9 @@ void JSObject::SetPropertyToFieldWithAttributes(LookupResult* lookup,
|
| }
|
|
|
|
|
| -void JSObject::AddProperty(
|
| - Handle<JSObject> object,
|
| - Handle<Name> name,
|
| - Handle<Object> value,
|
| - PropertyAttributes attributes,
|
| - StoreMode store_mode) {
|
| +void JSObject::AddProperty(Handle<JSObject> object, Handle<Name> name,
|
| + Handle<Object> value,
|
| + PropertyAttributes attributes) {
|
| #ifdef DEBUG
|
| uint32_t index;
|
| ASSERT(!object->IsJSProxy());
|
| @@ -4116,7 +4101,7 @@ void JSObject::AddProperty(
|
| ASSERT(!it.IsFound());
|
| ASSERT(object->map()->is_extensible());
|
| #endif
|
| - SetOwnPropertyIgnoreAttributes(object, name, value, attributes, store_mode,
|
| + SetOwnPropertyIgnoreAttributes(object, name, value, attributes,
|
| OMIT_EXTENSIBILITY_CHECK).Check();
|
| }
|
|
|
| @@ -4128,7 +4113,6 @@ MaybeHandle<Object> JSObject::SetOwnPropertyIgnoreAttributes(
|
| Handle<Name> name,
|
| Handle<Object> value,
|
| PropertyAttributes attributes,
|
| - StoreMode mode,
|
| ExtensibilityCheck extensibility_check,
|
| StoreFromKeyed store_from_keyed,
|
| ExecutableAccessorInfoHandling handling) {
|
| @@ -4159,7 +4143,7 @@ MaybeHandle<Object> JSObject::SetOwnPropertyIgnoreAttributes(
|
| ASSERT(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject());
|
| return SetOwnPropertyIgnoreAttributes(
|
| Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)), name,
|
| - value, attributes, mode, extensibility_check);
|
| + value, attributes, extensibility_check);
|
| }
|
|
|
| if (lookup.IsInterceptor() ||
|
| @@ -4173,9 +4157,8 @@ MaybeHandle<Object> JSObject::SetOwnPropertyIgnoreAttributes(
|
| TransitionFlag flag = lookup.IsFound()
|
| ? OMIT_TRANSITION : INSERT_TRANSITION;
|
| // Neither properties nor transitions found.
|
| - return AddPropertyInternal(object, name, value, attributes, SLOPPY,
|
| - store_from_keyed, extensibility_check, mode,
|
| - flag);
|
| + return AddPropertyInternal(object, name, value, attributes,
|
| + store_from_keyed, extensibility_check, flag);
|
| }
|
|
|
| Handle<Object> old_value = isolate->factory()->the_hole_value();
|
| @@ -5141,7 +5124,7 @@ Handle<Object> JSObject::SetHiddenPropertiesHashTable(Handle<JSObject> object,
|
| }
|
|
|
| SetOwnPropertyIgnoreAttributes(object, isolate->factory()->hidden_string(),
|
| - value, DONT_ENUM, ALLOW_AS_CONSTANT,
|
| + value, DONT_ENUM,
|
| OMIT_EXTENSIBILITY_CHECK).Assert();
|
| return object;
|
| }
|
|
|