| Index: third_party/WebKit/Source/bindings/core/v8/ScriptWrappableVisitor.h
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptWrappableVisitor.h b/third_party/WebKit/Source/bindings/core/v8/ScriptWrappableVisitor.h
|
| index f350c602afbe49d27795d4d93ae659500e64be23..f075b5a9c9e257f0968b8ca5fb018d71a033b971 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/ScriptWrappableVisitor.h
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptWrappableVisitor.h
|
| @@ -30,17 +30,17 @@ public:
|
| const void* object)
|
| : m_traceWrappersCallback(traceWrappersCallback)
|
| , m_heapObjectHeaderCallback(heapObjectHeaderCallback)
|
| - , m_object(object)
|
| + , m_rawObjectPointer(object)
|
| {
|
| DCHECK(m_traceWrappersCallback);
|
| DCHECK(m_heapObjectHeaderCallback);
|
| - DCHECK(m_object);
|
| + DCHECK(m_rawObjectPointer);
|
| }
|
|
|
| inline void traceWrappers(WrapperVisitor* visitor)
|
| {
|
| - if (m_object) {
|
| - m_traceWrappersCallback(visitor, m_object);
|
| + if (m_rawObjectPointer) {
|
| + m_traceWrappersCallback(visitor, m_rawObjectPointer);
|
| }
|
| }
|
|
|
| @@ -50,29 +50,35 @@ public:
|
| */
|
| inline bool isWrapperHeaderMarked()
|
| {
|
| - return !m_object || heapObjectHeader()->isWrapperHeaderMarked();
|
| + return !m_rawObjectPointer || heapObjectHeader()->isWrapperHeaderMarked();
|
| }
|
|
|
| + /**
|
| + * Returns raw object pointer. Beware it doesn't necessarily point to the
|
| + * beginning of the object.
|
| + */
|
| + const void* rawObjectPointer() { return m_rawObjectPointer; }
|
| +
|
| private:
|
| inline bool shouldBeInvalidated()
|
| {
|
| - return m_object && !heapObjectHeader()->isMarked();
|
| + return m_rawObjectPointer && !heapObjectHeader()->isMarked();
|
| }
|
|
|
| inline void invalidate()
|
| {
|
| - m_object = nullptr;
|
| + m_rawObjectPointer = nullptr;
|
| }
|
|
|
| inline const HeapObjectHeader* heapObjectHeader()
|
| {
|
| - DCHECK(m_object);
|
| - return m_heapObjectHeaderCallback(m_object);
|
| + DCHECK(m_rawObjectPointer);
|
| + return m_heapObjectHeaderCallback(m_rawObjectPointer);
|
| }
|
|
|
| void (*m_traceWrappersCallback)(const WrapperVisitor*, const void*);
|
| HeapObjectHeader* (*m_heapObjectHeaderCallback)(const void*);
|
| - const void* m_object;
|
| + const void* m_rawObjectPointer;
|
| };
|
|
|
| /**
|
| @@ -151,6 +157,10 @@ public:
|
| void markWrappersInAllWorlds(const ScriptWrappable*) const override;
|
| void markWrappersInAllWorlds(const void*) const override {}
|
|
|
| + WTF::Deque<WrapperMarkingData>* getMarkingDeque() { return &m_markingDeque; }
|
| + WTF::Deque<WrapperMarkingData>* getVerifierDeque() { return &m_verifierDeque; }
|
| + WTF::Vector<HeapObjectHeader*>* getHeadersToUnmark() { return &m_headersToUnmark; }
|
| +
|
| private:
|
| /**
|
| * Is wrapper tracing currently in progress? True if TracePrologue has been
|
|
|