Index: src/elements.h |
diff --git a/src/elements.h b/src/elements.h |
index c6d2d4b3bb340a18d3f3da1101859125ebfc7e59..036df5f709459aa81f6cfadbe6553357740c9382 100644 |
--- a/src/elements.h |
+++ b/src/elements.h |
@@ -42,17 +42,32 @@ class ElementsAccessor { |
virtual const char* name() const { return name_; } |
- virtual MaybeObject* Get(FixedArrayBase* backing_store, |
- uint32_t key, |
+ // Returns true if a holder contains an element with the specified key |
+ // 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(Object* receiver, |
+ JSObject* holder, |
+ uint32_t key, |
+ FixedArrayBase* backing_store = NULL) = 0; |
+ |
+ // 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 |
+ // backing_store is NULL, the holder->elements() is used as the backing store. |
+ virtual MaybeObject* Get(Object* receiver, |
JSObject* holder, |
- Object* receiver) = 0; |
+ uint32_t key, |
+ FixedArrayBase* backing_store = NULL) = 0; |
// Modifies the length data property as specified for JSArrays and resizes the |
// underlying backing store accordingly. The method honors the semantics of |
// changing array sizes as defined in EcmaScript 5.1 15.4.5.2, i.e. array that |
// have non-deletable elements can only be shrunk to the size of highest |
// element that is non-deletable. |
- virtual MaybeObject* SetLength(JSObject* holder, |
+ virtual MaybeObject* SetLength(JSArray* holder, |
Object* new_length) = 0; |
// Modifies both the length and capacity of a JSArray, resizing the underlying |
@@ -65,19 +80,15 @@ class ElementsAccessor { |
int capacity, |
int length) = 0; |
+ // Deletes an element in an object, returning a new elements backing store. |
virtual MaybeObject* Delete(JSObject* holder, |
uint32_t key, |
JSReceiver::DeleteMode mode) = 0; |
- virtual bool HasElement(FixedArrayBase* backing_store, |
- uint32_t key, |
- JSObject* holder, |
- Object* receiver) = 0; |
- |
- virtual MaybeObject* AddElementsToFixedArray(FixedArrayBase* from, |
- FixedArray* to, |
+ virtual MaybeObject* AddElementsToFixedArray(Object* receiver, |
JSObject* holder, |
- Object* receiver) = 0; |
+ FixedArray* to, |
+ FixedArrayBase* from = NULL) = 0; |
// Returns a shared ElementsAccessor for the specified ElementsKind. |
static ElementsAccessor* ForKind(ElementsKind elements_kind) { |