Index: src/global-handles.h |
diff --git a/src/global-handles.h b/src/global-handles.h |
index c89a2aacdd18ab6c4c7f23c8e073d6b989446f52..3477bcaaa9504d2fd370d6a253487ff32e9581ab 100644 |
--- a/src/global-handles.h |
+++ b/src/global-handles.h |
@@ -146,6 +146,9 @@ class GlobalHandles { |
// Clear the weakness of a global handle. |
void ClearWeakness(Object** location); |
+ // Clear the weakness of a global handle. |
+ void MarkIndependent(Object** location); |
+ |
// Tells whether global handle is near death. |
static bool IsNearDeath(Object** location); |
@@ -154,11 +157,14 @@ class GlobalHandles { |
// Process pending weak handles. |
// Returns true if next major GC is likely to collect more garbage. |
- bool PostGarbageCollectionProcessing(); |
+ bool PostGarbageCollectionProcessing(GarbageCollector collector); |
// Iterates over all strong handles. |
void IterateStrongRoots(ObjectVisitor* v); |
+ // Iterates over all strong and dependent handles. |
+ void IterateStrongAndDependentRoots(ObjectVisitor* v); |
+ |
// Iterates over all handles. |
void IterateAllRoots(ObjectVisitor* v); |
@@ -168,6 +174,9 @@ class GlobalHandles { |
// Iterates over all weak roots in heap. |
void IterateWeakRoots(ObjectVisitor* v); |
+ // Iterates over all weak independent roots in heap. |
+ void IterateWeakIndependentRoots(ObjectVisitor* v); |
+ |
// Iterates over weak roots that are bound to a given callback. |
void IterateWeakRoots(WeakReferenceGuest f, |
WeakReferenceCallback callback); |
@@ -176,6 +185,10 @@ class GlobalHandles { |
// them as pending. |
void IdentifyWeakHandles(WeakSlotCallback f); |
+ // Find all weak independent handles satisfying the callback predicate, mark |
+ // them as pending. |
+ void IdentifyWeakIndependentHandles(WeakSlotCallbackWithHeap f); |
+ |
// Add an object group. |
// Should be only used in GC callback function before a collection. |
// All groups are destroyed after a mark-compact collection. |