summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/objects-visiting-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/objects-visiting-inl.h')
-rw-r--r--deps/v8/src/heap/objects-visiting-inl.h13
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);
}