| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 7e15f3005d6cbb035c4d9818eab72cefdc58617d..5960e9ef82045b2d72ad51e1781a0935c2dc83c3 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -2151,7 +2151,6 @@ MaybeObject* JSObject::SetPropertyPostInterceptor(
|
| Object* value,
|
| PropertyAttributes attributes,
|
| StrictModeFlag strict_mode,
|
| - ExtensibilityCheck extensibility_check,
|
| StoreMode mode) {
|
| // Check local property, ignore interceptor.
|
| LookupResult result(GetIsolate());
|
| @@ -2163,13 +2162,12 @@ MaybeObject* JSObject::SetPropertyPostInterceptor(
|
| return SetProperty(&result, name, value, attributes, strict_mode);
|
| }
|
| bool done = false;
|
| - MaybeObject* result_object;
|
| - result_object =
|
| + MaybeObject* result_object =
|
| SetPropertyViaPrototypes(name, value, attributes, strict_mode, &done);
|
| if (done) return result_object;
|
| // Add a new real property.
|
| return AddProperty(name, value, attributes, strict_mode,
|
| - MAY_BE_STORE_FROM_KEYED, extensibility_check,
|
| + MAY_BE_STORE_FROM_KEYED, PERFORM_EXTENSIBILITY_CHECK,
|
| OPTIMAL_REPRESENTATION, mode);
|
| }
|
|
|
| @@ -2827,8 +2825,7 @@ MaybeObject* JSObject::SetPropertyWithInterceptor(
|
| this_handle->SetPropertyPostInterceptor(*name_handle,
|
| *value_handle,
|
| attributes,
|
| - strict_mode,
|
| - PERFORM_EXTENSIBILITY_CHECK);
|
| + strict_mode);
|
| RETURN_IF_SCHEDULED_EXCEPTION(isolate);
|
| return raw_result;
|
| }
|
| @@ -4027,7 +4024,8 @@ MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes(
|
| Object* value_raw,
|
| PropertyAttributes attributes,
|
| ValueType value_type,
|
| - StoreMode mode) {
|
| + StoreMode mode,
|
| + ExtensibilityCheck extensibility_check) {
|
| // Make sure that the top context does not change when doing callbacks or
|
| // interceptor calls.
|
| AssertNoContextChange ncc;
|
| @@ -4055,7 +4053,8 @@ MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes(
|
| value_raw,
|
| attributes,
|
| value_type,
|
| - mode);
|
| + mode,
|
| + extensibility_check);
|
| }
|
|
|
| // Check for accessor in prototype chain removed here in clone.
|
| @@ -4063,7 +4062,7 @@ MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes(
|
| // Neither properties nor transitions found.
|
| return AddProperty(
|
| name_raw, value_raw, attributes, kNonStrictMode,
|
| - MAY_BE_STORE_FROM_KEYED, PERFORM_EXTENSIBILITY_CHECK, value_type, mode);
|
| + MAY_BE_STORE_FROM_KEYED, extensibility_check, value_type, mode);
|
| }
|
|
|
| // From this point on everything needs to be handlified.
|
| @@ -4983,12 +4982,12 @@ MaybeObject* JSObject::GetHiddenPropertiesHashTable(
|
| }
|
|
|
| MaybeObject* store_result =
|
| - SetPropertyPostInterceptor(GetHeap()->hidden_string(),
|
| - hashtable,
|
| - DONT_ENUM,
|
| - kNonStrictMode,
|
| - OMIT_EXTENSIBILITY_CHECK,
|
| - FORCE_FIELD);
|
| + SetLocalPropertyIgnoreAttributes(GetHeap()->hidden_string(),
|
| + hashtable,
|
| + DONT_ENUM,
|
| + OPTIMAL_REPRESENTATION,
|
| + ALLOW_AS_CONSTANT,
|
| + OMIT_EXTENSIBILITY_CHECK);
|
| if (store_result->IsFailure()) return store_result;
|
| return hashtable;
|
| }
|
| @@ -5016,12 +5015,12 @@ MaybeObject* JSObject::SetHiddenPropertiesHashTable(Object* value) {
|
| }
|
| }
|
| MaybeObject* store_result =
|
| - SetPropertyPostInterceptor(GetHeap()->hidden_string(),
|
| - value,
|
| - DONT_ENUM,
|
| - kNonStrictMode,
|
| - OMIT_EXTENSIBILITY_CHECK,
|
| - FORCE_FIELD);
|
| + SetLocalPropertyIgnoreAttributes(GetHeap()->hidden_string(),
|
| + value,
|
| + DONT_ENUM,
|
| + OPTIMAL_REPRESENTATION,
|
| + ALLOW_AS_CONSTANT,
|
| + OMIT_EXTENSIBILITY_CHECK);
|
| if (store_result->IsFailure()) return store_result;
|
| return this;
|
| }
|
| @@ -15363,6 +15362,7 @@ MaybeObject* ObjectHashSet::Add(Object* key) {
|
| int hash;
|
| { MaybeObject* maybe_hash = key->GetHash(ALLOW_CREATION);
|
| if (maybe_hash->IsFailure()) return maybe_hash;
|
| + ASSERT(key->GetHash(OMIT_CREATION) == maybe_hash);
|
| hash = Smi::cast(maybe_hash->ToObjectUnchecked())->value();
|
| }
|
| int entry = FindEntry(key);
|
| @@ -15424,6 +15424,7 @@ MaybeObject* ObjectHashTable::Put(Object* key, Object* value) {
|
| int hash;
|
| { MaybeObject* maybe_hash = key->GetHash(ALLOW_CREATION);
|
| if (maybe_hash->IsFailure()) return maybe_hash;
|
| + ASSERT(key->GetHash(OMIT_CREATION) == maybe_hash);
|
| hash = Smi::cast(maybe_hash->ToObjectUnchecked())->value();
|
| }
|
| int entry = FindEntry(key);
|
|
|