v8 13.6.233 (node 24.1.0)
V8 is Google's open source JavaScript engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
v8-internal.h File Reference
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include <atomic>
#include <iterator>
#include <limits>
#include <memory>
#include <optional>
#include <type_traits>
#include "v8config.h"
Include dependency graph for v8-internal.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SmiTagging< 4 >
 
struct  SmiTagging< 8 >
 
struct  TagRange< Tag >
 
class  Internals
 
struct  CastCheck< PerformCheck >
 
class  BackingStoreBase
 
class  StrongRootAllocatorBase
 
class  StrongRootAllocator< T >
 
struct  MaybeDefineIteratorConcept< Iterator, typename >
 
struct  MaybeDefineIteratorConcept< Iterator, std::enable_if_t< kHaveIteratorConcept< Iterator > > >
 
struct  MaybeDefineIteratorConcept< Iterator, std::enable_if_t< kHaveIteratorCategory< Iterator > &&!kHaveIteratorConcept< Iterator > > >
 
class  WrappedIterator< Iterator, ElementType >
 
class  ValueHelper
 
class  HandleHelper
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define V8_HAVE_SPACESHIP_OPERATOR   0
 

Typedefs

typedef uintptr_t Address
 
using PlatformSmiTagging = SmiTagging<kApiTaggedSize>
 
using SandboxedPointer_t = Address
 
using ExternalPointerHandle = uint32_t
 
using ExternalPointer_t = Address
 
using CppHeapPointerHandle = uint32_t
 
using CppHeapPointer_t = Address
 
using ExternalPointerTagRange = TagRange<ExternalPointerTag>
 
using IndirectPointerHandle = uint32_t
 
using TrustedPointerHandle = IndirectPointerHandle
 
using CodePointerHandle = IndirectPointerHandle
 

Enumerations

enum  ExternalPointerTag : uint16_t {
  kFirstExternalPointerTag = 0 , kExternalPointerNullTag = 0 , kFirstSharedExternalPointerTag , kWaiterQueueNodeTag = kFirstSharedExternalPointerTag ,
  kExternalStringResourceTag , kExternalStringResourceDataTag , kLastSharedExternalPointerTag = kExternalStringResourceDataTag , kNativeContextMicrotaskQueueTag ,
  kEmbedderDataSlotPayloadTag , kExternalObjectValueTag , kFirstMaybeReadOnlyExternalPointerTag , kFunctionTemplateInfoCallbackTag = kFirstMaybeReadOnlyExternalPointerTag ,
  kAccessorInfoGetterTag , kAccessorInfoSetterTag , kLastMaybeReadOnlyExternalPointerTag = kAccessorInfoSetterTag , kWasmInternalFunctionCallTargetTag ,
  kWasmTypeInfoNativeTypeTag , kWasmExportedFunctionDataSignatureTag , kWasmStackMemoryTag , kWasmIndirectFunctionTargetTag ,
  kFirstForeignExternalPointerTag , kGenericForeignTag = kFirstForeignExternalPointerTag , kApiNamedPropertyQueryCallbackTag , kApiNamedPropertyGetterCallbackTag ,
  kApiNamedPropertySetterCallbackTag , kApiNamedPropertyDescriptorCallbackTag , kApiNamedPropertyDefinerCallbackTag , kApiNamedPropertyDeleterCallbackTag ,
  kApiIndexedPropertyQueryCallbackTag , kApiIndexedPropertyGetterCallbackTag , kApiIndexedPropertySetterCallbackTag , kApiIndexedPropertyDescriptorCallbackTag ,
  kApiIndexedPropertyDefinerCallbackTag , kApiIndexedPropertyDeleterCallbackTag , kApiIndexedPropertyEnumeratorCallbackTag , kApiAccessCheckCallbackTag ,
  kApiAbortScriptExecutionCallbackTag , kSyntheticModuleTag , kMicrotaskCallbackTag , kMicrotaskCallbackDataTag ,
  kCFunctionTag , kCFunctionInfoTag , kMessageListenerTag , kWaiterQueueForeignTag ,
  kFirstManagedResourceTag , kFirstManagedExternalPointerTag = kFirstManagedResourceTag , kGenericManagedTag = kFirstManagedExternalPointerTag , kWasmWasmStreamingTag ,
  kWasmFuncDataTag , kWasmManagedDataTag , kWasmNativeModuleTag , kIcuBreakIteratorTag ,
  kIcuUnicodeStringTag , kIcuListFormatterTag , kIcuLocaleTag , kIcuSimpleDateFormatTag ,
  kIcuDateIntervalFormatTag , kIcuRelativeDateTimeFormatterTag , kIcuLocalizedNumberFormatterTag , kIcuPluralRulesTag ,
  kIcuCollatorTag , kDisplayNamesInternalTag , kD8WorkerTag , kD8ModuleEmbedderDataTag ,
  kLastForeignExternalPointerTag = kD8ModuleEmbedderDataTag , kLastManagedExternalPointerTag = kLastForeignExternalPointerTag , kArrayBufferExtensionTag , kLastManagedResourceTag = kArrayBufferExtensionTag ,
  kExternalPointerZappedEntryTag = 0x7d , kExternalPointerEvacuationEntryTag = 0x7e , kExternalPointerFreeEntryTag = 0x7f , kLastExternalPointerTag = 0x7f
}
 

