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

Unified Diff: third_party/WebKit/Source/platform/heap/GarbageCollected.h

Issue 2595053002: [wrapper-tracing] Simplify tracing by forbidding tracing from within mixins (Closed)
Patch Set: Guard DCHECK with DCHECK_IS_ON() as the method is only conditionally compiled Created 4 years 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 | « no previous file | third_party/WebKit/Source/platform/heap/TraceTraits.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/heap/GarbageCollected.h
diff --git a/third_party/WebKit/Source/platform/heap/GarbageCollected.h b/third_party/WebKit/Source/platform/heap/GarbageCollected.h
index e814c8c0d1a0b3a518b12577051c49a1fc7a0c34..58c9313c60b75b7ea196bdd9396ef077543d2b0e 100644
--- a/third_party/WebKit/Source/platform/heap/GarbageCollected.h
+++ b/third_party/WebKit/Source/platform/heap/GarbageCollected.h
@@ -14,10 +14,8 @@ namespace blink {
template <typename T>
class GarbageCollected;
-class HeapObjectHeader;
class InlinedGlobalMarkingVisitor;
class TraceWrapperBase;
-class WrapperVisitor;
// GC_PLUGIN_IGNORE is used to make the plugin ignore a particular class or
// field when checking for proper usage. When using GC_PLUGIN_IGNORE
@@ -77,11 +75,7 @@ class PLATFORM_EXPORT GarbageCollectedMixin {
virtual void trace(Visitor*) {}
virtual void adjustAndMark(InlinedGlobalMarkingVisitor) const = 0;
virtual void trace(InlinedGlobalMarkingVisitor);
- virtual void adjustAndMarkAndTraceWrapper(const WrapperVisitor*) const = 0;
- virtual void adjustAndMarkWrapperNoTracing(const WrapperVisitor*) const = 0;
- virtual void adjustAndTraceMarkedWrapper(const WrapperVisitor*) const = 0;
virtual bool isHeapObjectAlive() const = 0;
- virtual HeapObjectHeader* adjustAndGetHeapObjectHeader() const = 0;
};
#define DEFINE_GARBAGE_COLLECTED_MIXIN_METHODS(VISITOR, TYPE) \
@@ -104,47 +98,6 @@ class PLATFORM_EXPORT GarbageCollectedMixin {
\
private:
-#define DEFINE_GARBAGE_COLLECTED_MIXIN_WRAPPER_METHODS(TYPE) \
- private: \
- typedef WTF::IsSubclassOfTemplate<typename std::remove_const<TYPE>::type, \
- blink::GarbageCollected> \
- IsSubclassOfGarbageCollected; \
- \
- public: \
- void adjustAndMarkAndTraceWrapper(const WrapperVisitor* visitor) \
- const override { \
- static_assert( \
- IsSubclassOfGarbageCollected::value, \
- "only garbage collected objects can have garbage collected mixins"); \
- return AdjustAndMarkTrait<TYPE>::markAndTraceWrapper( \
- visitor, static_cast<const TYPE*>(this)); \
- } \
- void adjustAndMarkWrapperNoTracing(const WrapperVisitor* visitor) \
- const override { \
- static_assert( \
- IsSubclassOfGarbageCollected::value, \
- "only garbage collected objects can have garbage collected mixins"); \
- return AdjustAndMarkTrait<TYPE>::markWrapperNoTracing( \
- visitor, static_cast<const TYPE*>(this)); \
- } \
- void adjustAndTraceMarkedWrapper(const WrapperVisitor* visitor) \
- const override { \
- static_assert( \
- IsSubclassOfGarbageCollected::value, \
- "only garbage collected objects can have garbage collected mixins"); \
- AdjustAndMarkTrait<TYPE>::traceMarkedWrapper( \
- visitor, static_cast<const TYPE*>(this)); \
- } \
- HeapObjectHeader* adjustAndGetHeapObjectHeader() const override { \
- static_assert( \
- IsSubclassOfGarbageCollected::value, \
- "only garbage collected objects can have garbage collected mixins"); \
- return AdjustAndMarkTrait<TYPE>::heapObjectHeader( \
- static_cast<const TYPE*>(this)); \
- } \
- \
- private:
-
// A C++ object's vptr will be initialized to its leftmost base's vtable after
// the constructors of all its subclasses have run, so if a subclass constructor
// tries to access any of the vtbl entries of its leftmost base prematurely,
@@ -204,7 +157,6 @@ class PLATFORM_EXPORT GarbageCollectedMixin {
DEFINE_GARBAGE_COLLECTED_MIXIN_METHODS(blink::Visitor*, TYPE) \
DEFINE_GARBAGE_COLLECTED_MIXIN_METHODS(blink::InlinedGlobalMarkingVisitor, \
TYPE) \
- DEFINE_GARBAGE_COLLECTED_MIXIN_WRAPPER_METHODS(TYPE) \
DEFINE_GARBAGE_COLLECTED_MIXIN_CONSTRUCTOR_MARKER(TYPE) \
public: \
bool isHeapObjectAlive() const override { \
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/heap/TraceTraits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698