Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: src/elements.cc

Issue 9618003: Automatically determine ElementsKind name for debug printing (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/elements.h ('K') | « src/elements.h ('k') | src/objects.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
};
« src/elements.h ('K') | « src/elements.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698