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

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

Issue 2531973002: Simple BlinkGC heap compaction. (Closed)
Patch Set: add pointer alignment handling to SparseHeapBitmap 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
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/12/09 07:25:56 How about simply calling registerBackingStoreRefer
sof 2016/12/09 21:44:04 It would reduce the footprint of this change, but
}
};

Powered by Google App Engine
This is Rietveld 408576698