v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
objects-inl.h File Reference
#include "src/objects/objects.h"
#include "include/v8-internal.h"
#include "src/base/bits.h"
#include "src/base/memory.h"
#include "src/base/numbers/double.h"
#include "src/builtins/builtins.h"
#include "src/common/globals.h"
#include "src/common/ptr-compr-inl.h"
#include "src/handles/handles-inl.h"
#include "src/heap/factory.h"
#include "src/heap/heap-layout-inl.h"
#include "src/heap/heap-verifier.h"
#include "src/heap/heap-write-barrier-inl.h"
#include "src/heap/read-only-heap-inl.h"
#include "src/numbers/conversions-inl.h"
#include "src/objects/allocation-site.h"
#include "src/objects/casting.h"
#include "src/objects/deoptimization-data.h"
#include "src/objects/heap-number-inl.h"
#include "src/objects/heap-object.h"
#include "src/objects/hole-inl.h"
#include "src/objects/instance-type-checker.h"
#include "src/objects/js-proxy-inl.h"
#include "src/objects/keys.h"
#include "src/objects/literal-objects.h"
#include "src/objects/lookup-inl.h"
#include "src/objects/object-list-macros.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/property-details.h"
#include "src/objects/property.h"
#include "src/objects/regexp-match-info-inl.h"
#include "src/objects/scope-info-inl.h"
#include "src/objects/shared-function-info.h"
#include "src/objects/slots-inl.h"
#include "src/objects/slots.h"
#include "src/objects/smi-inl.h"
#include "src/objects/tagged-field-inl.h"
#include "src/objects/tagged-impl-inl.h"
#include "src/objects/tagged-index.h"
#include "src/objects/templates.h"
#include "src/roots/roots.h"
#include "src/sandbox/bounded-size-inl.h"
#include "src/sandbox/code-pointer-inl.h"
#include "src/sandbox/cppheap-pointer-inl.h"
#include "src/sandbox/external-pointer-inl.h"
#include "src/sandbox/indirect-pointer-inl.h"
#include "src/sandbox/isolate-inl.h"
#include "src/sandbox/isolate.h"
#include "src/sandbox/sandboxed-pointer-inl.h"
#include "src/objects/object-macros.h"
#include "src/objects/object-macros-undef.h"

Go to the source code of this file.

Classes

struct  v8::internal::CastTraits< Union< T... > >
 
struct  v8::internal::CastTraits< JSPrimitive >
 
struct  v8::internal::CastTraits< JSAny >
 
struct  v8::internal::CastTraits< AllocationSiteWithWeakNext >
 
struct  v8::internal::CastTraits< FieldType >
 
struct  v8::internal::CastTraits< Managed< T > >
 
struct  v8::internal::CastTraits< TrustedManaged< T > >
 
struct  v8::internal::CastTraits< PodArray< T > >
 
struct  v8::internal::CastTraits< TrustedPodArray< T > >
 
struct  v8::internal::CastTraits< FixedIntegerArrayBase< T, Base > >
 
struct  v8::internal::CastTraits< FixedAddressArrayBase< Base > >
 
struct  v8::internal::CastTraits< JSRegExpResultIndices >
 
struct  v8::internal::CastTraits< DeoptimizationLiteralArray >
 
struct  v8::internal::CastTraits< FreshlyAllocatedBigInt >
 
struct  v8::internal::CastTraits< JSIteratorResult >
 
struct  v8::internal::CastTraits< DeoptimizationFrameTranslation >
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define IS_TYPE_FUNCTION_DEF(type_)
 
#define IS_TYPE_FUNCTION_DEF(Type, Value, _)
 
#define IS_TYPE_FUNCTION_DEF(Type, Value, _)
 
#define IS_HELPER_DEF(Type, ...)
 
#define IS_HELPER_DEF_STRUCT(NAME, Name, name)
 
#define MAKE_STRUCT_PREDICATE(NAME, Name, name)
 

Functions

bool v8::internal::IsTaggedIndex (Tagged< Object > obj)
 
bool v8::internal::IsJSObjectThatCanBeTrackedAsPrototype (Tagged< Object > obj)
 
bool v8::internal::IsAnyHole (Tagged< Object > obj, PtrComprCageBase cage_base)
 
bool v8::internal::IsAnyHole (Tagged< Object > obj)
 
bool v8::internal::IsNullOrUndefined (Tagged< Object > obj, Isolate *isolate)
 