Functions

constexpr bool PointerCompressionIsEnabled ()
 
constexpr bool SmiValuesAre31Bits ()
 
constexpr bool SmiValuesAre32Bits ()
 
constexpr bool Is64 ()
 
constexpr bool SandboxIsEnabled ()
 
constexpr ExternalPointerTagRange kAnyExternalPointerTagRange (kFirstExternalPointerTag, kLastExternalPointerTag)
 
constexpr ExternalPointerTagRange kAnySharedExternalPointerTagRange (kFirstSharedExternalPointerTag, kLastSharedExternalPointerTag)
 
constexpr ExternalPointerTagRange kAnyForeignExternalPointerTagRange (kFirstForeignExternalPointerTag, kLastForeignExternalPointerTag)
 
constexpr ExternalPointerTagRange kAnyManagedExternalPointerTagRange (kFirstManagedExternalPointerTag, kLastManagedExternalPointerTag)
 
constexpr ExternalPointerTagRange kAnyMaybeReadOnlyExternalPointerTagRange (kFirstMaybeReadOnlyExternalPointerTag, kLastMaybeReadOnlyExternalPointerTag)
 
constexpr ExternalPointerTagRange kAnyManagedResourceExternalPointerTag (kFirstManagedResourceTag, kLastManagedResourceTag)
 
V8_EXPORT internal::Isolate * IsolateFromNeverReadOnlySpaceObject (Address obj)
 
V8_EXPORT bool ShouldThrowOnError (internal::Isolate *isolate)
 
template<class T>
V8_INLINE void PerformCastCheck (T *data)
 
V8_EXPORT void VerifyHandleIsNonEmpty (bool is_empty)
 
void PrintFunctionCallbackInfo (void *function_callback_info)
 
void PrintPropertyCallbackInfo (void *property_callback_info)
 

Variables

constexpr int KB = 1024
 
constexpr int MB = KB * 1024
 
constexpr int GB = MB * 1024
 
const int kApiSystemPointerSize = sizeof(void*)
 
const int kApiDoubleSize = sizeof(double)
 
const int kApiInt32Size = sizeof(int32_t)
 
const int kApiInt64Size = sizeof(int64_t)
 
const int kApiSizetSize = sizeof(size_t)
 
const int kHeapObjectTag = 1
 
const int kWeakHeapObjectTag = 3
 
const int kHeapObjectTagSize = 2
 
const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1
 
const intptr_t kHeapObjectReferenceTagMask = 1 << (kHeapObjectTagSize - 1)
 
const int kForwardingTag = 0
 
const int kForwardingTagSize = 2
 
const intptr_t kForwardingTagMask = (1 << kForwardingTagSize) - 1
 
const int kSmiTag = 0
 
