15void IterateObjectCache(Isolate* isolate, std::vector<
Tagged<Object>>* cache,
16 Root root_id, RootVisitor* visitor) {
17 for (
size_t i = 0;; ++
i) {
19 if (cache->size() <=
i) cache->push_back(
Smi::zero());
22 visitor->VisitRootPointer(root_id,
nullptr, FullObjectSlot(&cache->at(
i)));
25 Tagged<Object> undefined = ReadOnlyRoots(isolate).undefined_value();
26 if (cache->at(
i).SafeEquals(undefined))
break;
38 IterateObjectCache(isolate, isolate->startup_object_cache(),
39 Root::kStartupObjectCache, visitor);
44 IterateObjectCache(isolate, isolate->shared_heap_object_cache(),
45 Root::kSharedHeapObjectCache, visitor);
69 return !IsInternalizedString(o) &&
70 !(IsJSObject(o) &&
Cast<JSObject>(o)->GetEmbedderFieldCount() > 0) &&
78 accessor_info->init_getter_redirection(isolate);
84 function_template_info->init_callback_redirection(isolate);
static void IterateStartupObjectCache(Isolate *isolate, RootVisitor *visitor)
void RestoreExternalReferenceRedirector(Isolate *isolate, Tagged< AccessorInfo > accessor_info)
static void IterateSharedHeapObjectCache(Isolate *isolate, RootVisitor *visitor)
static bool CanBeDeferred(Tagged< HeapObject > o, SlotType slot_type)
static constexpr Tagged< Smi > zero()
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
#define DCHECK(condition)