Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 33363238c4d28a056421c19d32e1e3935c13bb64..9739ad19a17f784693b29324a01caecd5bb479e2 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -5203,9 +5203,8 @@ Map* Map::elements_transition_map() { |
bool Map::CanHaveMoreTransitions() { |
if (!HasTransitionArray()) return true; |
- return FixedArray::SizeFor(transitions()->length() + |
- TransitionArray::kTransitionSize) |
- <= Page::kMaxRegularHeapObjectSize; |
+ return transitions()->number_of_transitions() < |
+ TransitionArray::kMaxNumberOfTransitions; |
} |
@@ -6995,6 +6994,14 @@ void Map::ClearCodeCache(Heap* heap) { |
} |
+int Map::SlackForArraySize(int old_size, int size_limit) { |
+ const int max_slack = size_limit - old_size; |
+ CHECK(max_slack >= 0); |
+ if (old_size < 4) return Min(max_slack, 1); |
+ return Min(max_slack, old_size / 2); |
+} |
+ |
+ |
void JSArray::EnsureSize(Handle<JSArray> array, int required_size) { |
DCHECK(array->HasFastSmiOrObjectElements()); |
Handle<FixedArray> elts = handle(FixedArray::cast(array->elements())); |