const int kSmiTagSize = 1
 
const intptr_t kSmiTagMask = (1 << kSmiTagSize) - 1
 
constexpr intptr_t kIntptrAllBitsSet = intptr_t{-1}
 
constexpr uintptr_t kUintptrAllBitsSet
 
const int kApiTaggedSize = kApiSystemPointerSize
 
const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize
 
const int kSmiValueSize = PlatformSmiTagging::kSmiValueSize
 
const int kSmiMinValue = static_cast<int>(PlatformSmiTagging::kSmiMinValue)
 
const int kSmiMaxValue = static_cast<int>(PlatformSmiTagging::kSmiMaxValue)
 
constexpr size_t kMaxExternalPointers = 0
 
constexpr uint64_t kExternalPointerMarkBit = 1ULL << 48
 
constexpr uint64_t kExternalPointerTagShift = 49
 
constexpr uint64_t kExternalPointerTagMask = 0x00fe000000000000ULL
 
constexpr uint64_t kExternalPointerShiftedTagMask
 
constexpr uint64_t kExternalPointerTagAndMarkbitMask = 0x00ff000000000000ULL
 
constexpr uint64_t kExternalPointerPayloadMask = 0xff00ffffffffffffULL
 
constexpr ExternalPointer_t kNullExternalPointer = 0
 
constexpr ExternalPointerHandle kNullExternalPointerHandle = 0
 
constexpr CppHeapPointer_t kNullCppHeapPointer = 0
 
constexpr CppHeapPointerHandle kNullCppHeapPointerHandle = 0
 
constexpr uint64_t kCppHeapPointerMarkBit = 1ULL
 
constexpr uint64_t kCppHeapPointerTagShift = 1
 
constexpr uint64_t kCppHeapPointerPayloadShift = 16
 
constexpr size_t kMaxCppHeapPointers = 0
 
constexpr IndirectPointerHandle kNullIndirectPointerHandle = 0
 
constexpr size_t kTrustedPointerTableReservationSize = 64 * MB
 
constexpr uint32_t kTrustedPointerHandleShift = 9
 
constexpr TrustedPointerHandle kNullTrustedPointerHandle
 
constexpr int kTrustedPointerTableEntrySize = 8
 
constexpr int kTrustedPointerTableEntrySizeLog2 = 3
 
constexpr size_t kMaxTrustedPointers
 
constexpr size_t kCodePointerTableReservationSize = 128 * MB
 
constexpr uint32_t kCodePointerHandleShift = 9
 
constexpr CodePointerHandle kNullCodePointerHandle = kNullIndirectPointerHandle
 
constexpr uint32_t kCodePointerHandleMarker = 0x1
 
constexpr int kCodePointerTableEntrySize = 16
 
constexpr int kCodePointerTableEntrySizeLog2 = 4
 
constexpr size_t kMaxCodePointers
 
constexpr int kCodePointerTableEntryEntrypointOffset = 0
 
constexpr int kCodePointerTableEntryCodeObjectOffset = 8
 
constexpr bool kRuntimeGeneratedCodeObjectsLiveInTrustedSpace = true
 
constexpr bool kBuiltinCodeObjectsLiveInTrustedSpace = false
 
constexpr bool kAllCodeObjectsLiveInTrustedSpace
 
constexpr int kGarbageCollectionReasonMaxValue = 29
 
template<typename Iterator, typename = void>
constexpr bool kHaveIteratorConcept = false
 
template<typename Iterator>
constexpr bool kHaveIteratorConcept< Iterator, std::void_t< typename Iterator::iterator_concept > > = true
 
template<typename Iterator, typename = void>
constexpr bool kHaveIteratorCategory = false
 
template<typename Iterator>
constexpr bool kHaveIteratorCategory< Iterator, std::void_t< typename Iterator::iterator_category > > = true
 

Macro Definition Documentation

◆ V8_HAVE_SPACESHIP_OPERATOR

#define V8_HAVE_SPACESHIP_OPERATOR   0

Definition at line 34 of file v8-internal.h.