bool v8::internal::IsNullOrUndefined (Tagged< Object > obj, LocalIsolate *local_isolate)
 
bool v8::internal::IsNullOrUndefined (Tagged< Object > obj, ReadOnlyRoots roots)
 
bool v8::internal::IsNullOrUndefined (Tagged< Object > obj)
 
bool v8::internal::IsNullOrUndefined (Tagged< HeapObject > obj)
 
bool v8::internal::IsZero (Tagged< Object > obj)
 
bool v8::internal::IsPublicSymbol (Tagged< Object > obj)
 
bool v8::internal::IsPrivateSymbol (Tagged< Object > obj)
 
bool v8::internal::IsNoSharedNameSentinel (Tagged< Object > obj)
 
V8_INLINE constexpr bool v8::internal::FastInReadOnlySpaceOrSmallSmi (Tagged_t obj)
 
V8_INLINE constexpr bool v8::internal::FastInReadOnlySpaceOrSmallSmi (Tagged< MaybeObject > obj)
 
V8_INLINE bool v8::internal::OutsideSandboxOrInReadonlySpace (Tagged< HeapObject > obj)
 
bool v8::internal::IsJSObjectThatCanBeTrackedAsPrototype (Tagged< HeapObject > obj)
 
bool v8::internal::IsJSApiWrapperObject (Tagged< Map > map)
 
bool v8::internal::IsJSApiWrapperObject (Tagged< HeapObject > js_obj)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsUniqueName)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsCallable)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsCallableJSProxy)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsCallableApiObject)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsNonNullForeign)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsConstructor)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsSourceTextModuleInfo)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsConsString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsThinString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsSlicedString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsSeqString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsSeqOneByteString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsSeqTwoByteString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsExternalOneByteString)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsExternalTwoByteString)
 
bool v8::internal::IsNumber (Tagged< Object > obj)
 
bool v8::internal::IsNumber (Tagged< Object > obj, PtrComprCageBase cage_base)
 
bool v8::internal::IsNumeric (Tagged< Object > obj)
 
bool v8::internal::IsNumeric (Tagged< Object > obj, PtrComprCageBase cage_base)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsTemplateLiteralObject)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsDeoptimizationData)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsHandlerTable)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsDependentCode)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsOSROptimizedCodeCache)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsStringWrapper)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsBooleanWrapper)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsScriptWrapper)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsNumberWrapper)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsBigIntWrapper)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsSymbolWrapper)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsStringSet)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsObjectHashSet)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsCompilationCacheTable)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsMapCache)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsObjectHashTable)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsObjectTwoHashTable)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsHashTableBase)
 
bool v8::internal::IsPrimitive (Tagged< Object > obj)
 
bool v8::internal::IsPrimitive (Tagged< Object > obj, PtrComprCageBase cage_base)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsUndetectable)
 
 v8::internal::DEF_HEAP_OBJECT_PREDICATE (HeapObject, IsAccessCheckNeeded)
 
bool v8::internal::IsNaN (Tagged< Object > obj)
 
bool v8::internal::IsMinusZero (Tagged< Object > obj)
 
 v8::internal::DEF_ACQUIRE_GETTER (HeapObject, map, Tagged< Map >)
 
bool v8::internal::IsSpecialReceiverInstanceType (InstanceType instance_type)
 
bool v8::internal::IsSpecialReceiverMap (Tagged< Map > map)
 
bool v8::internal::IsCustomElementsReceiverInstanceType (InstanceType instance_type)
 
bool v8::internal::IsCustomElementsReceiverMap (Tagged< Map > map)
 
bool v8::internal::IsShared (Tagged< Object > obj)
 
static uint32_t v8::internal::ObjectAddressForHashing (Address object)
 
static DirectHandle< Objectv8::internal::MakeEntryPair (Isolate *isolate, size_t index, DirectHandle< Object > value)
 
static DirectHandle< Objectv8::internal::MakeEntryPair (Isolate *isolate, DirectHandle< Object > key, DirectHandle< Object > value)
 

Macro Definition Documentation

◆ IS_HELPER_DEF

#define IS_HELPER_DEF ( Type,
... )
Value:
template <> \
struct CastTraits<Type> { \
static inline bool AllowFrom(Tagged<Object> value) { \
return Is##Type(value); \
} \
static inline bool AllowFrom(Tagged<HeapObject> value) { \
return Is##Type(value); \
} \
};

Definition at line 214 of file objects-inl.h.

◆ IS_HELPER_DEF_STRUCT

