@@ -236,51 +236,35 @@ void MarkingVisitorBase<ConcreteVisitor>::VisitExternalPointer(
236236 Tagged<HeapObject> host, ExternalPointerSlot slot) {
237237#ifdef V8_COMPRESS_POINTERS
238238 DCHECK (!slot.tag_range ().IsEmpty ());
239- if (!slot.HasExternalPointerHandle ()) {
240- return ;
241- }
242- const ExternalPointerHandle handle = slot.Relaxed_LoadHandle ();
243- ExternalPointerTable* table;
244- ExternalPointerTable::Space* space;
245- if (IsSharedExternalPointerType (slot.tag_range ())) {
246- table = shared_external_pointer_table_;
247- space = shared_external_pointer_space_;
248- } else {
249- table = external_pointer_table_;
250- if constexpr (v8_flags.sticky_mark_bits .value ()) {
251- // Everything is considered old during major GC.
252- DCHECK (!HeapLayout::InYoungGeneration (host));
253- if (handle == kNullExternalPointerHandle ) return ;
254- // The object may either be in young or old EPT.
255- if (table->Contains (heap_->young_external_pointer_space (), handle)) {
256- space = heap_->young_external_pointer_space ();
239+ if (slot.HasExternalPointerHandle ()) {
240+ ExternalPointerHandle handle = slot.Relaxed_LoadHandle ();
241+ ExternalPointerTable* table;
242+ ExternalPointerTable::Space* space;
243+ if (IsSharedExternalPointerType (slot.tag_range ())) {
244+ table = shared_external_pointer_table_;
245+ space = shared_external_pointer_space_;
246+ } else {
247+ table = external_pointer_table_;
248+ if (v8_flags.sticky_mark_bits ) {
249+ // Everything is considered old during major GC.
250+ DCHECK (!HeapLayout::InYoungGeneration (host));
251+ if (handle == kNullExternalPointerHandle ) return ;
252+ // The object may either be in young or old EPT.
253+ if (table->Contains (heap_->young_external_pointer_space (), handle)) {
254+ space = heap_->young_external_pointer_space ();
255+ } else {
256+ DCHECK (table->Contains (heap_->old_external_pointer_space (), handle));
257+ space = heap_->old_external_pointer_space ();
258+ }
257259 } else {
258- DCHECK (table->Contains (heap_->old_external_pointer_space (), handle));
259- space = heap_->old_external_pointer_space ();
260+ space = HeapLayout::InYoungGeneration (host)
261+ ? heap_->young_external_pointer_space ()
262+ : heap_->old_external_pointer_space ();
260263 }
261- } else {
262- space = HeapLayout::InYoungGeneration (host)
263- ? heap_->young_external_pointer_space ()
264- : heap_->old_external_pointer_space ();
265264 }
265+ table->Mark (space, handle, slot.address ());
266266 }
267- table->Mark (space, handle, slot.address ());
268- if (slot.tag_range () != kArrayBufferExtensionTag ) {
269- return ;
270- }
271- Address maybe_extension = table->Get (handle, slot.tag_range ());
272- #else // !V8_COMPRESS_POINTERS
273- if (slot.tag_range () != kArrayBufferExtensionTag ) {
274- return ;
275- }
276- Address maybe_extension = slot.load (heap_->isolate ());
277- #endif // !V8_COMPRESS_POINTERS
278- if (maybe_extension) {
279- ArrayBufferExtension* extension =
280- reinterpret_cast <ArrayBufferExtension*>(maybe_extension);
281- extension->InitializationBarrier ();
282- extension->Mark ();
283- }
267+ #endif // V8_COMPRESS_POINTERS
284268}
285269
286270template <typename ConcreteVisitor>
@@ -676,6 +660,18 @@ size_t MarkingVisitorBase<ConcreteVisitor>::VisitFixedArray(
676660 : Base::VisitFixedArray (map, object, maybe_object_size);
677661}
678662
663+ // ===========================================================================
664+ // Custom visitation =========================================================
665+ // ===========================================================================
666+
667+ template <typename ConcreteVisitor>
668+ size_t MarkingVisitorBase<ConcreteVisitor>::VisitJSArrayBuffer(
669+ Tagged<Map> map, Tagged<JSArrayBuffer> object,
670+ MaybeObjectSize maybe_object_size) {
671+ object->MarkExtension ();
672+ return Base::VisitJSArrayBuffer (map, object, maybe_object_size);
673+ }
674+
679675// ===========================================================================
680676// Weak JavaScript objects ===================================================
681677// ===========================================================================
0 commit comments