Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 79dda37866f3e452ed6d1a33862e8375d5fe68b5..b626e447b75a48cdccb0398b98ebd512610e1157 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -4829,11 +4829,9 @@ Handle<Map> Map::TransitionElementsTo(Handle<Map> map, |
} else if (IsFastElementsKind(from_kind) && IsFastElementsKind(to_kind)) { |
// Reuse map transitions for JSArrays. |
DisallowHeapAllocation no_gc; |
- Strength strength = map->is_strong() ? Strength::STRONG : Strength::WEAK; |
- if (native_context->get(Context::ArrayMapIndex(from_kind, strength)) == |
- *map) { |
+ if (native_context->get(Context::ArrayMapIndex(from_kind)) == *map) { |
Object* maybe_transitioned_map = |
- native_context->get(Context::ArrayMapIndex(to_kind, strength)); |
+ native_context->get(Context::ArrayMapIndex(to_kind)); |
if (maybe_transitioned_map->IsMap()) { |
return handle(Map::cast(maybe_transitioned_map), isolate); |
} |
@@ -6203,15 +6201,12 @@ Maybe<bool> JSReceiver::DeleteProperty(LookupIterator* it, |
} |
// Fall through. |
case LookupIterator::ACCESSOR: { |
- if (!it->IsConfigurable() || receiver->map()->is_strong()) { |
- // Fail if the property is not configurable, or on a strong object. |
+ if (!it->IsConfigurable()) { |
+ // Fail if the property is not configurable. |
if (is_strict(language_mode)) { |
- MessageTemplate::Template templ = |
- receiver->map()->is_strong() |
- ? MessageTemplate::kStrongDeleteProperty |
- : MessageTemplate::kStrictDeleteProperty; |
isolate->Throw(*isolate->factory()->NewTypeError( |
- templ, it->GetName(), receiver)); |
+ MessageTemplate::kStrictDeleteProperty, it->GetName(), |
+ receiver)); |
return Nothing<bool>(); |
} |
return Just(false); |
@@ -6631,14 +6626,6 @@ Maybe<bool> JSReceiver::ValidateAndApplyPropertyDescriptor( |
} else if (current_is_data_descriptor && desc_is_data_descriptor) { |
// 8a. If the [[Configurable]] field of current is false, then: |
if (!current->configurable()) { |
- // [Strong mode] Disallow changing writable -> readonly for |
- // non-configurable properties. |
- if (it != NULL && current->writable() && desc->has_writable() && |
- !desc->writable() && object->map()->is_strong()) { |
- RETURN_FAILURE(isolate, should_throw, |
- NewTypeError(MessageTemplate::kStrongRedefineDisallowed, |
- object, it->GetName())); |
- } |
// 8a i. Return false, if the [[Writable]] field of current is false and |
// the [[Writable]] field of Desc is true. |
if (!current->writable() && desc->has_writable() && desc->writable()) { |
@@ -7482,8 +7469,7 @@ Maybe<bool> JSReceiver::SetIntegrityLevel(Handle<JSReceiver> receiver, |
if (receiver->IsJSObject()) { |
Handle<JSObject> object = Handle<JSObject>::cast(receiver); |
if (!object->HasSloppyArgumentsElements() && |
- !object->map()->is_observed() && |
- (!object->map()->is_strong() || level == SEALED)) { // Fast path. |
+ !object->map()->is_observed()) { // Fast path. |
if (level == SEALED) { |
return JSObject::PreventExtensionsWithTransition<SEALED>(object, |
should_throw); |
@@ -9258,16 +9244,14 @@ Handle<Map> Map::CopyInitialMap(Handle<Map> map, int instance_size, |
int unused_property_fields) { |
#ifdef DEBUG |
Isolate* isolate = map->GetIsolate(); |
- // Strict and strong function maps have Function as a constructor but the |
+ // Strict function maps have Function as a constructor but the |
// Function's initial map is a sloppy function map. Same holds for |
// GeneratorFunction and its initial map. |
Object* constructor = map->GetConstructor(); |
DCHECK(constructor->IsJSFunction()); |
DCHECK(*map == JSFunction::cast(constructor)->initial_map() || |
*map == *isolate->strict_function_map() || |
- *map == *isolate->strong_function_map() || |
- *map == *isolate->strict_generator_function_map() || |
- *map == *isolate->strong_generator_function_map()); |
+ *map == *isolate->strict_generator_function_map()); |
#endif |
// Initial maps must always own their descriptors and it's descriptor array |
// does not contain descriptors that do not belong to the map. |
@@ -12256,7 +12240,6 @@ bool CheckEquivalent(Map* first, Map* second) { |
first->instance_type() == second->instance_type() && |
first->bit_field() == second->bit_field() && |
first->is_extensible() == second->is_extensible() && |
- first->is_strong() == second->is_strong() && |
first->new_target_is_base() == second->new_target_is_base() && |
first->has_hidden_prototype() == second->has_hidden_prototype(); |
} |
@@ -12846,12 +12829,10 @@ Handle<Object> CacheInitialJSArrayMaps( |
Handle<Context> native_context, Handle<Map> initial_map) { |
// Replace all of the cached initial array maps in the native context with |
// the appropriate transitioned elements kind maps. |
- Strength strength = |
- initial_map->is_strong() ? Strength::STRONG : Strength::WEAK; |
Handle<Map> current_map = initial_map; |
ElementsKind kind = current_map->elements_kind(); |
DCHECK_EQ(GetInitialFastElementsKind(), kind); |
- native_context->set(Context::ArrayMapIndex(kind, strength), *current_map); |
+ native_context->set(Context::ArrayMapIndex(kind), *current_map); |
for (int i = GetSequenceIndexFromFastElementsKind(kind) + 1; |
i < kFastElementsKindCount; ++i) { |
Handle<Map> new_map; |
@@ -12863,7 +12844,7 @@ Handle<Object> CacheInitialJSArrayMaps( |
current_map, next_kind, INSERT_TRANSITION); |
} |
DCHECK_EQ(next_kind, new_map->elements_kind()); |
- native_context->set(Context::ArrayMapIndex(next_kind, strength), *new_map); |
+ native_context->set(Context::ArrayMapIndex(next_kind), *new_map); |
current_map = new_map; |
} |
return initial_map; |
@@ -12895,9 +12876,6 @@ void JSFunction::SetInstancePrototype(Handle<JSFunction> function, |
function->set_prototype_or_initial_map(*value); |
} else { |
Handle<Map> new_map = Map::Copy(initial_map, "SetInstancePrototype"); |
- if (function->map()->is_strong()) { |
- new_map->set_is_strong(); |
- } |
JSFunction::SetInitialMap(function, new_map, value); |
// If the function is used as the global Array function, cache the |
@@ -12909,9 +12887,6 @@ void JSFunction::SetInstancePrototype(Handle<JSFunction> function, |
if (array_function->IsJSFunction() && |
*function == JSFunction::cast(*array_function)) { |
CacheInitialJSArrayMaps(native_context, new_map); |
- Handle<Map> new_strong_map = Map::Copy(new_map, "SetInstancePrototype"); |
- new_strong_map->set_is_strong(); |
- CacheInitialJSArrayMaps(native_context, new_strong_map); |
} |
} |
@@ -13096,9 +13071,6 @@ void JSFunction::EnsureHasInitialMap(Handle<JSFunction> function) { |
&in_object_properties); |
Handle<Map> map = isolate->factory()->NewMap(instance_type, instance_size); |
- if (function->map()->is_strong()) { |
- map->set_is_strong(); |
- } |
// Fetch or allocate prototype. |
Handle<Object> prototype; |
@@ -15719,12 +15691,6 @@ Maybe<bool> JSObject::SetPrototypeUnobserved(Handle<JSObject> object, |
DCHECK(!object->IsAccessCheckNeeded()); |
} |
- // Strong objects may not have their prototype set via __proto__ or |
- // setPrototypeOf. |
- if (from_javascript && object->map()->is_strong()) { |
- RETURN_FAILURE(isolate, should_throw, |
- NewTypeError(MessageTemplate::kStrongSetProto, object)); |
- } |
Heap* heap = isolate->heap(); |
// Silently ignore the change if value is not a JSObject or null. |
// SpiderMonkey behaves this way. |