Chromium Code Reviews| Index: src/elements.cc |
| diff --git a/src/elements.cc b/src/elements.cc |
| index 63bf0907417790390a22c930fca7dd02cdd57953..6046ffd4c4406d55ab80ed94f4976da6f6ebf608 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() { } |
| + ElementsAccessorBase(const char* name) : ElementsAccessor(name) { } |
| virtual MaybeObject* Get(FixedArrayBase* backing_store, |
| uint32_t key, |
| JSObject* obj, |
| @@ -280,6 +280,9 @@ 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 +342,11 @@ class FastObjectElementsAccessor |
| FixedArray, |
| kPointerSize> { |
| public: |
| + FastObjectElementsAccessor(const char* name) |
|
Jakob Kummerow
2012/03/06 10:07:42
explicit
|
| + : FastElementsAccessor<FastObjectElementsAccessor, |
| + FixedArray, |
| + kPointerSize>(name) {} |
| + |
| static MaybeObject* DeleteCommon(JSObject* obj, |
| uint32_t key) { |
| ASSERT(obj->HasFastElements() || |
| @@ -414,6 +422,12 @@ class FastDoubleElementsAccessor |
| : public FastElementsAccessor<FastDoubleElementsAccessor, |
| FixedDoubleArray, |
| kDoubleSize> { |
| + public: |
| + FastDoubleElementsAccessor(const char* name) |
|
Jakob Kummerow
2012/03/06 10:07:42
explicit
|
| + : FastElementsAccessor<FastDoubleElementsAccessor, |
| + FixedDoubleArray, |
| + kDoubleSize>(name) {} |
| + |
| static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, |
| uint32_t capacity, |
| uint32_t length) { |
| @@ -454,6 +468,11 @@ template<typename ExternalElementsAccessorSubclass, |
| class ExternalElementsAccessor |
| : public ElementsAccessorBase<ExternalElementsAccessorSubclass, |
| ExternalArray> { |
| + public: |
| + ExternalElementsAccessor(const char* name) |
|
Jakob Kummerow
2012/03/06 10:07:42
explicit
|
| + : ElementsAccessorBase<ExternalElementsAccessorSubclass, |
| + ExternalArray>(name) {} |
| + |
| protected: |
| friend class ElementsAccessorBase<ExternalElementsAccessorSubclass, |
| ExternalArray>; |
| @@ -497,54 +516,91 @@ class ExternalElementsAccessor |
| class ExternalByteElementsAccessor |
| : public ExternalElementsAccessor<ExternalByteElementsAccessor, |
| ExternalByteArray> { |
| + public: |
| + ExternalByteElementsAccessor(const char* name) |
|
Jakob Kummerow
2012/03/06 10:07:42
make ALL the ctors explicit! (more below)
|
| + : ExternalElementsAccessor<ExternalByteElementsAccessor, |
| + ExternalByteArray>(name) {} |
| }; |
| class ExternalUnsignedByteElementsAccessor |
| : public ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, |
| ExternalUnsignedByteArray> { |
| + public: |
| + ExternalUnsignedByteElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, |
| + ExternalUnsignedByteArray>(name) {} |
| }; |
| class ExternalShortElementsAccessor |
| : public ExternalElementsAccessor<ExternalShortElementsAccessor, |
| ExternalShortArray> { |
| + public: |
| + ExternalShortElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalShortElementsAccessor, |
| + ExternalShortArray>(name) {} |
| }; |
| class ExternalUnsignedShortElementsAccessor |
| : public ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, |
| ExternalUnsignedShortArray> { |
| + public: |
| + ExternalUnsignedShortElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, |
| + ExternalUnsignedShortArray>(name) {} |
| }; |
| class ExternalIntElementsAccessor |
| : public ExternalElementsAccessor<ExternalIntElementsAccessor, |
| ExternalIntArray> { |
| + public: |
| + ExternalIntElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalIntElementsAccessor, |
| + ExternalIntArray>(name) {} |
| }; |
| class ExternalUnsignedIntElementsAccessor |
| : public ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, |
| ExternalUnsignedIntArray> { |
| + public: |
| + ExternalUnsignedIntElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, |
| + ExternalUnsignedIntArray>(name) {} |
| + |
| }; |
| class ExternalFloatElementsAccessor |
| : public ExternalElementsAccessor<ExternalFloatElementsAccessor, |
| ExternalFloatArray> { |
| + public: |
| + ExternalFloatElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalFloatElementsAccessor, |
| + ExternalFloatArray>(name) {} |
| }; |
| class ExternalDoubleElementsAccessor |
| : public ExternalElementsAccessor<ExternalDoubleElementsAccessor, |
| ExternalDoubleArray> { |
| + public: |
| + ExternalDoubleElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<ExternalDoubleElementsAccessor, |
| + ExternalDoubleArray>(name) {} |
| }; |
| class PixelElementsAccessor |
| : public ExternalElementsAccessor<PixelElementsAccessor, |
| ExternalPixelArray> { |
| + public: |
| + PixelElementsAccessor(const char* name) |
| + : ExternalElementsAccessor<PixelElementsAccessor, |
| + ExternalPixelArray>(name) {} |
| }; |
| @@ -552,6 +608,10 @@ class DictionaryElementsAccessor |
| : public ElementsAccessorBase<DictionaryElementsAccessor, |
| SeededNumberDictionary> { |
| public: |
| + 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: |
| + 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 |
| }; |