Lines Matching refs:object
36 // kSmi: The underlying V8 object is a Smi and the data is an instance of the
38 // object is a Smi, it's safe to access the handle in order to extract the
41 // kBackgroundSerializedHeapObject: The underlying V8 object is a HeapObject
44 // object. Allows serialization from the background thread.
46 // kUnserializedHeapObject: The underlying V8 object is a HeapObject and the
50 // kNeverSerializedHeapObject: The underlying V8 object is a (potentially
53 // handle, the object can be accessed concurrently to the main thread.
55 // kUnserializedReadOnlyHeapObject: The underlying V8 object is a read-only
70 HeapObject object) {
75 return (object.IsCode(cage_base) && Code::cast(object).is_builtin()) ||
76 ReadOnlyHeap::Contains(object);
83 ObjectData(JSHeapBroker* broker, ObjectData** storage, Handle<Object> object,
85 : object_(object),
92 // This assignment ensures we don't end up inserting the same object
96 TRACE(broker, "Creating data " << this << " for handle " << object.address()
97 << " (" << Brief(*object) << ")");
116 object->IsHeapObject() && IsReadOnlyHeapObjectForCompiler(
117 isolate, HeapObject::cast(*object)));
128 Handle<Object> object() const { return object_; }
153 Handle<HeapObject> object, ObjectDataKind kind);
168 Handle<PropertyCell> object, ObjectDataKind kind);
218 Handle<PropertyCell> object,
220 : HeapObjectData(broker, storage, object, kind) {}
226 auto cell = Handle<PropertyCell>::cast(object());
278 Handle<JSReceiver> object, ObjectDataKind kind)
279 : HeapObjectData(broker, storage, object, kind) {}
285 Handle<JSObject> object, ObjectDataKind kind)
286 : JSReceiverData(broker, storage, object, kind) {}
301 // happen if the Ref was created in a prior GC epoch, and the object
304 Map map = holder.object()->map(cage_base, kAcquireLoad);
305 if (*holder.map().object() != map) {
312 holder.object()->RawInobjectPropertyAt(cage_base, map, field_index);
320 holder.object()->raw_properties_or_hash(cage_base, kRelaxedLoad);
321 // Ensure that the object is safe to inspect.
354 << representation << ", but object is a "
368 // object, we are guaranteed to see valid heap words even if the data is wrong.
375 // object.
390 Handle<JSTypedArray> object, ObjectDataKind kind)
391 : JSObjectData(broker, storage, object, kind) {}
397 Handle<JSDataView> object, ObjectDataKind kind)
398 : JSObjectData(broker, storage, object, kind) {}
404 Handle<JSBoundFunction> object, ObjectDataKind kind)
405 : JSObjectData(broker, storage, object, kind) {}
411 Handle<JSFunction> object, ObjectDataKind kind)
412 : JSObjectData(broker, storage, object, kind) {
504 BigIntData(JSHeapBroker* broker, ObjectData** storage, Handle<BigInt> object,
506 : HeapObjectData(broker, storage, object, kind),
507 as_uint64_(object->AsUint64(nullptr)) {}
522 MapData(JSHeapBroker* broker, ObjectData** storage, Handle<Map> object,
558 maps.push_back(map.object());
564 DCHECK(map.object()->GetBackPointer().IsUndefined(broker->isolate()));
567 TransitionsAccessor(broker->isolate(), *map.object(), kConcurrentAccess)
581 return map.object()->InstanceSizeFromSlack(slack);
591 Handle<JSFunction> function = Handle<JSFunction>::cast(object());
597 // guaranteed to see an initialized JSFunction object, and after
631 broker, Handle<Map>::cast(initial_map_->object())->prototype())
634 !Handle<HeapObject>::cast(prototype_or_initial_map_->object())
656 Handle<JSFunction> f = Handle<JSFunction>::cast(object());
658 CHECK_EQ(*context_->object(), f->context());
659 CHECK_EQ(*shared_->object(), f->shared());
663 *prototype_or_initial_map_->object() !=
685 *initial_map_->object() != f->initial_map()) {
702 *instance_prototype_->object() != f->instance_prototype()) {
717 *feedback_cell_->object() != f->raw_feedback_cell()) {
731 Handle<HeapObject> object, ObjectDataKind kind)
732 : ObjectData(broker, storage, object, kind),
734 object->map(broker->cage_base(), kAcquireLoad), kAssumeMemoryFence)) {
744 result.value() == object()->BooleanValue(broker->isolate()));
751 Object o = *object();
761 return false; // Undetectable object is false.
776 return Handle<Map>::cast(map_data->object())->instance_type();
814 MapData::MapData(JSHeapBroker* broker, ObjectData** storage, Handle<Map> object,
816 : HeapObjectData(broker, storage, object, kind) {
818 // while the lock is held the Map object may not be modified (except in
828 instance_type_ = object->instance_type();
829 instance_size_ = object->instance_size();
839 bit_field3_ = object->relaxed_bit_field3();
840 unused_property_fields_ = object->UnusedPropertyFields();
841 is_abandoned_prototype_map_ = object->is_abandoned_prototype_map();
843 object->IsJSObjectMap() ? object->GetInObjectProperties() : 0;
849 Handle<FixedArrayBase> object, ObjectDataKind kind)
850 : HeapObjectData(broker, storage, object, kind),
851 length_(object->length(kAcquireLoad)) {}
862 Handle<FixedArray> object, ObjectDataKind kind)
863 : FixedArrayBaseData(broker, storage, object, kind) {}
870 Handle<ScriptContextTable> object, ObjectDataKind kind)
871 : FixedArrayData(broker, storage, object, kind) {}
877 Handle<JSArray> object, ObjectDataKind kind)
878 : JSObjectData(broker, storage, object, kind) {}
884 Handle<JSGlobalObject> object, ObjectDataKind kind)
885 : JSObjectData(broker, storage, object, kind) {}
891 Handle<JSGlobalProxy> object, ObjectDataKind kind)
892 : JSObjectData(broker, storage, object, kind) {}
898 return object()->Is##Name(); \
926 Context current = *object();
939 if (index >= object()->length(kRelaxedLoad)) return {};
940 return TryMakeRef(broker(), object()->get(index));
957 SetTargetNativeContextRef(target_native_context().object());
973 ObjectData* JSHeapBroker::TryGetOrCreateData(Handle<Object> object,
975 RefsMap::Entry* entry = refs_->Lookup(object.address());
979 entry = refs_->LookupOrInsert(object.address());
983 this, storage, object,
984 object->IsSmi() ? kSmi : kUnserializedHeapObject);
993 if (object->IsSmi()) {
994 entry = refs_->LookupOrInsert(object.address());
995 return zone()->New<ObjectData>(this, &entry->value, object, kSmi);
998 DCHECK(!object->IsSmi());
1003 ObjectMayBeUninitialized(HeapObject::cast(*object))) {
1004 TRACE_BROKER_MISSING(this, "Object may be uninitialized " << *object);
1009 if (IsReadOnlyHeapObjectForCompiler(isolate(), HeapObject::cast(*object))) {
1010 entry = refs_->LookupOrInsert(object.address());
1011 return zone()->New<ObjectData>(this, &entry->value, object,
1016 if (object->Is##Name()) { \
1017 entry = refs_->LookupOrInsert(object.address()); \
1019 this, &entry->value, Handle<Name>::cast(object), \
1030 DCHECK_EQ(object_data, refs_->Lookup(object.address())->value);
1048 return Handle<Smi>::cast(object())->value();
1076 broker()->isolate(), object(), kind, ConcurrencyMode::kConcurrent);
1083 CHECK_EQ(Map::TryAsElementsKind(broker()->isolate(), object(), kind,
1086 *native_context.GetInitialJSArrayMap(kind).object());
1113 return SupportsFastArrayIteration(broker(), object());
1117 return SupportsFastArrayResize(broker(), object());
1142 return object()->ComputeInstanceSizeWithMinSlack(broker()->isolate());
1179 object()->closure_feedback_cell(index));
1183 return TryMakeRef(broker(), object()->raw_properties_or_hash());
1193 Map current_map = object()->map(cage_base, kAcquireLoad);
1197 if (*map().object() != current_map) {
1203 object()->RawInobjectPropertyAt(cage_base, current_map, index);
1215 return !ObjectInYoungGeneration(*elements.object());
1220 FieldIndex result = FieldIndex::ForDescriptor(*object(), descriptor_index);
1226 return object()->GetInObjectPropertyOffset(i);
1257 object()->FindFieldOwner(broker()->isolate(), descriptor_index));
1264 &maybe_char, broker()->isolate(), broker()->local_isolate(), *object(),
1278 return IsInternalizedString() || object()->IsThinString();
1288 return object();
1299 return object()->length(kAcquireLoad);
1314 return object()->Get(index, broker()->local_isolate());
1318 return object()->Get(index);
1330 return TryStringToDouble(broker()->local_isolate(), object());
1334 return object()->constant_elements().length();
1342 value = broker()->CanonicalPersistentHandle(object()->get(i, kAcquireLoad));
1343 if (i >= object()->length(kAcquireLoad)) {
1356 return Float64::FromBits(object()->get_representation(i));
1360 return broker()->CanonicalPersistentHandle(object()->SourcePositionTable());
1365 object()->handler_table().GetDataStartAddress());
1369 return object()->handler_table().length();
1374 return object()->name(); \
1379 return MakeRef(broker(), result::cast(object()->name())); \
1405 result holder##Ref::name() const { return object()->name(); }
1409 return object()->name(); \
1413 return MakeRefAssumeMemoryFence(broker(), object()->nested_site());
1424 return object()->register_count();
1427 return object()->parameter_count();
1431 return object()->incoming_new_target_or_generator_register();
1439 return object()->value_as_bits(kRelaxedLoad);
1444 return MakeRefAssumeMemoryFence(broker(), object()->bound_target_function());
1449 return MakeRefAssumeMemoryFence(broker(), object()->bound_this());
1454 return MakeRefAssumeMemoryFence(broker(), object()->bound_arguments());
1483 int ObjectBoilerplateDescriptionRef::size() const { return object()->size(); }
1490 return MakeRefAssumeMemoryFence(broker(), object()->data());
1495 return MakeRefAssumeMemoryFence(broker(), object()->source());
1498 int RegExpBoilerplateDescriptionRef::flags() const { return object()->flags(); }
1501 HeapObject call_code = object()->call_code(kAcquireLoad);
1507 return object()->signature().IsUndefined(broker()->isolate());
1516 !object()->accept_any_receiver())) {
1523 HeapObject signature = object()->signature();
1529 if (expected_receiver_type->IsTemplateFor(*receiver_map.object())) {
1537 if (!expected_receiver_type->IsTemplateFor(prototype.object()->map())) {
1545 return MakeRefAssumeMemoryFence(broker(), object()->data());
1553 return MakeRefAssumeMemoryFence(broker(), object()->OuterScopeInfo());
1562 bytecode_array = object()->GetBytecodeArray(broker()->local_isolate());
1564 bytecode_array = object()->GetBytecodeArray(broker()->isolate());
1577 ? object()->GetInlineability(broker()->isolate())
1578 : object()->GetInlineability(broker()->local_isolate());
1583 return MakeRefAssumeMemoryFence(broker(), object()->value(kAcquireLoad));
1595 object()->instance_descriptors(broker()->isolate(), kAcquireLoad));
1600 HeapObject::cast(object()->prototype()));
1606 object()->FindRootMap(broker()->isolate()));
1611 return MakeRefAssumeMemoryFence(broker(), object()->GetConstructor());
1617 HeapObject::cast(object()->GetBackPointer()));
1622 return object()->is_on_heap(kAcquireLoad);
1628 return object()->length();
1634 return MakeRef<HeapObject>(broker(), object()->buffer());
1644 return object()->DataPtr();
1648 return object()->IsInobjectSlackTrackingInProgress();
1652 return object()->GetConstructorFunctionIndex();
1660 bool MapRef::CanBeDeprecated() const { return object()->CanBeDeprecated(); }
1662 bool MapRef::CanTransition() const { return object()->CanTransition(); }
1665 return object()->GetInObjectPropertiesStartInWords();
1674 return object()->IsExternalString();
1678 return v8::ToCData<Address>(object()->callback());
1682 return GetCFunctions(FixedArray::cast(object()->GetCFunctionOverloads()),
1687 return GetCSignatures(FixedArray::cast(object()->GetCFunctionOverloads()),
1691 bool StringRef::IsSeqString() const { return object()->IsSeqString(); }
1695 return MakeRefAssumeMemoryFence(broker(), object()->scope_info());
1701 CHECK_LT(index, object()->length());
1703 broker(), Map::cast(object()->get(index, kAcquireLoad)));
1728 broker(), ResultType::cast(object()->Name(kAcquireLoad))); \
1754 bool ObjectRef::IsNull() const { return object()->IsNull(); }
1769 return object()->BooleanValue(broker()->isolate());
1804 *elements_ref.object(), map().elements_kind(), index);
1819 Handle<JSObject> holder = object();
1874 GetOwnDictionaryPropertyFromHeap(broker(), object(), index);
1891 object()->length(broker()->isolate(), kRelaxedLoad));
1924 broker()->isolate(), *elements_ref.AsFixedArray().object(), elements_kind,
1932 return TryMakeRef(broker(), object()->GetCell(cell_index));
1936 return TryMakeRef(broker(), object()->import_meta(kAcquireLoad));
1941 return TryMakeRef(broker(), object()->map(cage_base, kAcquireLoad),
1977 Map map = Handle<HeapObject>::cast(object())->map(broker()->cage_base());
1993 return TryMakeRef(broker(), object()->boilerplate(kAcquireLoad));
1998 return TryMakeRef(broker(), object()->elements(tag));
2008 return object()->GetDetails(descriptor_index);
2013 NameRef result = MakeRef(broker(), object()->GetKey(descriptor_index));
2021 if (!object()
2047 return MakeRefAssumeMemoryFence(broker(), object()->shared_function_info());
2055 Handle<Object> ObjectRef::object() const {
2056 return data_->object();
2061 Handle<T> T##Ref::object() const { \
2062 return Handle<T>(reinterpret_cast<Address*>(data_->object().address())); \
2066 Handle<T> T##Ref::object() const { \
2067 return Handle<T>(reinterpret_cast<Address*>(data_->object().address())); \
2096 Handle<T>::cast(data_->object()));
2102 Handle<T> TinyRef<T>::object() const {
2103 return Handle<T>::cast(data_->object());
2170 CodeT code = object()->code(kAcquireLoad);
2178 context().object()->native_context());
2183 if (!object()->IsApiFunction()) return {};
2185 object()->function_data(kAcquireLoad)));
2189 return object()->scope_info().ContextHeaderLength();
2193 return object()->scope_info().ParametersStartIndex();
2197 return MakeRefAssumeMemoryFence(broker(), object()->scope_info(kAcquireLoad));
2201 Handle<Map> map_handle = Handle<Map>::cast(map().object());
2237 broker()->target_native_context().global_object().object(),
2238 name.object());
2247 return os << ref.data() << " {" << ref.object() << "}";
2249 return os << ref.data() << " {" << ref.object() << "}";
2256 unsigned value = object()->inlined_bytecode_size();
2258 // Don't report inlined bytecode size if the code object was already
2260 value = object()->marked_for_deoptimization() ? 0 : value;