5#ifndef V8_OBJECTS_JS_OBJECTS_H_
6#define V8_OBJECTS_JS_OBJECTS_H_
37class SwissNameDictionary;
38class ElementsAccessor;
42#include "torque-generated/src/objects/js-objects-tq.inc"
46class JSReceiver :
public TorqueGeneratedJSReceiver<JSReceiver, HeapObject> {
98 template <
template <
typename>
typename HandleType>
106 template <
template <
typename>
typename HandleType>
141 bool use_set =
true);
347 bool try_fast_path =
true);
351 bool try_fast_path =
true);
372class JSObject :
public TorqueGeneratedJSObject<JSObject, JSReceiver> {
441 DECL_GETTER(HasTypedArrayOrRabGsabTypedArrayElements,
bool)
479 template <
typename T,
template <
typename>
typename HandleType>
561 bool enable_setup_mode =
true);
585 int old_index,
int new_index);
633 template <
typename TSlot>
654 uint32_t new_capacity =
691 InstanceType instance_type,
bool function_has_prototype_slot =
false);
738 bool use_cache,
const char* reason);
743 const char* reason) {
744 const bool kUseCache =
true;
758 int unused_property_fields,
849 bool is_slack_tracking_in_progress,
874 bool PrintProperties(std::ostream& os);
875 void PrintElements(std::ostream& os);
877#if defined(DEBUG) || defined(OBJECT_PRINT)
878 void PrintTransitions(std::ostream& os);
891 class SpillInformation {
895 int number_of_objects_;
896 int number_of_objects_with_fast_properties_;
897 int number_of_objects_with_fast_elements_;
898 int number_of_fast_used_fields_;
899 int number_of_fast_unused_fields_;
900 int number_of_slow_used_properties_;
901 int number_of_slow_unused_properties_;
902 int number_of_fast_used_elements_;
903 int number_of_fast_unused_elements_;
904 int number_of_slow_used_elements_;
905 int number_of_slow_unused_elements_;
908 void IncrementSpillStatistics(
Isolate* isolate, SpillInformation* info);
967 static_assert(kHeaderSize +
986 template <
typename Dictionary>
1011 template <PropertyAttributes attrs>
1026 :
public TorqueGeneratedJSExternalObject<JSExternalObject, JSObject> {
1046 static_assert(kHeaderSize == JSObject::kHeaderSize);
1053 :
public TorqueGeneratedJSAPIObjectWithEmbedderSlots<
1054 JSAPIObjectWithEmbedderSlots, JSObject> {
1066 :
public TorqueGeneratedJSCustomElementsObject<JSCustomElementsObject,
1069 static_assert(kHeaderSize == JSObject::kHeaderSize);
1079 :
public TorqueGeneratedJSSpecialObject<JSSpecialObject,
1080 JSCustomElementsObject> {
1090 template <CppHeapPo
interTag tag>
1095 template <CppHeapPo
interTag lower_bound, CppHeapPo
interTag upper_bound>
1102 static_assert(JSAPIObjectWithEmbedderSlots::kCppHeapWrappableOffset ==
1103 JSSpecialObject::kCppHeapWrappableOffset);
1104 static constexpr int kCppHeapWrappableOffset =
1105 JSAPIObjectWithEmbedderSlots::kCppHeapWrappableOffset;
1117#define JS_ACCESSOR_PROPERTY_DESCRIPTOR_FIELDS(V) \
1118 V(kGetOffset, kTaggedSize) \
1119 V(kSetOffset, kTaggedSize) \
1120 V(kEnumerableOffset, kTaggedSize) \
1121 V(kConfigurableOffset, kTaggedSize) \
1127#undef JS_ACCESSOR_PROPERTY_DESCRIPTOR_FIELDS
1130 static const int kGetIndex = 0;
1131 static const int kSetIndex = 1;
1132 static const int kEnumerableIndex = 2;
1133 static const int kConfigurableIndex = 3;
1146#define JS_DATA_PROPERTY_DESCRIPTOR_FIELDS(V) \
1147 V(kValueOffset, kTaggedSize) \
1148 V(kWritableOffset, kTaggedSize) \
1149 V(kEnumerableOffset, kTaggedSize) \
1150 V(kConfigurableOffset, kTaggedSize) \
1156#undef JS_DATA_PROPERTY_DESCRIPTOR_FIELDS
1159 static const int kValueIndex = 0;
1160 static const int kWritableIndex = 1;
1161 static const int kEnumerableIndex = 2;
1162 static const int kConfigurableIndex = 3;
1178#define JS_ITERATOR_RESULT_FIELDS(V) \
1179 V(kValueOffset, kTaggedSize) \
1180 V(kDoneOffset, kTaggedSize) \
1186#undef JS_ITERATOR_RESULT_FIELDS
1189 static const int kValueIndex = 0;
1190 static const int kDoneIndex = 1;
1204 :
public TorqueGeneratedJSGlobalProxy<JSGlobalProxy, JSSpecialObject> {
1209 static int SizeWithEmbedderFields(
int embedder_field_count);
1220 :
public TorqueGeneratedJSGlobalObject<JSGlobalObject, JSSpecialObject> {
1227 inline bool IsDetached();
1239 :
public TorqueGeneratedJSPrimitiveWrapper<JSPrimitiveWrapper,
1240 JSCustomElementsObject> {
1251class JSDate :
public TorqueGeneratedJSDate<JSDate, JSObject> {
1258 static int64_t CurrentTimeValue(
Isolate* isolate);
1267 static Address GetField(
Isolate* isolate, Address raw_date,
1270 void SetValue(
double v);
1288 kMillisecond = kFirstUncachedField,
1292 kYearUTC = kFirstUTCField,
1305 class BodyDescriptor;
1313 inline void SetCachedFields(int64_t local_time_ms,
DateCache* date_cache);
1325 :
public TorqueGeneratedJSMessageObject<JSMessageObject, JSObject> {
1335 static inline void EnsureSourcePositionsAvailable(
1340 inline int GetStartPosition()
const;
1341 inline int GetEndPosition()
const;
1366 static const
int kPointerFieldsEndOffset = kStartPositionOffset;
1375 inline
bool DidEnsureSourcePositionsAvailable() const;
1422 :
public TorqueGeneratedJSStringIterator<JSStringIterator, JSObject> {
1435 :
public TorqueGeneratedJSValidIteratorWrapper<JSValidIteratorWrapper,
1455#define JS_PROMISE_WITHRESOLVERS_RESULT_FIELDS(V) \
1456 V(kPromiseOffset, kTaggedSize) \
1457 V(kResolveOffset, kTaggedSize) \
1458 V(kRejectOffset, kTaggedSize) \
1464#undef JS_PROMISE_WITHRESOLVERS_RESULT_FIELDS
1467 static const int kPromiseIndex = 0;
1468 static const int kResolveIndex = 1;
1469 static const int kRejectIndex = 2;
static const int kJSObjectHeaderSize
DISALLOW_IMPLICIT_CONSTRUCTORS(JSAccessorPropertyDescriptor)
DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, JS_ACCESSOR_PROPERTY_DESCRIPTOR_FIELDS) static const int kGetIndex=0
V8_INLINE void SetCppHeapWrappable(IsolateForPointerCompression isolate, void *)
V8_INLINE void * GetCppHeapWrappable(IsolateForPointerCompression isolate) const
V8_INLINE JSApiWrapper(Tagged< JSObject > object)
Tagged< JSObject > object_
DISALLOW_IMPLICIT_CONSTRUCTORS(JSDataPropertyDescriptor)
DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, JS_DATA_PROPERTY_DESCRIPTOR_FIELDS) static const int kValueIndex=0
static constexpr int kEndOfTaggedFieldsOffset
OBJECT_CONSTRUCTORS(JSIteratorResult, JSObject)
DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, JS_ITERATOR_RESULT_FIELDS) static const int kValueIndex=0
static bool UnregisterPrototypeUser(DirectHandle< Map > user, Isolate *isolate)
static V8_EXPORT_PRIVATE DirectHandle< NumberDictionary > NormalizeElements(DirectHandle< JSObject > object)
static bool IsExtensible(Isolate *isolate, DirectHandle< JSObject > object)
Tagged< Object > RawFastPropertyAtCompareAndSwapInternal(FieldIndex index, Tagged< Object > expected, Tagged< Object > value, SeqCstAccessTag tag)
bool MayHaveEmbedderFields() const
static bool PrototypeHasNoElements(Isolate *isolate, Tagged< JSObject > object)
static V8_WARN_UNUSED_RESULT Maybe< bool > PreventExtensionsWithTransition(Isolate *isolate, DirectHandle< JSObject > object, ShouldThrow should_throw)
static const int kMaxInObjectProperties
int GetEmbedderFieldsStartOffset()
void WriteToField(InternalIndex descriptor, PropertyDetails details, Tagged< Object > value)
static V8_WARN_UNUSED_RESULT MaybeHandle< JSAny > GetPropertyWithInterceptor(LookupIterator *it, bool *done)
static void InvalidatePrototypeValidityCell(Tagged< JSGlobalObject > global)
static V8_WARN_UNUSED_RESULT HandleType< Object >::MaybeType DefineOwnPropertyIgnoreAttributes(LookupIterator *it, HandleType< T > value, PropertyAttributes attributes, AccessorInfoHandling handling=DONT_FORCE_FIELD, EnforceDefineSemantics semantics=EnforceDefineSemantics::kSet)
void RequireSlowElements(Tagged< NumberDictionary > dictionary)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Object > DefinePropertyOrElementIgnoreAttributes(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > value, PropertyAttributes attributes=NONE)
static void SetNormalizedElement(DirectHandle< JSObject > object, uint32_t index, DirectHandle< Object > value, PropertyDetails details)
static V8_EXPORT_PRIVATE void AddProperty(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > value, PropertyAttributes attributes)
static V8_EXPORT_PRIVATE void MigrateSlowToFast(DirectHandle< JSObject > object, int unused_property_fields, const char *reason)
Tagged< Object > RawFastInobjectPropertyAtCompareAndSwap(FieldIndex index, Tagged< Object > expected, Tagged< Object > value, SeqCstAccessTag tag)
static V8_EXPORT_PRIVATE void NormalizeProperties(Isolate *isolate, DirectHandle< JSObject > object, PropertyNormalizationMode mode, int expected_additional_properties, const char *reason)
bool ReferencesObjectFromElements(Tagged< FixedArray > elements, ElementsKind kind, Tagged< Object > object)
Tagged< Object > RawFastPropertyAtSwap(FieldIndex index, Tagged< Object > value, SeqCstAccessTag tag)
static void OptimizeAsPrototype(DirectHandle< JSObject > object, bool enable_setup_mode=true)
int GetEmbedderFieldCount() const
Tagged< Object > InObjectPropertyAtPut(int index, Tagged< Object > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
static const int kFieldsAdded
static V8_WARN_UNUSED_RESULT Maybe< InterceptorResult > SetPropertyWithInterceptor(LookupIterator *it, Maybe< ShouldThrow > should_throw, DirectHandle< Object > value)
Tagged< Object > RawFastInobjectPropertyAtSwap(FieldIndex index, Tagged< Object > value, SeqCstAccessTag tag)
static Handle< JSAny > FastPropertyAt(Isolate *isolate, DirectHandle< JSObject > object, Representation representation, FieldIndex index)
static const int kMaxInstanceSize
static void ApplyAttributesToDictionary(Isolate *isolate, ReadOnlyRoots roots, DirectHandle< Dictionary > dictionary, const PropertyAttributes attributes)
void JSObjectShortPrint(StringStream *accumulator)
static MaybeDirectHandle< JSObject > NewWithMap(Isolate *isolate, DirectHandle< Map > initial_map, DirectHandle< AllocationSite > site, NewJSObjectType=NewJSObjectType::kNoAPIWrapper)
Tagged< JSAny > RawFastPropertyAt(FieldIndex index) const
static void LazyRegisterPrototypeUser(DirectHandle< Map > user, Isolate *isolate)
static void ValidateElements(Tagged< JSObject > object)
static V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT MaybeHandle< JSObject > New(DirectHandle< JSFunction > constructor, DirectHandle< JSReceiver > new_target, DirectHandle< AllocationSite > site, NewJSObjectType=NewJSObjectType::kNoAPIWrapper)
int GetInObjectPropertyOffset(int index)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetPropertyAttributesWithInterceptor(LookupIterator *it)
std::optional< Tagged< Object > > RawInobjectPropertyAt(PtrComprCageBase cage_base, Tagged< Map > original_map, FieldIndex index) const
static void ForceSetPrototype(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< JSPrototype > proto)
static Handle< Object > DictionaryPropertyAt(Isolate *isolate, DirectHandle< JSObject > object, InternalIndex dict_index)
static constexpr uint32_t NewElementsCapacity(uint32_t old_capacity)
static V8_WARN_UNUSED_RESULT Maybe< bool > TestIntegrityLevel(Isolate *isolate, DirectHandle< JSObject > object, IntegrityLevel lvl)
static const int kMapCacheSize
static void EnsureCanContainElements(DirectHandle< JSObject > object, TSlot elements, uint32_t count, EnsureElementsMode mode)
static void UpdatePrototypeUserRegistration(DirectHandle< Map > old_map, DirectHandle< Map > new_map, Isolate *isolate)
static Tagged< Map > InvalidatePrototypeChains(Tagged< Map > map)
static constexpr uint32_t kMaxElementIndex
bool ReferencesObject(Tagged< Object > obj)
static constexpr int kMaxJSApiObjectInObjectProperties
static void EnsureCanContainHeapObjectElements(DirectHandle< JSObject > obj)
static V8_WARN_UNUSED_RESULT Maybe< bool > HasRealNamedCallbackProperty(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Name > name)
static void SetImmutableProto(Isolate *isolate, DirectHandle< JSObject > object)
int GetFastElementsUsage()
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Object > V8_EXPORT_PRIVATE SetOwnPropertyIgnoreAttributes(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > value, PropertyAttributes attributes)
Tagged< Object > InObjectPropertyAt(int index)
static V8_WARN_UNUSED_RESULT Maybe< bool > SetPrototype(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Object > value, bool from_javascript, ShouldThrow should_throw)
Tagged< FixedArrayBase > elements(PtrComprCageBase cage_base, AcquireLoadTag tag) const =delete
static const int kInitialGlobalObjectUnusedPropertiesCount
static V8_WARN_UNUSED_RESULT Maybe< bool > HasRealElementProperty(Isolate *isolate, DirectHandle< JSObject > object, uint32_t index)
static void SetNormalizedProperty(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > value, PropertyDetails details)
static void NotifyMapChange(DirectHandle< Map > old_map, DirectHandle< Map > new_map, Isolate *isolate)
static const int kMaxFirstInobjectPropertyOffset
void initialize_elements()
static V8_EXPORT_PRIVATE void NormalizeProperties(Isolate *isolate, DirectHandle< JSObject > object, PropertyNormalizationMode mode, int expected_additional_properties, bool use_cache, const char *reason)
static void SetMapAndElements(DirectHandle< JSObject > object, DirectHandle< Map > map, DirectHandle< FixedArrayBase > elements)
static const uint32_t kMaxGap
void RawFastInobjectPropertyAtPut(FieldIndex index, Tagged< Object > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
static const int kMaxEmbedderFields
static V8_WARN_UNUSED_RESULT Maybe< bool > CheckIfCanDefineAsConfigurable(Isolate *isolate, LookupIterator *it, DirectHandle< Object > value, Maybe< ShouldThrow > should_throw)
static V8_EXPORT_PRIVATE Maybe< bool > AddDataElement(DirectHandle< JSObject > receiver, uint32_t index, DirectHandle< Object > value, PropertyAttributes attributes)
static void PrototypeRegistryCompactionCallback(Tagged< HeapObject > value, int old_index, int new_index)
Tagged< Object > RawFastPropertyAtCompareAndSwap(FieldIndex index, Tagged< Object > expected, Tagged< Object > value, SeqCstAccessTag tag)
bool HasEnumerableElements()
static void MakePrototypesFast(DirectHandle< Object > receiver, WhereToStart where_to_start, Isolate *isolate)
static V8_EXPORT_PRIVATE void TransitionElementsKind(DirectHandle< JSObject > object, ElementsKind to_kind)
static void PrintElementsTransition(FILE *file, DirectHandle< JSObject > object, ElementsKind from_kind, DirectHandle< FixedArrayBase > from_elements, ElementsKind to_kind, DirectHandle< FixedArrayBase > to_elements)
static V8_EXPORT_PRIVATE MaybeDirectHandle< Object > DefineOwnAccessorIgnoreAttributes(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > getter, DirectHandle< Object > setter, PropertyAttributes attributes)
static V8_EXPORT_PRIVATE void MigrateToMap(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Map > new_map, int expected_additional_properties=0)
bool WouldConvertToSlowElements(uint32_t index)
static V8_WARN_UNUSED_RESULT MaybeHandle< JSAny > GetPropertyWithFailedAccessCheck(LookupIterator *it)
static constexpr int kMaxJSApiObjectEmbedderFields
static constexpr uint32_t kMaxElementCount
static bool IsUnmodifiedApiObject(FullObjectSlot o)
static DirectHandle< Map > GetElementsTransitionMap(DirectHandle< JSObject > object, ElementsKind to_kind)
Tagged< Object > SlowReverseLookup(Tagged< Object > value)
static V8_WARN_UNUSED_RESULT Maybe< InterceptorResult > DeletePropertyWithInterceptor(LookupIterator *it, ShouldThrow should_throw)
static MaybeDirectHandle< Object > ReadFromOptionsBag(DirectHandle< Object > options, DirectHandle< String > option_name, Isolate *isolate)
static const int kMaxUncheckedFastElementsLength
static V8_WARN_UNUSED_RESULT Maybe< bool > SetPropertyWithFailedAccessCheck(LookupIterator *it, DirectHandle< Object > value, Maybe< ShouldThrow > should_throw)
static void MigrateInstance(Isolate *isolate, DirectHandle< JSObject > instance)
static bool UpdateAllocationSite(DirectHandle< JSObject > object, ElementsKind to_kind)
static bool TryMigrateInstance(Isolate *isolate, DirectHandle< JSObject > instance)
bool IsDroppableApiObject() const
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Object > SetAccessor(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< AccessorInfo > info, PropertyAttributes attributes)
static void AllocateStorageForMap(DirectHandle< JSObject > object, DirectHandle< Map > map)
void PrintInstanceMigration(FILE *file, Tagged< Map > original_map, Tagged< Map > new_map)
void set_elements(Tagged< FixedArrayBase > value, ReleaseStoreTag tag, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)=delete
void FastPropertyAtPut(FieldIndex index, Tagged< Object > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
static V8_WARN_UNUSED_RESULT Maybe< bool > HasRealNamedProperty(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Name > name)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< JSObject > ObjectCreate(Isolate *isolate, DirectHandle< JSPrototype > prototype)
static V8_WARN_UNUSED_RESULT Maybe< bool > CreateDataProperty(Isolate *isolate, DirectHandle< JSObject > object, PropertyKey key, DirectHandle< Object > value, Maybe< ShouldThrow > should_throw=Just(kDontThrow))
static V8_WARN_UNUSED_RESULT Maybe< bool > PreventExtensions(Isolate *isolate, DirectHandle< JSObject > object, ShouldThrow should_throw)
static void ReoptimizeIfPrototype(DirectHandle< JSObject > object)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Object > SetOwnElementIgnoreAttributes(DirectHandle< JSObject > object, size_t index, DirectHandle< Object > value, PropertyAttributes attributes)
static void EnsureWritableFastElements(DirectHandle< JSObject > object)
int GetEmbedderFieldOffset(int index)
static const uint32_t kMinAddedElementsCapacity
static const int kMaxUncheckedOldFastElementsLength
void SetEmbedderField(int index, Tagged< Object > value)
Tagged< Object > GetEmbedderField(int index)
void InitializeBody(Tagged< Map > map, int start_offset, bool is_slack_tracking_in_progress, MapWord filler_map, Tagged< Object > undefined_value)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetPropertyAttributesWithFailedAccessCheck(LookupIterator *it)
static V8_EXPORT_PRIVATE int GetHeaderSize(InstanceType instance_type, bool function_has_prototype_slot=false)
OBJECT_CONSTRUCTORS(JSPromiseWithResolversResult, JSObject)
DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, JS_PROMISE_WITHRESOLVERS_RESULT_FIELDS) static const int kPromiseIndex=0
static const int kHashMask
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > GetOwnPropertyDescriptor(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Object > key, PropertyDescriptor *desc)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > DeletePropertyOrElement(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name, LanguageMode language_mode=LanguageMode::kSloppy)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > SetPrototype(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Object > value, bool from_javascript, ShouldThrow should_throw)
bool HasProxyInPrototype(Isolate *isolate)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< FixedArray > OwnPropertyKeys(Isolate *isolate, DirectHandle< JSReceiver > object)
static V8_WARN_UNUSED_RESULT Maybe< bool > HasElement(Isolate *isolate, DirectHandle< JSReceiver > object, uint32_t index)
static V8_WARN_UNUSED_RESULT MaybeHandle< Object > GetElement(Isolate *isolate, DirectHandle< JSReceiver > receiver, uint32_t index)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetOwnElementAttributes(Isolate *isolate, DirectHandle< JSReceiver > object, uint32_t index)
static V8_WARN_UNUSED_RESULT Maybe< bool > OrdinaryDefineOwnProperty(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Object > key, PropertyDescriptor *desc, Maybe< ShouldThrow > should_throw)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetOwnPropertyAttributes(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
static Tagged< Smi > CreateIdentityHash(Isolate *isolate, Tagged< JSReceiver > key)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > DeleteProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name, LanguageMode language_mode=LanguageMode::kSloppy)
static V8_WARN_UNUSED_RESULT Maybe< bool > TestIntegrityLevel(Isolate *isolate, DirectHandle< JSReceiver > object, IntegrityLevel lvl)
static V8_WARN_UNUSED_RESULT Maybe< bool > SetIntegrityLevel(Isolate *isolate, DirectHandle< JSReceiver > object, IntegrityLevel lvl, ShouldThrow should_throw)
V8_EXPORT_PRIVATE Tagged< String > class_name()
static MaybeDirectHandle< NativeContext > GetFunctionRealm(DirectHandle< JSReceiver > receiver)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetElementAttributes(Isolate *isolate, DirectHandle< JSReceiver > object, uint32_t index)
static V8_WARN_UNUSED_RESULT Maybe< bool > ValidateAndApplyPropertyDescriptor(Isolate *isolate, LookupIterator *it, bool extensible, PropertyDescriptor *desc, PropertyDescriptor *current, Maybe< ShouldThrow > should_throw, DirectHandle< Name > property_name)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > HasOwnProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
bool IsCodeLike(Isolate *isolate) const
V8_EXPORT_PRIVATE Tagged< Object > GetIdentityHash()
void initialize_properties(Isolate *isolate)
static V8_WARN_UNUSED_RESULT Maybe< bool > OrdinaryDefineOwnProperty(LookupIterator *it, PropertyDescriptor *desc, Maybe< ShouldThrow > should_throw)
static V8_WARN_UNUSED_RESULT Maybe< bool > PreventExtensions(Isolate *isolate, DirectHandle< JSReceiver > object, ShouldThrow should_throw)
static V8_WARN_UNUSED_RESULT Maybe< bool > HasInPrototypeChain(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Object > proto)
static V8_WARN_UNUSED_RESULT HandleType< Object >::MaybeType ToPrimitive(Isolate *isolate, HandleType< JSReceiver > receiver, ToPrimitiveHint hint=ToPrimitiveHint::kDefault)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< FixedArray > GetOwnValues(Isolate *isolate, DirectHandle< JSReceiver > object, PropertyFilter filter, bool try_fast_path=true)
static V8_WARN_UNUSED_RESULT Maybe< bool > DeleteElement(Isolate *isolate, DirectHandle< JSReceiver > object, uint32_t index, LanguageMode language_mode=LanguageMode::kSloppy)
static MaybeDirectHandle< JSPrototype > GetPrototype(Isolate *isolate, DirectHandle< JSReceiver > receiver)
static V8_WARN_UNUSED_RESULT Maybe< bool > CreateDataProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > key, DirectHandle< Object > value, Maybe< ShouldThrow > should_throw)
static V8_WARN_UNUSED_RESULT Tagged< Object > DefineProperty(Isolate *isolate, DirectHandle< Object > object, DirectHandle< Object > name, Handle< Object > attributes)
static Handle< Object > GetDataProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
static V8_WARN_UNUSED_RESULT Maybe< bool > IsExtensible(Isolate *isolate, DirectHandle< JSReceiver > object)
static V8_WARN_UNUSED_RESULT HandleType< Object >::MaybeType OrdinaryToPrimitive(Isolate *isolate, DirectHandle< JSReceiver > receiver, OrdinaryToPrimitiveHint hint)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetPropertyAttributes(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
static V8_WARN_UNUSED_RESULT Maybe< bool > IsCompatiblePropertyDescriptor(Isolate *isolate, bool extensible, PropertyDescriptor *desc, PropertyDescriptor *current, DirectHandle< Name > property_name, Maybe< ShouldThrow > should_throw)
static V8_WARN_UNUSED_RESULT MaybeHandle< Object > GetProperty(Isolate *isolate, DirectHandle< JSReceiver > receiver, const char *key)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< FixedArray > GetOwnEntries(Isolate *isolate, DirectHandle< JSReceiver > object, PropertyFilter filter, bool try_fast_path=true)
static MaybeDirectHandle< JSFunction > GetConstructor(Isolate *isolate, DirectHandle< JSReceiver > receiver)
static V8_WARN_UNUSED_RESULT Maybe< bool > DefineOwnProperty(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Object > key, PropertyDescriptor *desc, Maybe< ShouldThrow > should_throw)
static void DeleteNormalizedProperty(DirectHandle< JSReceiver > object, InternalIndex entry)
static DirectHandle< String > GetConstructorName(Isolate *isolate, DirectHandle< JSReceiver > receiver)
static V8_WARN_UNUSED_RESULT Maybe< bool > CheckPrivateNameStore(LookupIterator *it, bool is_define)
static V8_WARN_UNUSED_RESULT Maybe< bool > SetOrCopyDataProperties(Isolate *isolate, DirectHandle< JSReceiver > target, DirectHandle< Object > source, PropertiesEnumerationMode mode, base::Vector< DirectHandle< Object > > excluded_properties={}, bool use_set=true)
static V8_EXPORT_PRIVATE MaybeHandle< NativeContext > GetContextForMicrotask(DirectHandle< JSReceiver > receiver)
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > HasProperty(LookupIterator *it)
V8_EXPORT_PRIVATE void SetIdentityHash(int masked_hash)
V8_EXPORT_PRIVATE Tagged< Smi > GetOrCreateIdentityHash(Isolate *isolate)
static V8_WARN_UNUSED_RESULT Maybe< bool > AddPrivateField(LookupIterator *it, DirectHandle< Object > value, Maybe< ShouldThrow > should_throw)
static V8_WARN_UNUSED_RESULT Maybe< bool > HasPropertyOrElement(Isolate *isolate, DirectHandle< JSReceiver > object, PropertyKey key)
V8_EXPORT_PRIVATE std::optional< Tagged< NativeContext > > GetCreationContext()
NEVER_READ_ONLY_SPACE void SetProperties(Tagged< HeapObject > properties)
static V8_WARN_UNUSED_RESULT MaybeDirectHandle< Object > DefineProperties(Isolate *isolate, DirectHandle< Object > object, DirectHandle< Object > properties)
static const int kMaxLength
DirectHandle< Object > new_target
#define JS_ACCESSOR_PROPERTY_DESCRIPTOR_FIELDS(V)
#define JS_PROMISE_WITHRESOLVERS_RESULT_FIELDS(V)
#define JS_ITERATOR_RESULT_FIELDS(V)
#define JS_DATA_PROPERTY_DESCRIPTOR_FIELDS(V)
PropertiesEnumerationMode
constexpr int kTaggedSize
static const int kFirstInobjectPropertyOffsetBitCount
constexpr int kEmbedderDataSlotSize
constexpr int kTaggedSizeLog2
constexpr int kEmbedderDataSlotSizeInTaggedSlots
static const int kMaxNumberOfDescriptors
constexpr int kCppHeapPointerSlotSize
constexpr uint32_t kMaxUInt32
static constexpr int kMaxFixedArrayCapacity
!IsContextMap !IsContextMap native_context
PropertyNormalizationMode
V8_INLINE Local< Primitive > Null(Isolate *isolate)
V8_INLINE Local< Primitive > Undefined(Isolate *isolate)
Maybe< T > Just(const T &t)
#define DECL_ACCESSORS(name,...)
#define DECL_GETTER(name,...)
#define DECL_EXTERNAL_POINTER_ACCESSORS(name, type)
#define DECL_VERIFIER(Name)
#define DECL_RELAXED_ACCESSORS(name,...)
#define NEVER_READ_ONLY_SPACE
#define DECL_RELAXED_GETTER(name,...)
#define DECL_PRINTER(Name)
#define DECL_RELEASE_ACQUIRE_ACCESSORS(name,...)
#define DECL_INT_ACCESSORS(name)
#define TQ_OBJECT_CONSTRUCTORS(Type)
#define V8_EXPORT_PRIVATE
#define V8_WARN_UNUSED_RESULT