Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index ba690ecab52c1cfafbe4a2e511134fc247a4328d..27082f7799350a1a74f8457a7ee5cde00c952d2e 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -71,17 +71,19 @@ |
// - ExternalIntArray |
// - ExternalUnsignedIntArray |
// - ExternalFloatArray |
-// - FixedArray |
-// - DescriptorArray |
-// - HashTable |
-// - Dictionary |
-// - SymbolTable |
-// - CompilationCacheTable |
-// - CodeCacheHashTable |
-// - MapCache |
-// - Context |
-// - JSFunctionResultCache |
-// - SerializedScopeInfo |
+// - FixedArrayBase |
+// - FixedArray |
+// - DescriptorArray |
+// - HashTable |
+// - Dictionary |
+// - SymbolTable |
+// - CompilationCacheTable |
+// - CodeCacheHashTable |
+// - MapCache |
+// - Context |
+// - JSFunctionResultCache |
+// - SerializedScopeInfo |
+// - FixedDoubleArray |
// - String |
// - SeqString |
// - SeqAsciiString |
@@ -630,8 +632,10 @@ enum CompareResult { |
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); \ |
+class ElementsAccessor; |
class StringStream; |
class ObjectVisitor; |
+class DictionaryElementsAccessor; |
struct ValueInfo : public Malloced { |
ValueInfo() : type(FIRST_TYPE), ptr(NULL), str(NULL), number(0) { } |
@@ -1488,6 +1492,7 @@ class JSObject: public JSReceiver { |
inline void initialize_elements(); |
MUST_USE_RESULT inline MaybeObject* ResetElements(); |
inline ElementsKind GetElementsKind(); |
+ inline ElementsAccessor* GetElementsAccessor(); |
inline bool HasFastElements(); |
inline bool HasFastDoubleElements(); |
inline bool HasDictionaryElements(); |
@@ -1733,11 +1738,6 @@ class JSObject: public JSReceiver { |
MaybeObject* GetElementWithReceiver(Object* receiver, uint32_t index); |
MaybeObject* GetElementWithInterceptor(Object* receiver, uint32_t index); |
- // Get external element value at index if there is one and undefined |
- // otherwise. Can return a failure if allocation of a heap number |
- // failed. |
- MaybeObject* GetExternalElement(uint32_t index); |
- |
// Replace the elements' backing store with fast elements of the given |
// capacity. Update the length for JSArrays. Returns the new backing |
// store. |
@@ -2001,6 +2001,8 @@ class JSObject: public JSReceiver { |
}; |
private: |
+ friend class DictionaryElementsAccessor; |
+ |
MUST_USE_RESULT MaybeObject* GetElementWithCallback(Object* receiver, |
Object* structure, |
uint32_t index, |
@@ -2021,8 +2023,6 @@ class JSObject: public JSReceiver { |
StrictModeFlag strict_mode, |
bool check_prototype); |
- MaybeObject* GetElementPostInterceptor(Object* receiver, uint32_t index); |
- |
MUST_USE_RESULT MaybeObject* DeletePropertyPostInterceptor(String* name, |
DeleteMode mode); |
MUST_USE_RESULT MaybeObject* DeletePropertyWithInterceptor(String* name); |
@@ -2092,6 +2092,7 @@ class FixedArray: public FixedArrayBase { |
inline Object* get(int index); |
// Setter that uses write barrier. |
inline void set(int index, Object* value); |
+ inline bool is_the_hole(int index); |
// Setter that doesn't need write barrier). |
inline void set(int index, Smi* value); |
@@ -2197,7 +2198,8 @@ class FixedDoubleArray: public FixedArrayBase { |
inline void Initialize(NumberDictionary* from); |
// Setter and getter for elements. |
- inline double get(int index); |
+ inline double get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, double value); |
inline void set_the_hole(int index); |
@@ -3129,6 +3131,8 @@ class ExternalArray: public HeapObject { |
inline int length(); |
inline void set_length(int value); |
+ inline bool is_the_hole(int index) { return false; } |
+ |
// [external_pointer]: The pointer to the external memory area backing this |
// external array. |
DECL_ACCESSORS(external_pointer, void) // Pointer to the data store. |
@@ -3164,7 +3168,8 @@ class ExternalPixelArray: public ExternalArray { |
inline uint8_t* external_pixel_pointer(); |
// Setter and getter. |
- inline uint8_t get(int index); |
+ inline uint8_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, uint8_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber and |
@@ -3192,7 +3197,8 @@ class ExternalPixelArray: public ExternalArray { |
class ExternalByteArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline int8_t get(int index); |
+ inline int8_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, int8_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3220,7 +3226,8 @@ class ExternalByteArray: public ExternalArray { |
class ExternalUnsignedByteArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline uint8_t get(int index); |
+ inline uint8_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, uint8_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3248,7 +3255,8 @@ class ExternalUnsignedByteArray: public ExternalArray { |
class ExternalShortArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline int16_t get(int index); |
+ inline int16_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, int16_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3276,7 +3284,8 @@ class ExternalShortArray: public ExternalArray { |
class ExternalUnsignedShortArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline uint16_t get(int index); |
+ inline uint16_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, uint16_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3304,7 +3313,8 @@ class ExternalUnsignedShortArray: public ExternalArray { |
class ExternalIntArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline int32_t get(int index); |
+ inline int32_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, int32_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3332,7 +3342,8 @@ class ExternalIntArray: public ExternalArray { |
class ExternalUnsignedIntArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline uint32_t get(int index); |
+ inline uint32_t get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, uint32_t value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3360,7 +3371,8 @@ class ExternalUnsignedIntArray: public ExternalArray { |
class ExternalFloatArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline float get(int index); |
+ inline float get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, float value); |
// This accessor applies the correct conversion from Smi, HeapNumber |
@@ -3388,7 +3400,8 @@ class ExternalFloatArray: public ExternalArray { |
class ExternalDoubleArray: public ExternalArray { |
public: |
// Setter and getter. |
- inline double get(int index); |
+ inline double get_scalar(int index); |
+ inline MaybeObject* get(int index); |
inline void set(int index, double value); |
// This accessor applies the correct conversion from Smi, HeapNumber |