| Index: src/elements.cc
|
| diff --git a/src/elements.cc b/src/elements.cc
|
| index e4ecfe8dd63df799b4bd083f59b849808c6e5973..5da7a597087eb208456073a81c971067d2656d83 100644
|
| --- a/src/elements.cc
|
| +++ b/src/elements.cc
|
| @@ -191,11 +191,8 @@ class ElementsAccessorBase : public ElementsAccessor {
|
| Object* receiver) {
|
| uint32_t key =
|
| ElementsAccessorSubclass::GetKeyForIndex(backing_store, index);
|
| - MaybeObject* element = ElementsAccessorSubclass::Get(backing_store,
|
| - key,
|
| - holder,
|
| - receiver);
|
| - return !element->IsTheHole();
|
| + return ElementsAccessorSubclass::HasElementAtKey(
|
| + backing_store, key, holder, receiver);
|
| }
|
|
|
| virtual bool HasElementAtIndex(FixedArrayBase* backing_store,
|
| @@ -206,13 +203,30 @@ class ElementsAccessorBase : public ElementsAccessor {
|
| BackingStoreClass::cast(backing_store), index, holder, receiver);
|
| }
|
|
|
| + static bool HasElementAtKey(BackingStoreClass* backing_store,
|
| + uint32_t key,
|
| + JSObject* holder,
|
| + Object* receiver) {
|
| + MaybeObject* element = ElementsAccessorSubclass::Get(
|
| + backing_store, key, holder, receiver);
|
| + return !element->IsTheHole();
|
| + }
|
| +
|
| + virtual bool HasElementAtKey(FixedArrayBase* backing_store,
|
| + uint32_t key,
|
| + JSObject* holder,
|
| + Object* receiver) {
|
| + return ElementsAccessorSubclass::HasElementAtKey(
|
| + BackingStoreClass::cast(backing_store), key, holder, receiver);
|
| + }
|
| +
|
| static uint32_t GetKeyForIndex(BackingStoreClass* backing_store,
|
| uint32_t index) {
|
| return index;
|
| }
|
|
|
| virtual uint32_t GetKeyForIndex(FixedArrayBase* backing_store,
|
| - uint32_t index) {
|
| + uint32_t index) {
|
| return ElementsAccessorSubclass::GetKeyForIndex(
|
| BackingStoreClass::cast(backing_store), index);
|
| }
|
| @@ -333,6 +347,13 @@ class ExternalElementsAccessor
|
| // External arrays always ignore deletes.
|
| return obj->GetHeap()->true_value();
|
| }
|
| +
|
| + static bool HasElementAtKey(ExternalArray* backing_store,
|
| + uint32_t key,
|
| + JSObject* holder,
|
| + Object* receiver) {
|
| + return key < ExternalElementsAccessorSubclass::GetCapacity(backing_store);
|
| + }
|
| };
|
|
|
|
|
|
|