v8  10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
v8-internal.h File Reference
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include <type_traits>
#include "v8-version.h"
#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 >
 
class  Internals
 
struct  CastCheck< PerformCheck >
 
class  BackingStoreBase
 

Namespaces

 v8
 
 v8::internal
 

Macros

#define MAKE_TAG(v)   (static_cast<uint64_t>(v) << kExternalPointerTagShift)
 

Typedefs

typedef uintptr_t Address
 
using PlatformSmiTagging = SmiTagging< kApiTaggedSize >
 
using SandboxedPointer_t = Address
 
using ExternalPointer_t = Address
 

Enumerations

enum  ExternalPointerTag : uint64_t {
  kExternalPointerNullTag = MAKE_TAG(0b0000000000000000) , kExternalPointerFreeEntryTag = MAKE_TAG(0b0111111110000000) , kExternalStringResourceTag = MAKE_TAG(0b1000000011111111) , kExternalStringResourceDataTag = MAKE_TAG(0b1000000101111111) ,
  kForeignForeignAddressTag = MAKE_TAG(0b1000000110111111) , kNativeContextMicrotaskQueueTag = MAKE_TAG(0b1000000111011111) , kEmbedderDataSlotPayloadTag = MAKE_TAG(0b1000000111101111) , kCodeEntryPointTag = MAKE_TAG(0b1000000111110111) ,
  kExternalObjectValueTag = MAKE_TAG(0b1000000111111011)
}
 

Functions

constexpr bool PointerCompressionIsEnabled ()
 
constexpr bool SmiValuesAre31Bits ()
 
constexpr bool SmiValuesAre32Bits ()
 
constexpr bool SandboxIsEnabled ()
 
constexpr bool SandboxedExternalPointersAreEnabled ()
 
V8_EXPORT Address DecodeExternalPointerImpl (const Isolate *isolate, ExternalPointer_t pointer, ExternalPointerTag tag)
 
V8_EXPORT internal::Isolate * IsolateFromNeverReadOnlySpaceObject (Address obj)
 
V8_EXPORT bool ShouldThrowOnError (v8::internal::Isolate *isolate)
 
V8_EXPORT bool CanHaveInternalField (int instance_type)
 
template<class T >
V8_INLINE void PerformCastCheck (T *data)
 

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 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 uint64_t kExternalPointerTagMask = 0xffff000000000000
 
constexpr uint64_t kExternalPointerTagShift = 48
 
constexpr int kGarbageCollectionReasonMaxValue = 25
 

Macro Definition Documentation

◆ MAKE_TAG

#define MAKE_TAG (   v)    (static_cast<uint64_t>(v) << kExternalPointerTagShift)

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