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); |