summaryrefslogtreecommitdiff
path: root/chromium/v8/src/heap/cppgc/visitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/heap/cppgc/visitor.cc')
-rw-r--r--chromium/v8/src/heap/cppgc/visitor.cc21
1 files changed, 10 insertions, 11 deletions
diff --git a/chromium/v8/src/heap/cppgc/visitor.cc b/chromium/v8/src/heap/cppgc/visitor.cc
index 33786f6fce3..9d90e4ab3e3 100644
--- a/chromium/v8/src/heap/cppgc/visitor.cc
+++ b/chromium/v8/src/heap/cppgc/visitor.cc
@@ -4,11 +4,12 @@
#include "src/heap/cppgc/visitor.h"
+#include "src/base/sanitizer/msan.h"
#include "src/heap/cppgc/gc-info-table.h"
#include "src/heap/cppgc/heap-object-header.h"
#include "src/heap/cppgc/heap-page.h"
+#include "src/heap/cppgc/object-view.h"
#include "src/heap/cppgc/page-memory.h"
-#include "src/heap/cppgc/sanitizers.h"
namespace cppgc {
@@ -29,15 +30,15 @@ namespace {
void TraceConservatively(ConservativeTracingVisitor* conservative_visitor,
const HeapObjectHeader& header) {
- Address* payload = reinterpret_cast<Address*>(header.Payload());
- const size_t payload_size = header.GetSize();
- for (size_t i = 0; i < (payload_size / sizeof(Address)); ++i) {
- Address maybe_ptr = payload[i];
+ const auto object_view = ObjectView(header);
+ Address* object = reinterpret_cast<Address*>(object_view.Start());
+ for (size_t i = 0; i < (object_view.Size() / sizeof(Address)); ++i) {
+ Address maybe_ptr = object[i];
#if defined(MEMORY_SANITIZER)
- // |payload| may be uninitialized by design or just contain padding bytes.
+ // |object| may be uninitialized by design or just contain padding bytes.
// Copy into a local variable that is not poisoned for conservative marking.
// Copy into a temporary variable to maintain the original MSAN state.
- MSAN_UNPOISON(&maybe_ptr, sizeof(maybe_ptr));
+ MSAN_MEMORY_IS_INITIALIZED(&maybe_ptr, sizeof(maybe_ptr));
#endif
if (maybe_ptr) {
conservative_visitor->TraceConservativelyIfNeeded(maybe_ptr);
@@ -49,8 +50,6 @@ void TraceConservatively(ConservativeTracingVisitor* conservative_visitor,
void ConservativeTracingVisitor::TraceConservativelyIfNeeded(
const void* address) {
- // TODO(chromium:1056170): Add page bloom filter
-
const BasePage* page = reinterpret_cast<const BasePage*>(
page_backend_.Lookup(static_cast<ConstAddress>(address)));
@@ -78,8 +77,8 @@ void ConservativeTracingVisitor::TraceConservativelyIfNeeded(
void ConservativeTracingVisitor::VisitFullyConstructedConservatively(
HeapObjectHeader& header) {
visitor_.Visit(
- header.Payload(),
- {header.Payload(),
+ header.ObjectStart(),
+ {header.ObjectStart(),
GlobalGCInfoTable::GCInfoFromIndex(header.GetGCInfoIndex()).trace});
}