Index: src/elements.h |
diff --git a/src/elements.h b/src/elements.h |
index 6fe19559996e695e91c8ba8e8cf38e1f707428c8..9005096a1e2b0728b2ca516f7b3e7309d72abc04 100644 |
--- a/src/elements.h |
+++ b/src/elements.h |
@@ -26,32 +26,28 @@ class ElementsAccessor { |
// is found. |
virtual void Validate(Handle<JSObject> obj) = 0; |
- // Returns true if a holder contains an element with the specified key |
+ // Returns true if a holder contains an element with the specified index |
// without iterating up the prototype chain. The caller can optionally pass |
// in the backing store to use for the check, which must be compatible with |
// the ElementsKind of the ElementsAccessor. If backing_store is NULL, the |
// holder->elements() is used as the backing store. |
- virtual bool HasElement( |
- Handle<JSObject> holder, |
- uint32_t key, |
- Handle<FixedArrayBase> backing_store) = 0; |
- |
- inline bool HasElement( |
- Handle<JSObject> holder, |
- uint32_t key) { |
- return HasElement(holder, key, handle(holder->elements())); |
+ virtual bool HasElement(Handle<JSObject> holder, uint32_t index, |
+ Handle<FixedArrayBase> backing_store) = 0; |
+ |
+ inline bool HasElement(Handle<JSObject> holder, uint32_t index) { |
+ return HasElement(holder, index, handle(holder->elements())); |
} |
- // Returns the element with the specified key or undefined if there is no such |
- // element. This method doesn't iterate up the prototype chain. The caller |
- // can optionally pass in the backing store to use for the check, which must |
- // be compatible with the ElementsKind of the ElementsAccessor. If |
+ // Returns the element with the specified index or undefined if there is no |
+ // such element. This method doesn't iterate up the prototype chain. The |
+ // caller can optionally pass in the backing store to use for the check, which |
+ // must be compatible with the ElementsKind of the ElementsAccessor. If |
// backing_store is NULL, the holder->elements() is used as the backing store. |
- virtual Handle<Object> Get(Handle<JSObject> holder, uint32_t key, |
+ virtual Handle<Object> Get(Handle<JSObject> holder, uint32_t index, |
Handle<FixedArrayBase> backing_store) = 0; |
- inline Handle<Object> Get(Handle<JSObject> holder, uint32_t key) { |
- return Get(holder, key, handle(holder->elements())); |
+ inline Handle<Object> Get(Handle<JSObject> holder, uint32_t index) { |
+ return Get(holder, index, handle(holder->elements())); |
} |
// Modifies the length data property as specified for JSArrays and resizes the |
@@ -62,7 +58,7 @@ class ElementsAccessor { |
virtual void SetLength(Handle<JSArray> holder, uint32_t new_length) = 0; |
// Deletes an element in an object. |
- virtual void Delete(Handle<JSObject> holder, uint32_t index) = 0; |
+ virtual void Delete(Handle<JSObject> holder, uint32_t entry) = 0; |
// If kCopyToEnd is specified as the copy_size to CopyElements, it copies all |
// of elements from source after source_start to the destination array. |
@@ -123,13 +119,13 @@ class ElementsAccessor { |
static void InitializeOncePerProcess(); |
static void TearDown(); |
- virtual void Set(FixedArrayBase* backing_store, uint32_t key, |
+ virtual void Set(FixedArrayBase* backing_store, uint32_t index, |
Object* value) = 0; |
virtual void Reconfigure(Handle<JSObject> object, |
- Handle<FixedArrayBase> backing_store, uint32_t index, |
+ Handle<FixedArrayBase> backing_store, uint32_t entry, |
Handle<Object> value, |
PropertyAttributes attributes) = 0; |
- virtual void Add(Handle<JSObject> object, uint32_t index, |
+ virtual void Add(Handle<JSObject> object, uint32_t entry, |
Handle<Object> value, PropertyAttributes attributes, |
uint32_t new_capacity) = 0; |
@@ -141,22 +137,19 @@ class ElementsAccessor { |
virtual uint32_t GetCapacity(JSObject* holder, |
FixedArrayBase* backing_store) = 0; |
- // Element handlers distinguish between indexes and keys when they manipulate |
- // elements. Indexes refer to elements in terms of their location in the |
- // underlying storage's backing store representation, and are between 0 and |
- // GetCapacity. Keys refer to elements in terms of the value that would be |
- // specified in JavaScript to access the element. In most implementations, |
- // keys are equivalent to indexes, and GetKeyForIndex returns the same value |
- // it is passed. In the NumberDictionary ElementsAccessor, GetKeyForIndex maps |
- // the index to a key using the KeyAt method on the NumberDictionary. |
- virtual uint32_t GetKeyForIndex(FixedArrayBase* backing_store, |
- uint32_t index) = 0; |
- virtual uint32_t GetIndexForKey(JSObject* holder, |
- FixedArrayBase* backing_store, |
- uint32_t key) = 0; |
+ // Element handlers distinguish between entries and indices when they |
+ // manipulate elements. Entries refer to elements in terms of their location |
+ // in the underlying storage's backing store representation, and are between 0 |
+ // and GetCapacity. Indices refer to elements in terms of the value that would |
+ // be specified in JavaScript to access the element. In most implementations, |
+ // indices are equivalent to entries. In the NumberDictionary |
+ // ElementsAccessor, entries are mapped to an index using the KeyAt method on |
+ // the NumberDictionary. |
+ virtual uint32_t GetEntryForIndex(JSObject* holder, |
+ FixedArrayBase* backing_store, |
+ uint32_t index) = 0; |
virtual PropertyDetails GetDetails(FixedArrayBase* backing_store, |
- uint32_t index) = 0; |
- virtual bool HasIndex(FixedArrayBase* backing_store, uint32_t key) = 0; |
+ uint32_t entry) = 0; |
private: |
static ElementsAccessor** elements_accessors_; |
@@ -165,7 +158,7 @@ class ElementsAccessor { |
DISALLOW_COPY_AND_ASSIGN(ElementsAccessor); |
}; |
-void CheckArrayAbuse(Handle<JSObject> obj, const char* op, uint32_t key, |
+void CheckArrayAbuse(Handle<JSObject> obj, const char* op, uint32_t index, |
bool allow_appending = false); |
MUST_USE_RESULT MaybeHandle<Object> ArrayConstructInitializeElements( |