v8  9.4.146 (node 16.13.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
 

Typedefs

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

Enumerations

enum  ExternalPointerTag : uint64_t {
  kExternalPointerNullTag = 0x0000000000000000 , kArrayBufferBackingStoreTag = 0x00ff000000000000 , kTypedArrayExternalPointerTag = 0x017f000000000000 , kDataViewDataPointerTag = 0x01bf000000000000 ,
  kExternalStringResourceTag = 0x01df000000000000 , kExternalStringResourceDataTag = 0x01ef000000000000 , kForeignForeignAddressTag = 0x01f7000000000000 , kNativeContextMicrotaskQueueTag = 0x01fb000000000000 ,
  kEmbedderDataSlotPayloadTag = 0x01fd000000000000 , kCodeEntryPointTag = 0x01fe000000000000
}
 

Functions

constexpr bool PointerCompressionIsEnabled ()
 
constexpr bool HeapSandboxIsEnabled ()
 
constexpr bool SmiValuesAre31Bits ()
 
constexpr bool SmiValuesAre32Bits ()
 
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)
 
V8_EXPORT bool CopyAndConvertArrayToCppBufferInt32 (Local< Array > src, int32_t *dst, uint32_t max_length)
 
V8_EXPORT bool CopyAndConvertArrayToCppBufferFloat64 (Local< Array > src, double *dst, uint32_t max_length)
 

Variables

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
 
constexpr uint64_t kExternalPointerTagMask = 0xffff000000000000
 
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)