Index: src/elements.cc |
diff --git a/src/elements.cc b/src/elements.cc |
index 63bf0907417790390a22c930fca7dd02cdd57953..45be25ebd09fc499f44aaab805d551682e90b139 100644 |
--- a/src/elements.cc |
+++ b/src/elements.cc |
@@ -104,7 +104,7 @@ static Failure* ThrowArrayLengthRangeError(Heap* heap) { |
template <typename ElementsAccessorSubclass, typename BackingStoreClass> |
class ElementsAccessorBase : public ElementsAccessor { |
protected: |
- ElementsAccessorBase() { } |
+ explicit ElementsAccessorBase(const char* name) : ElementsAccessor(name) { } |
virtual MaybeObject* Get(FixedArrayBase* backing_store, |
uint32_t key, |
JSObject* obj, |
@@ -280,6 +280,10 @@ template<typename FastElementsAccessorSubclass, |
int ElementSize> |
class FastElementsAccessor |
: public ElementsAccessorBase<FastElementsAccessorSubclass, BackingStore> { |
+ public: |
+ explicit FastElementsAccessor(const char* name) |
+ : ElementsAccessorBase<FastElementsAccessorSubclass, |
+ BackingStore>(name) {} |
protected: |
friend class ElementsAccessorBase<FastElementsAccessorSubclass, BackingStore>; |
@@ -339,6 +343,11 @@ class FastObjectElementsAccessor |
FixedArray, |
kPointerSize> { |
public: |
+ explicit FastObjectElementsAccessor(const char* name) |
+ : FastElementsAccessor<FastObjectElementsAccessor, |
+ FixedArray, |
+ kPointerSize>(name) {} |
+ |
static MaybeObject* DeleteCommon(JSObject* obj, |
uint32_t key) { |
ASSERT(obj->HasFastElements() || |
@@ -414,6 +423,12 @@ class FastDoubleElementsAccessor |
: public FastElementsAccessor<FastDoubleElementsAccessor, |
FixedDoubleArray, |
kDoubleSize> { |
+ public: |
+ explicit FastDoubleElementsAccessor(const char* name) |
+ : FastElementsAccessor<FastDoubleElementsAccessor, |
+ FixedDoubleArray, |
+ kDoubleSize>(name) {} |
+ |
static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, |
uint32_t capacity, |
uint32_t length) { |
@@ -454,6 +469,11 @@ template<typename ExternalElementsAccessorSubclass, |
class ExternalElementsAccessor |
: public ElementsAccessorBase<ExternalElementsAccessorSubclass, |
ExternalArray> { |
+ public: |
+ explicit ExternalElementsAccessor(const char* name) |
+ : ElementsAccessorBase<ExternalElementsAccessorSubclass, |
+ ExternalArray>(name) {} |
+ |
protected: |
friend class ElementsAccessorBase<ExternalElementsAccessorSubclass, |
ExternalArray>; |
@@ -497,54 +517,90 @@ class ExternalElementsAccessor |
class ExternalByteElementsAccessor |
: public ExternalElementsAccessor<ExternalByteElementsAccessor, |
ExternalByteArray> { |
+ public: |
+ explicit ExternalByteElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalByteElementsAccessor, |
+ ExternalByteArray>(name) {} |
}; |
class ExternalUnsignedByteElementsAccessor |
: public ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, |
ExternalUnsignedByteArray> { |
+ public: |
+ explicit ExternalUnsignedByteElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, |
+ ExternalUnsignedByteArray>(name) {} |
}; |
class ExternalShortElementsAccessor |
: public ExternalElementsAccessor<ExternalShortElementsAccessor, |
ExternalShortArray> { |
+ public: |
+ explicit ExternalShortElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalShortElementsAccessor, |
+ ExternalShortArray>(name) {} |
}; |
class ExternalUnsignedShortElementsAccessor |
: public ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, |
ExternalUnsignedShortArray> { |
+ public: |
+ explicit ExternalUnsignedShortElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, |
+ ExternalUnsignedShortArray>(name) {} |
}; |
class ExternalIntElementsAccessor |
: public ExternalElementsAccessor<ExternalIntElementsAccessor, |
ExternalIntArray> { |
+ public: |
+ explicit ExternalIntElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalIntElementsAccessor, |
+ ExternalIntArray>(name) {} |
}; |
class ExternalUnsignedIntElementsAccessor |
: public ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, |
ExternalUnsignedIntArray> { |
+ public: |
+ explicit ExternalUnsignedIntElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, |
+ ExternalUnsignedIntArray>(name) {} |
}; |
class ExternalFloatElementsAccessor |
: public ExternalElementsAccessor<ExternalFloatElementsAccessor, |
ExternalFloatArray> { |
+ public: |
+ explicit ExternalFloatElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalFloatElementsAccessor, |
+ ExternalFloatArray>(name) {} |
}; |
class ExternalDoubleElementsAccessor |
: public ExternalElementsAccessor<ExternalDoubleElementsAccessor, |
ExternalDoubleArray> { |
+ public: |
+ explicit ExternalDoubleElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<ExternalDoubleElementsAccessor, |
+ ExternalDoubleArray>(name) {} |
}; |
class PixelElementsAccessor |
: public ExternalElementsAccessor<PixelElementsAccessor, |
ExternalPixelArray> { |
+ public: |
+ explicit PixelElementsAccessor(const char* name) |
+ : ExternalElementsAccessor<PixelElementsAccessor, |
+ ExternalPixelArray>(name) {} |
}; |
@@ -552,6 +608,10 @@ class DictionaryElementsAccessor |
: public ElementsAccessorBase<DictionaryElementsAccessor, |
SeededNumberDictionary> { |
public: |
+ explicit DictionaryElementsAccessor(const char* name) |
+ : ElementsAccessorBase<DictionaryElementsAccessor, |
+ SeededNumberDictionary>(name) {} |
+ |
// Adjusts the length of the dictionary backing store and returns the new |
// length according to ES5 section 15.4.5.2 behavior. |
static MaybeObject* SetLengthWithoutNormalize(SeededNumberDictionary* dict, |
@@ -703,6 +763,10 @@ class DictionaryElementsAccessor |
class NonStrictArgumentsElementsAccessor |
: public ElementsAccessorBase<NonStrictArgumentsElementsAccessor, |
FixedArray> { |
+ public: |
+ explicit NonStrictArgumentsElementsAccessor(const char* name) |
+ : ElementsAccessorBase<NonStrictArgumentsElementsAccessor, |
+ FixedArray>(name) {} |
protected: |
friend class ElementsAccessorBase<NonStrictArgumentsElementsAccessor, |
FixedArray>; |
@@ -866,7 +930,7 @@ void ElementsAccessor::InitializeOncePerProcess() { |
ELEMENTS_LIST(ACCESSOR_STRUCT) |
#undef ACCESSOR_STRUCT |
} element_accessors = { |
-#define ACCESSOR_INIT(Class, Name) new Class(), |
+#define ACCESSOR_INIT(Class, Name) new Class(#Name), |
ELEMENTS_LIST(ACCESSOR_INIT) |
#undef ACCESSOR_INIT |
}; |