summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/conservative-stack-visitor.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/conservative-stack-visitor.h')
-rw-r--r--deps/v8/src/heap/conservative-stack-visitor.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/deps/v8/src/heap/conservative-stack-visitor.h b/deps/v8/src/heap/conservative-stack-visitor.h
index e63ba5b673..432af420c1 100644
--- a/deps/v8/src/heap/conservative-stack-visitor.h
+++ b/deps/v8/src/heap/conservative-stack-visitor.h
@@ -6,11 +6,13 @@
#define V8_HEAP_CONSERVATIVE_STACK_VISITOR_H_
#include "include/v8-internal.h"
+#include "src/common/globals.h"
#include "src/heap/base/stack.h"
namespace v8 {
namespace internal {
+class MemoryAllocator;
class RootVisitor;
class V8_EXPORT_PRIVATE ConservativeStackVisitor
@@ -20,11 +22,25 @@ class V8_EXPORT_PRIVATE ConservativeStackVisitor
void VisitPointer(const void* pointer) final;
+ // This method finds an object header based on a `maybe_inner_ptr`. It returns
+ // `kNullAddress` if the parameter does not point to (the interior of) a valid
+ // heap object, or if it points to (the interior of) some object that is
+ // already marked as live (black or grey).
+ // The GarbageCollector parameter is only used to determine which kind of
+ // heap objects we are interested in. For MARK_COMPACTOR all heap objects are
+ // considered, whereas for young generation collectors we only consider
+ // objects in the young generation.
+ static Address FindBasePtrForMarking(Address maybe_inner_ptr,
+ MemoryAllocator* allocator,
+ GarbageCollector collector);
+
private:
void VisitConservativelyIfPointer(Address address);
- Isolate* isolate_ = nullptr;
- RootVisitor* delegate_ = nullptr;
+ const PtrComprCageBase cage_base_;
+ RootVisitor* const delegate_;
+ MemoryAllocator* const allocator_;
+ const GarbageCollector collector_;
};
} // namespace internal