diff options
Diffstat (limited to 'chromium/v8/src/heap/cppgc/visitor.cc')
-rw-r--r-- | chromium/v8/src/heap/cppgc/visitor.cc | 21 |
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}); } |