Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 5f07c02f8116496c3382187b16a6acd03cd18f3c..2e131d92d96d119c711a3d15f51dca63deca1dc4 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -1763,13 +1763,6 @@ bool Map::InstancesNeedRewriting(Map* target, int target_number_of_fields, |
} |
-void Map::ConnectElementsTransition(Handle<Map> parent, Handle<Map> child) { |
- Isolate* isolate = parent->GetIsolate(); |
- Handle<Name> name = isolate->factory()->elements_transition_symbol(); |
- ConnectTransition(parent, child, name, SPECIAL_TRANSITION); |
-} |
- |
- |
void JSObject::MigrateToMap(Handle<JSObject> object, Handle<Map> new_map, |
int expected_additional_properties) { |
if (object->map() == *new_map) return; |
@@ -3726,24 +3719,8 @@ Handle<Map> Map::TransitionElementsTo(Handle<Map> map, |
} |
} |
- return TransitionElementsToSlow(map, to_kind); |
-} |
- |
- |
-Handle<Map> Map::TransitionElementsToSlow(Handle<Map> map, |
- ElementsKind to_kind) { |
- ElementsKind from_kind = map->elements_kind(); |
- |
- if (from_kind == to_kind) { |
- return map; |
- } |
- |
- bool allow_store_transition = |
- // Only remember the map transition if there is not an already existing |
- // non-matching element transition. |
- !map->IsUndefined() && !map->is_dictionary_map() && |
- IsTransitionElementsKind(from_kind); |
- |
+ DCHECK(!map->IsUndefined()); |
+ bool allow_store_transition = IsTransitionElementsKind(from_kind); |
// Only store fast element maps in ascending generality. |
if (IsFastElementsKind(to_kind)) { |
allow_store_transition &= |
@@ -5599,8 +5576,7 @@ MaybeHandle<Object> JSObject::PreventExtensionsWithTransition( |
DCHECK(transition_map->has_dictionary_elements()); |
DCHECK(!transition_map->is_extensible()); |
JSObject::MigrateToMap(object, transition_map); |
- } else if (object->HasFastProperties() && |
- TransitionArray::CanHaveMoreTransitions(old_map)) { |
+ } else if (TransitionArray::CanHaveMoreTransitions(old_map)) { |
// Create a new descriptor array with the appropriate property attributes |
Handle<Map> new_map = Map::CopyForPreventExtensions( |
old_map, attrs, transition_marker, "CopyForPreventExtensions"); |
@@ -5668,8 +5644,7 @@ void JSObject::SetObserved(Handle<JSObject> object) { |
if (transition != NULL) { |
new_map = handle(transition, isolate); |
DCHECK(new_map->is_observed()); |
- } else if (object->HasFastProperties() && |
- TransitionArray::CanHaveMoreTransitions(old_map)) { |
+ } else if (TransitionArray::CanHaveMoreTransitions(old_map)) { |
new_map = Map::CopyForObserved(old_map); |
} else { |
new_map = Map::Copy(old_map, "SlowObserved"); |
@@ -6963,8 +6938,9 @@ Handle<Map> Map::CopyAsElementsKind(Handle<Map> map, ElementsKind kind, |
Handle<Map> new_map = CopyForTransition(map, "CopyAsElementsKind"); |
new_map->set_elements_kind(kind); |
- ConnectElementsTransition(map, new_map); |
- |
+ Isolate* isolate = map->GetIsolate(); |
+ Handle<Name> name = isolate->factory()->elements_transition_symbol(); |
+ ConnectTransition(map, new_map, name, SPECIAL_TRANSITION); |
return new_map; |
} |