Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 8993728a0ba86431ddddccfefe70b5a38d2e06af..0184759d462dbfa1e587cc470e3326f356fbd611 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -1654,7 +1654,7 @@ class JSObject: public JSReceiver { |
bool ShouldConvertToFastElements(); |
// Returns true if the elements of JSObject contains only values that can be |
// represented in a FixedDoubleArray. |
- bool ShouldConvertToFastDoubleElements(); |
+ bool CanConvertToFastDoubleElements(); |
// Tells whether the index'th element is present. |
inline bool HasElement(uint32_t index); |
@@ -1948,8 +1948,21 @@ class JSObject: public JSReceiver { |
// Also maximal value of JSArray's length property. |
static const uint32_t kMaxElementCount = 0xffffffffu; |
+ // Constants for heuristics controlling conversion of fast elements |
+ // to slow elements. |
+ |
+ // Maximal gap that can be introduced by adding an element beyond |
+ // the current elements length. |
static const uint32_t kMaxGap = 1024; |
- static const int kMaxFastElementsLength = 5000; |
+ |
+ // Maximal length of fast elements array that won't be checked for |
+ // being dense enough on expansion. |
+ static const int kMaxUncheckedFastElementsLength = 5000; |
+ |
+ // Same as above but for old arrays. This limit is more strict. We |
+ // don't want to be wasteful with long lived objects. |
+ static const int kMaxUncheckedOldFastElementsLength = 500; |
+ |
static const int kInitialMaxFastElementArray = 100000; |
static const int kMaxFastProperties = 12; |
static const int kMaxInstanceSize = 255 * kPointerSize; |
@@ -2015,6 +2028,9 @@ class JSObject: public JSReceiver { |
// Returns true if most of the elements backing storage is used. |
bool HasDenseElements(); |
+ // Gets the current elements capacity and the number of used elements. |
+ void GetElementsCapacityAndUsage(int* capacity, int* used); |
+ |
bool CanSetCallback(String* name); |
MUST_USE_RESULT MaybeObject* SetElementCallback( |
uint32_t index, |
@@ -2491,6 +2507,10 @@ class HashTable: public FixedArray { |
int at_least_space_for, |
PretenureFlag pretenure = NOT_TENURED); |
+ // Computes the required capacity for a table holding the given |
+ // number of elements. May be more than HashTable::kMaxCapacity. |
+ static int ComputeCapacity(int at_least_space_for); |
+ |
// Returns the key at entry. |
Object* KeyAt(int entry) { return get(EntryToIndex(entry)); } |