summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/scavenger.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/scavenger.h')
-rw-r--r--deps/v8/src/heap/scavenger.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/deps/v8/src/heap/scavenger.h b/deps/v8/src/heap/scavenger.h
index 1437092874..75b24fe282 100644
--- a/deps/v8/src/heap/scavenger.h
+++ b/deps/v8/src/heap/scavenger.h
@@ -28,14 +28,9 @@ class Scavenger {
Scavenger(Heap* heap, bool is_logging, CopiedList* copied_list,
PromotionList* promotion_list, int task_id);
- // Scavenges an object |object| referenced from slot |p|. |object| is required
- // to be in from space.
- inline void ScavengeObject(HeapObject** p, HeapObject* object);
-
- // Potentially scavenges an object referenced from |slot_address| if it is
- // indeed a HeapObject and resides in from space.
- inline SlotCallbackResult CheckAndScavengeObject(Heap* heap,
- Address slot_address);
+ // Entry point for scavenging an old generation page. For scavenging single
+ // objects see RootScavengingVisitor and ScavengeVisitor below.
+ void ScavengePage(MemoryChunk* page);
// Processes remaining work (=objects) after single objects have been
// manually scavenged using ScavengeObject or CheckAndScavengeObject.
@@ -47,10 +42,6 @@ class Scavenger {
size_t bytes_copied() const { return copied_size_; }
size_t bytes_promoted() const { return promoted_size_; }
- void AnnounceLockedPage(MemoryChunk* chunk) {
- allocator_.AnnounceLockedPage(chunk);
- }
-
private:
// Number of objects to process before interrupting for potentially waking
// up other tasks.
@@ -61,6 +52,17 @@ class Scavenger {
inline void PageMemoryFence(Object* object);
+ void AddPageToSweeperIfNecessary(MemoryChunk* page);
+
+ // Potentially scavenges an object referenced from |slot_address| if it is
+ // indeed a HeapObject and resides in from space.
+ inline SlotCallbackResult CheckAndScavengeObject(Heap* heap,
+ Address slot_address);
+
+ // Scavenges an object |object| referenced from slot |p|. |object| is required
+ // to be in from space.
+ inline void ScavengeObject(HeapObject** p, HeapObject* object);
+
// Copies |source| to |target| and sets the forwarding pointer in |source|.
V8_INLINE bool MigrateObject(Map* map, HeapObject* source, HeapObject* target,
int size);
@@ -106,6 +108,8 @@ class Scavenger {
const bool is_compacting_;
friend class IterateAndScavengePromotedObjectsVisitor;
+ friend class RootScavengeVisitor;
+ friend class ScavengeVisitor;
};
// Helper class for turning the scavenger into an object visitor that is also