Index: third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h |
diff --git a/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h b/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h |
index 5d63592e92ef1e2454323576fc57533e3e97831d..7a8b37fb8e16ac1c10a563751b8b1d0461a9b78e 100644 |
--- a/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h |
+++ b/third_party/WebKit/Source/platform/heap/MarkingVisitorImpl.h |
@@ -57,10 +57,10 @@ class MarkingVisitorImpl { |
markHeader(header, header->payload(), callback); |
} |
- inline void registerDelayedMarkNoTracing(const void* objectPointer) { |
+ inline void registerDelayedMarkNoTracing(void** objectPointer) { |
ASSERT(toDerived()->getMarkingMode() != Visitor::WeakProcessing); |
toDerived()->heap().pushPostMarkingCallback( |
- const_cast<void*>(objectPointer), &markNoTracingCallback); |
+ reinterpret_cast<void*>(objectPointer), &markNoTracingCallback); |
} |
inline void registerWeakMembers(const void* closure, |
@@ -88,6 +88,21 @@ class MarkingVisitorImpl { |
} |
#endif |
+ inline void registerMovingObjectReference(MovableReference* slot) { |
+ if (toDerived()->getMarkingMode() != Visitor::GlobalMarkCompacting) |
+ return; |
+ toDerived()->heap().registerMovingObjectReference(slot); |
+ } |
+ |
+ inline void registerMovingObjectCallback(MovableReference reference, |
+ MovingObjectCallback callback, |
+ void* callbackData) { |
+ if (toDerived()->getMarkingMode() != Visitor::GlobalMarkCompacting) |
+ return; |
+ toDerived()->heap().registerMovingObjectCallback(reference, callback, |
+ callbackData); |
+ } |
+ |
inline bool ensureMarked(const void* objectPointer) { |
if (!objectPointer) |
return false; |
@@ -121,7 +136,11 @@ class MarkingVisitorImpl { |
private: |
static void markNoTracingCallback(Visitor* visitor, void* object) { |
- visitor->markNoTracing(object); |
+ // |object| is really the hash table's slot pointing |
+ // to the backing store table. Adjust types accordingly.. |
+ void** reference = reinterpret_cast<void**>(object); |
+ visitor->markNoTracing(*reference); |
+ visitor->registerBackingStoreReference(reference); |
haraken
2016/11/30 06:29:53
What is this change for? Aren't we registering all
sof
2016/11/30 06:52:43
Not the weakly-held backing stores, which is what
haraken
2016/11/30 07:09:49
What's a reason you need to handle weak backing st
sof
2016/11/30 07:26:38
Keeping their marking and fixup registration toget
|
} |
}; |