@@ -354,6 +354,7 @@ void LargeObjectSpace::Verify(Isolate* isolate) {
354354 external_backing_store_bytes[static_cast <ExternalBackingStoreType>(i)] = 0 ;
355355 }
356356
357+ PtrComprCageBase cage_base (isolate);
357358 for (LargePage* chunk = first_page (); chunk != nullptr ;
358359 chunk = chunk->next_page ()) {
359360 // Each chunk contains an object that starts at the large object page's
@@ -364,23 +365,26 @@ void LargeObjectSpace::Verify(Isolate* isolate) {
364365
365366 // The first word should be a map, and we expect all map pointers to be
366367 // in map space or read-only space.
367- Map map = object.map ();
368- CHECK (map.IsMap ());
368+ Map map = object.map (cage_base );
369+ CHECK (map.IsMap (cage_base ));
369370 CHECK (ReadOnlyHeap::Contains (map) || heap ()->map_space ()->Contains (map));
370371
371372 // We have only the following types in the large object space:
372- if (!(object.IsAbstractCode () || object.IsSeqString () ||
373- object.IsExternalString () || object.IsThinString () ||
374- object.IsFixedArray () || object.IsFixedDoubleArray () ||
375- object.IsWeakFixedArray () || object.IsWeakArrayList () ||
376- object.IsPropertyArray () || object.IsByteArray () ||
377- object.IsFeedbackVector () || object.IsBigInt () ||
378- object.IsFreeSpace () || object.IsFeedbackMetadata () ||
379- object.IsContext () || object.IsUncompiledDataWithoutPreparseData () ||
380- object.IsPreparseData ()) &&
373+ if (!(object.IsAbstractCode (cage_base) || object.IsSeqString (cage_base) ||
374+ object.IsExternalString (cage_base) ||
375+ object.IsThinString (cage_base) || object.IsFixedArray (cage_base) ||
376+ object.IsFixedDoubleArray (cage_base) ||
377+ object.IsWeakFixedArray (cage_base) ||
378+ object.IsWeakArrayList (cage_base) ||
379+ object.IsPropertyArray (cage_base) || object.IsByteArray (cage_base) ||
380+ object.IsFeedbackVector (cage_base) || object.IsBigInt (cage_base) ||
381+ object.IsFreeSpace (cage_base) ||
382+ object.IsFeedbackMetadata (cage_base) || object.IsContext (cage_base) ||
383+ object.IsUncompiledDataWithoutPreparseData (cage_base) ||
384+ object.IsPreparseData (cage_base)) &&
381385 !FLAG_young_generation_large_objects) {
382386 FATAL (" Found invalid Object (instance_type=%i) in large object space." ,
383- object.map ().instance_type ());
387+ object.map (cage_base ).instance_type ());
384388 }
385389
386390 // The object itself should look OK.
@@ -391,27 +395,27 @@ void LargeObjectSpace::Verify(Isolate* isolate) {
391395 }
392396
393397 // Byte arrays and strings don't have interior pointers.
394- if (object.IsAbstractCode ()) {
398+ if (object.IsAbstractCode (cage_base )) {
395399 VerifyPointersVisitor code_visitor (heap ());
396400 object.IterateBody (map, object.Size (), &code_visitor);
397- } else if (object.IsFixedArray ()) {
401+ } else if (object.IsFixedArray (cage_base )) {
398402 FixedArray array = FixedArray::cast (object);
399403 for (int j = 0 ; j < array.length (); j++) {
400404 Object element = array.get (j);
401405 if (element.IsHeapObject ()) {
402406 HeapObject element_object = HeapObject::cast (element);
403407 CHECK (IsValidHeapObject (heap (), element_object));
404- CHECK (element_object.map ().IsMap ());
408+ CHECK (element_object.map (cage_base ).IsMap (cage_base ));
405409 }
406410 }
407- } else if (object.IsPropertyArray ()) {
411+ } else if (object.IsPropertyArray (cage_base )) {
408412 PropertyArray array = PropertyArray::cast (object);
409413 for (int j = 0 ; j < array.length (); j++) {
410414 Object property = array.get (j);
411415 if (property.IsHeapObject ()) {
412416 HeapObject property_object = HeapObject::cast (property);
413417 CHECK (heap ()->Contains (property_object));
414- CHECK (property_object.map ().IsMap ());
418+ CHECK (property_object.map (cage_base ).IsMap (cage_base ));
415419 }
416420 }
417421 }
0 commit comments