#define IS_HELPER_DEF_STRUCT ( NAME,
Name,
name )
Value:
#define IS_HELPER_DEF(Type,...)

Definition at line 229 of file objects-inl.h.

◆ IS_TYPE_FUNCTION_DEF [1/3]

#define IS_TYPE_FUNCTION_DEF ( Type,
Value,
_ )
Value:
bool Is##Type(Tagged<Object> obj, Isolate* isolate) { \
return Is##Type(obj, ReadOnlyRoots(isolate)); \
} \
bool Is##Type(Tagged<Object> obj, LocalIsolate* isolate) { \
return Is##Type(obj, ReadOnlyRoots(isolate)); \
} \
bool Is##Type(Tagged<Object> obj) { \
return Is##Type(obj, GetReadOnlyRoots()); \
} \
bool Is##Type(Tagged<HeapObject> obj) { \
return Is##Type(obj, GetReadOnlyRoots()); \
} \
bool Is##Type(HeapObject obj) { \
static_assert(kTaggedCanConvertToRawObjects); \
return Is##Type(Tagged<HeapObject>(obj)); \
} \
bool Is##Type(const HeapObjectLayout* obj, Isolate* isolate) { \
return Is##Type(Tagged<HeapObject>(obj), isolate); \
} \
bool Is##Type(const HeapObjectLayout* obj) { \
return Is##Type(Tagged<HeapObject>(obj)); \
}
bool Is(IndirectHandle< U > value)
Definition handles-inl.h:51
ReadOnlyRoots GetReadOnlyRoots()
Definition roots-inl.h:86

Definition at line 101 of file objects-inl.h.

◆ IS_TYPE_FUNCTION_DEF [2/3]

#define IS_TYPE_FUNCTION_DEF ( Type,
Value,
_ )
Value:
bool Is##Type(Tagged<Object> obj, ReadOnlyRoots roots) { \
return obj == roots.Value(); \
}

Definition at line 101 of file objects-inl.h.

◆ IS_TYPE_FUNCTION_DEF [3/3]

#define IS_TYPE_FUNCTION_DEF ( type_)
Value:
bool Is##type_(Tagged<Object> obj) { \
return IsHeapObject(obj) && Is##type_(Cast<HeapObject>(obj)); \
} \
bool Is##type_(Tagged<Object> obj, PtrComprCageBase cage_base) { \
return IsHeapObject(obj) && Is##type_(Cast<HeapObject>(obj), cage_base); \
} \
bool Is##type_(HeapObject obj) { \
static_assert(kTaggedCanConvertToRawObjects); \
return Is##type_(Tagged<HeapObject>(obj)); \
} \
bool Is##type_(HeapObject obj, PtrComprCageBase cage_base) { \
static_assert(kTaggedCanConvertToRawObjects); \
return Is##type_(Tagged<HeapObject>(obj), cage_base); \
} \
bool Is##type_(const HeapObjectLayout* obj) { \
return Is##type_(Tagged<HeapObject>(obj)); \
} \
bool Is##type_(const HeapObjectLayout* obj, PtrComprCageBase cage_base) { \
return Is##type_(Tagged<HeapObject>(obj), cage_base); \
}
const ObjectRef type_

Definition at line 101 of file objects-inl.h.

◆ MAKE_STRUCT_PREDICATE

#define MAKE_STRUCT_PREDICATE ( NAME,
Name,
name )
Value:
bool Is##Name(Tagged<Object> obj) { \
return IsHeapObject(obj) && Is##Name(Cast<HeapObject>(obj)); \
} \
bool Is##Name(Tagged<Object> obj, PtrComprCageBase cage_base) { \
return IsHeapObject(obj) && Is##Name(Cast<HeapObject>(obj), cage_base); \
} \
bool Is##Name(HeapObject obj) { \
static_assert(kTaggedCanConvertToRawObjects); \
return Is##Name(Tagged<HeapObject>(obj)); \
} \
bool Is##Name(HeapObject obj, PtrComprCageBase cage_base) { \
static_assert(kTaggedCanConvertToRawObjects); \
return Is##Name(Tagged<HeapObject>(obj), cage_base); \
} \
bool Is##Name(const HeapObjectLayout* obj) { \
return Is##Name(Tagged<HeapObject>(obj)); \
} \
bool Is##Name(const HeapObjectLayout* obj, PtrComprCageBase cage_base) { \
return Is##Name(Tagged<HeapObject>(obj), cage_base); \
}

Definition at line 652 of file objects-inl.h.