diff options
Diffstat (limited to 'deps/v8/src/heap/objects-visiting-inl.h')
-rw-r--r-- | deps/v8/src/heap/objects-visiting-inl.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/deps/v8/src/heap/objects-visiting-inl.h b/deps/v8/src/heap/objects-visiting-inl.h index 715b83b9ac..b3770fc6c8 100644 --- a/deps/v8/src/heap/objects-visiting-inl.h +++ b/deps/v8/src/heap/objects-visiting-inl.h @@ -133,6 +133,19 @@ ResultType HeapVisitor<ResultType, ConcreteVisitor>::VisitDataObject( if (visitor->ShouldVisitMapPointer()) { visitor->VisitMapPointer(object); } +#ifdef V8_SANDBOXED_EXTERNAL_POINTERS + // The following types have external pointers, which must be visited. + // TODO(v8:10391) Consider adding custom visitor IDs for these. + if (object.IsExternalOneByteString()) { + ExternalOneByteString::BodyDescriptor::IterateBody(map, object, size, + visitor); + } else if (object.IsExternalTwoByteString()) { + ExternalTwoByteString::BodyDescriptor::IterateBody(map, object, size, + visitor); + } else if (object.IsForeign()) { + Foreign::BodyDescriptor::IterateBody(map, object, size, visitor); + } +#endif // V8_SANDBOXED_EXTERNAL_POINTERS return static_cast<ResultType>(size); } |