Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 7ed297340373326cc33c02e3d43173371bf1d04c..67dff4a19fb8e4fffdca8af60e480effdff9df22 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -1731,7 +1731,7 @@ class JSObject: public JSReceiver { |
static int GetIdentityHash(Handle<JSObject> obj); |
MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); |
- MUST_USE_RESULT MaybeObject* SetIdentityHash(Object* hash, CreationFlag flag); |
+ MUST_USE_RESULT MaybeObject* SetIdentityHash(Smi* hash, CreationFlag flag); |
static Handle<Object> DeleteProperty(Handle<JSObject> obj, |
Handle<String> name); |
@@ -2235,16 +2235,22 @@ class JSObject: public JSReceiver { |
Object* setter, |
PropertyAttributes attributes); |
- // Returns the hidden properties backing store object, currently |
- // a StringDictionary, stored on this object. |
- // If no hidden properties object has been put on this object, |
- // return undefined, unless create_if_absent is true, in which case |
- // a new dictionary is created, added to this object, and returned. |
- MUST_USE_RESULT MaybeObject* GetHiddenPropertiesDictionary( |
- bool create_if_absent); |
- // Updates the existing hidden properties dictionary. |
- MUST_USE_RESULT MaybeObject* SetHiddenPropertiesDictionary( |
- StringDictionary* dictionary); |
+ |
+ enum InitializeHiddenProperties { |
+ CREATE_NEW_IF_ABSENT, |
+ ONLY_RETURN_INLINE_VALUE |
+ }; |
+ |
+ // If create_if_absent is true, return the hash table backing store |
+ // for hidden properties. If there is no backing store, allocate one. |
+ // If create_if_absent is false, return the hash table backing store |
+ // or the inline stored identity hash, whatever is found. |
+ MUST_USE_RESULT MaybeObject* GetHiddenPropertiesHashTable( |
+ InitializeHiddenProperties init_option); |
+ // Set the hidden property backing store to either a hash table or |
+ // the inline-stored identity hash. |
+ MUST_USE_RESULT MaybeObject* SetHiddenPropertiesHashTable( |
+ Object* value); |
DISALLOW_IMPLICIT_CONSTRUCTORS(JSObject); |
}; |
@@ -2747,6 +2753,11 @@ class BaseShape { |
template<typename Shape, typename Key> |
class HashTable: public FixedArray { |
public: |
+ enum MinimumCapacity { |
+ USE_DEFAULT_MINIMUM_CAPACITY, |
+ USE_CUSTOM_MINIMUM_CAPACITY |
+ }; |
+ |
// Wrapper methods |
inline uint32_t Hash(Key key) { |
if (Shape::UsesSeed) { |
@@ -2799,6 +2810,7 @@ class HashTable: public FixedArray { |
// Returns a new HashTable object. Might return Failure. |
MUST_USE_RESULT static MaybeObject* Allocate( |
int at_least_space_for, |
+ MinimumCapacity capacity_option = USE_DEFAULT_MINIMUM_CAPACITY, |
PretenureFlag pretenure = NOT_TENURED); |
// Computes the required capacity for a table holding the given |