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

Unified Diff: Source/heap/Visitor.h

Issue 171843002: [oilpan] Remove GC_INFO_{DEFINE,DECLARE} macros (Closed) Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: rebased Created 6 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
« no previous file with comments | « Source/heap/Heap.h ('k') | Source/heap/tests/HeapTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/heap/Visitor.h
diff --git a/Source/heap/Visitor.h b/Source/heap/Visitor.h
index d80f1952cb2a3a3b32877565d786e47ff8ea21b1..8195794f9a400c4eae63c5a86c2ca5151525c0c3 100644
--- a/Source/heap/Visitor.h
+++ b/Source/heap/Visitor.h
@@ -153,28 +153,10 @@ template<typename T> struct FinalizerTrait {
static void finalize(void* obj) { FinalizerTraitImpl<T, nonTrivialFinalizer>::finalize(obj); }
};
-#define DECLARE_GC_INFO \
-public: \
- static const GCInfo s_gcInfo; \
- template<typename Any> friend struct FinalizerTrait; \
-private: \
-
-#define DEFINE_GC_INFO(Type) \
-const GCInfo Type::s_gcInfo = { \
- #Type, \
- TraceTrait<Type>::trace, \
- FinalizerTrait<Type>::finalize, \
- FinalizerTrait<Type>::nonTrivialFinalizer, \
- CLASSOF_FUNC(Type) \
-}; \
+#define DECLARE_GC_INFO
+#define DEFINE_GC_INFO(Type)
-template<typename T>
-struct GCInfoTrait {
- static const GCInfo* get()
- {
- return &T::s_gcInfo;
- }
-};
+template<typename T> struct GCInfoTrait;
template<typename T>
const char* getTypeMarker()
@@ -554,5 +536,30 @@ public:
}
};
+template<typename T>
+struct GCInfoAtBase {
+ static const GCInfo* get()
+ {
+ static char pseudoTypeMarker = 'a'; // FIXME: This is to be removed
+ static const GCInfo gcInfo = {
+ &pseudoTypeMarker,
+ TraceTrait<T>::trace,
+ FinalizerTrait<T>::finalize,
+ FinalizerTrait<T>::nonTrivialFinalizer,
+ CLASSOF_FUNC(T)
+ };
+ return &gcInfo;
+ }
+};
+
+template<typename T>
+struct GCInfoTrait {
+ static const GCInfo* get()
+ {
+ return GCInfoAtBase<typename T::GarbageCollectedBase>::get();
+ }
+};
+
}
+
#endif
« no previous file with comments | « Source/heap/Heap.h ('k') | Source/heap/tests/HeapTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698