v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
indirect-pointer-tag.h File Reference
Include dependency graph for indirect-pointer-tag.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define SHARED_TRUSTED_POINTER_TAG_LIST(V)
 
#define PER_ISOLATE_INDIRECT_POINTER_TAG_LIST(V)
 
#define INDIRECT_POINTER_TAG_LIST(V)
 
#define MAKE_TAG(i)
 
#define INDIRECT_POINTER_TAG_ENUM_DECL(name, tag_id)
 
#define VALIDATE_INDIRECT_POINTER_TAG(name, tag_id)
 
#define CASE(name, instance_type, tag_id)
 
#define CHECK_SHARED_TRUSTED_POINTER_TAGS(Tag, ...)
 
#define CHECK_NON_SHARED_TRUSTED_POINTER_TAGS(Tag, ...)
 

Enumerations

enum  v8::internal::IndirectPointerTag : uint64_t { v8::internal::kIndirectPointerNullTag = 0 , v8::internal::kUnknownIndirectPointerTag = kIndirectPointerTagMaskWithoutFreeEntryBit , v8::internal::kFreeTrustedPointerTableEntryTag = kTrustedPointerTableFreeEntryBit }
 

Functions

static V8_INLINE constexpr bool v8::internal::IsSharedTrustedPointerType (IndirectPointerTag tag)
 
static V8_INLINE constexpr bool v8::internal::IsPerIsolateTrustedPointerType (IndirectPointerTag tag)
 
V8_INLINE constexpr bool v8::internal::IsValidIndirectPointerTag (IndirectPointerTag tag)
 
V8_INLINE constexpr bool v8::internal::IsTrustedSpaceMigrationInProgressForObjectsWithTag (IndirectPointerTag tag)
 
V8_INLINE IndirectPointerTag v8::internal::IndirectPointerTagFromInstanceType (InstanceType instance_type)
 
V8_INLINE InstanceType v8::internal::InstanceTypeFromIndirectPointerTag (IndirectPointerTag tag)
 

Variables

constexpr int v8::internal::kIndirectPointerTagShift = 48
 
constexpr uint64_t v8::internal::kIndirectPointerTagMask = 0x7fff'0000'0000'0000
 
constexpr uint64_t v8::internal::kTrustedPointerTableMarkBit = 0x8000'0000'0000'0000
 
constexpr uint64_t v8::internal::kTrustedPointerTableFreeEntryBit = 0x0080'0000'0000'0000
 
constexpr uint64_t v8::internal::kIndirectPointerTagMaskWithoutFreeEntryBit
 
constexpr uint64_t v8::internal::kAllTagsForAndBasedTypeChecking []
 

Macro Definition Documentation

◆ CASE

#define CASE ( name,
instance_type,
tag_id )
Value:
case MAKE_TAG(tag_id): \
return instance_type; \
break;
#define MAKE_TAG(i)

◆ CHECK_NON_SHARED_TRUSTED_POINTER_TAGS

#define CHECK_NON_SHARED_TRUSTED_POINTER_TAGS ( Tag,
... )
Value:
static_assert(!IsSharedTrustedPointerType(Tag));

Definition at line 262 of file indirect-pointer-tag.h.

◆ CHECK_SHARED_TRUSTED_POINTER_TAGS

#define CHECK_SHARED_TRUSTED_POINTER_TAGS ( Tag,
... )
Value:
static_assert(IsSharedTrustedPointerType(Tag));

Definition at line 260 of file indirect-pointer-tag.h.

◆ INDIRECT_POINTER_TAG_ENUM_DECL

#define INDIRECT_POINTER_TAG_ENUM_DECL ( name,
tag_id )
Value:
name = MAKE_TAG(tag_id),

Definition at line 150 of file indirect-pointer-tag.h.

◆ INDIRECT_POINTER_TAG_LIST

#define INDIRECT_POINTER_TAG_LIST ( V)
Value:
PER_ISOLATE_INDIRECT_POINTER_TAG_LIST(V) \
V(kUnpublishedIndirectPointerTag, 34)
#define V(Name)
#define SHARED_TRUSTED_POINTER_TAG_LIST(V)

Definition at line 98 of file indirect-pointer-tag.h.

◆ MAKE_TAG

#define MAKE_TAG ( i)
Value:
(kAllTagsForAndBasedTypeChecking[i] << kIndirectPointerTagShift)

Definition at line 103 of file indirect-pointer-tag.h.

◆ PER_ISOLATE_INDIRECT_POINTER_TAG_LIST

#define PER_ISOLATE_INDIRECT_POINTER_TAG_LIST ( V)
Value:
V(kFirstPerIsolateTrustedTag, 6) \
V(kCodeIndirectPointerTag, 6) \
V(kBytecodeArrayIndirectPointerTag, 7) \
V(kInterpreterDataIndirectPointerTag, 8) \
V(kUncompiledDataIndirectPointerTag, 9) \
V(kRegExpDataIndirectPointerTag, 10) \
IF_WASM(V, kWasmTrustedInstanceDataIndirectPointerTag, 11) \
IF_WASM(V, kWasmInternalFunctionIndirectPointerTag, 12) \
IF_WASM(V, kWasmFunctionDataIndirectPointerTag, 13) \
IF_WASM(V, kWasmDispatchTableIndirectPointerTag, 14) \
V(kLastPerIsolateTrustedTag, 14)

Definition at line 85 of file indirect-pointer-tag.h.

◆ SHARED_TRUSTED_POINTER_TAG_LIST

#define SHARED_TRUSTED_POINTER_TAG_LIST ( V)
Value:
V(kFirstSharedTrustedTag, 1) \
V(kLastSharedTrustedTag, 1)

Definition at line 78 of file indirect-pointer-tag.h.

◆ VALIDATE_INDIRECT_POINTER_TAG

#define VALIDATE_INDIRECT_POINTER_TAG ( name,
tag_id )
Value:
static_assert((name & kIndirectPointerTagMask) == name); \
static_assert((name & kIndirectPointerTagMaskWithoutFreeEntryBit) == name);
const char * name
Definition builtins.cc:39

Definition at line 155 of file indirect-pointer-tag.h.