Chromium Code Reviews| Index: third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
| diff --git a/third_party/WebKit/Source/platform/heap/WrapperVisitor.h b/third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
| index 3e0c49b8e52a2a06960fdef4b8a371cf50e6c3f0..7843917b234c9fa6bb3dd54dbe610e1acd0715c6 100644 |
| --- a/third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
| +++ b/third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
| @@ -27,26 +27,12 @@ class TraceWrapperBase; |
| template <typename T> |
| class TraceWrapperMember; |
| -// Only add a special class here if the class cannot derive from |
| -// TraceWrapperBase. |
| -#define WRAPPER_VISITOR_SPECIAL_CLASSES(V) \ |
| - V(ElementRareData) \ |
| - V(NodeListsNodeData) \ |
| - V(NodeMutationObserverData) \ |
| - V(NodeRareData) |
| - |
| -#define FORWARD_DECLARE_SPECIAL_CLASSES(className) class className; |
| - |
| -WRAPPER_VISITOR_SPECIAL_CLASSES(FORWARD_DECLARE_SPECIAL_CLASSES); |
| - |
| -#undef FORWARD_DECLARE_SPECIAL_CLASSES |
| - |
| /** |
| * Declares non-virtual traceWrappers method. Should be used on |
| * non-ScriptWrappable classes which should participate in wrapper tracing (e.g. |
| - * NodeRareData): |
| + * StyleEngine): |
| * |
| - * class NodeRareData { |
| + * class StyleEngine: public TraceWrapperBase { |
| * public: |
| * DECLARE_TRACE_WRAPPERS(); |
| * } |
| @@ -55,6 +41,22 @@ WRAPPER_VISITOR_SPECIAL_CLASSES(FORWARD_DECLARE_SPECIAL_CLASSES); |
| void traceWrappers(const WrapperVisitor* visitor) const |
| /** |
| + * Declares markAndDispatchTraceWrappers and non-virtual traceWrappers methods. |
| + * Use this on non-TraceWrapperBase classes that participate in wrapper tracing |
| + * (e.g. NodeRareData): |
| + * |
| + * class NodeRareData { |
| + * public: |
|
jbroman
2017/03/07 17:46:10
nit: here (and above): "public:" should be indente
adithyas
2017/03/07 18:40:46
Fixed both.
|
| + * DECLARE_TRACE_WRAPPERS_WITHOUT_BASE(); |
| + * } |
| + */ |
| +#define DECLARE_TRACE_WRAPPERS_WITHOUT_BASE() \ |
| + void markAndDispatchTraceWrappers(const WrapperVisitor* visitor) const { \ |
| + traceWrappers(visitor); \ |
| + } \ |
| + DECLARE_TRACE_WRAPPERS() |
| + |
| +/** |
| * Declares virtual traceWrappers method. It is used in ScriptWrappable, can be |
| * used to override the method in the subclasses, and can be used by |
| * non-ScriptWrappable classes which expect to be inherited. |
| @@ -150,22 +152,11 @@ class PLATFORM_EXPORT WrapperVisitor { |
| virtual void markWrapper(const v8::PersistentBase<v8::Value>*) const = 0; |
| virtual void dispatchTraceWrappers(const TraceWrapperBase*) const = 0; |
| -#define DECLARE_DISPATCH_TRACE_WRAPPERS(ClassName) \ |
| - virtual void dispatchTraceWrappers(const ClassName*) const = 0; |
| - |
| - WRAPPER_VISITOR_SPECIAL_CLASSES(DECLARE_DISPATCH_TRACE_WRAPPERS); |
| - |
| -#undef DECLARE_DISPATCH_TRACE_WRAPPERS |
| virtual bool markWrapperHeader(HeapObjectHeader*) const = 0; |
| virtual void markWrappersInAllWorlds(const ScriptWrappable*) const = 0; |
| - void markWrappersInAllWorlds(const void*) const { |
| - // Empty handler used for WRAPPER_VISITOR_SPECIAL_CLASSES. These types |
| - // don't require marking wrappers in all worlds, so just nop on those. |
| - } |
| - |
| template <typename T> |
| ALWAYS_INLINE void markAndPushToMarkingDeque(const T* traceable) const { |
| if (pushToMarkingDeque(TraceTrait<T>::traceMarkedWrapper, |
| @@ -184,17 +175,6 @@ class PLATFORM_EXPORT WrapperVisitor { |
| const void*) const = 0; |
| }; |
| -#define SPECIALIZE_WRAPPER_TRACING_MARK_TRAIT(ClassName) \ |
| - template <> \ |
| - class CanTraceWrappers<ClassName, false> { \ |
| - public: \ |
| - static const bool value = true; \ |
| - }; |
| - |
| -WRAPPER_VISITOR_SPECIAL_CLASSES(SPECIALIZE_WRAPPER_TRACING_MARK_TRAIT) |
| - |
| -#undef SPECIALIZE_WRAPPER_TRACING_MARK_TRAIT |
| - |
| } // namespace blink |
| #endif // WrapperVisitor_h |