v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
instance-type.h File Reference
#include "include/v8-internal.h"
#include "src/objects/objects-definitions.h"
#include "torque-generated/instance-types.h"
#include "src/objects/object-macros.h"
#include "src/objects/object-macros-undef.h"
Include dependency graph for instance-type.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
 
namespace  v8::internal::InstanceTypeChecker
 

Macros

#define MAKE_TORQUE_INSTANCE_TYPE(TYPE, value)
 
#define CHECK_STRING_RANGE(TYPE, ...)
 
#define CHECK_NONSTRING_RANGE(TYPE)
 
#define CHECK_INSTANCE_TYPE(TYPE)
 
#define UNIQUE_LEAF_INSTANCE_TYPE_MAP_LIST_GENERATOR(V, _)
 
#define UNIQUE_INSTANCE_TYPE_MAP_LIST_GENERATOR(V, _)
 

Enumerations

enum  v8::internal::StringRepresentationTag {
  v8::internal::kSeqStringTag = 0x0 , v8::internal::kConsStringTag = 0x1 , v8::internal::kExternalStringTag = 0x2 , v8::internal::kSlicedStringTag = 0x3 ,
  v8::internal::kThinStringTag = 0x5
}
 
enum  v8::internal::InstanceType : uint16_t {
  v8::internal::INTERNALIZED_TWO_BYTE_STRING_TYPE , v8::internal::INTERNALIZED_ONE_BYTE_STRING_TYPE , v8::internal::EXTERNAL_INTERNALIZED_TWO_BYTE_STRING_TYPE , v8::internal::EXTERNAL_INTERNALIZED_ONE_BYTE_STRING_TYPE ,
  v8::internal::UNCACHED_EXTERNAL_INTERNALIZED_TWO_BYTE_STRING_TYPE , v8::internal::UNCACHED_EXTERNAL_INTERNALIZED_ONE_BYTE_STRING_TYPE , v8::internal::SEQ_TWO_BYTE_STRING_TYPE , v8::internal::SEQ_ONE_BYTE_STRING_TYPE ,
  v8::internal::CONS_TWO_BYTE_STRING_TYPE , v8::internal::CONS_ONE_BYTE_STRING_TYPE , v8::internal::SLICED_TWO_BYTE_STRING_TYPE , v8::internal::SLICED_ONE_BYTE_STRING_TYPE ,
  v8::internal::EXTERNAL_TWO_BYTE_STRING_TYPE , v8::internal::EXTERNAL_ONE_BYTE_STRING_TYPE , v8::internal::UNCACHED_EXTERNAL_TWO_BYTE_STRING_TYPE , v8::internal::UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE ,
  v8::internal::THIN_TWO_BYTE_STRING_TYPE , v8::internal::THIN_ONE_BYTE_STRING_TYPE , v8::internal::SHARED_SEQ_TWO_BYTE_STRING_TYPE = SEQ_TWO_BYTE_STRING_TYPE | kSharedStringTag , v8::internal::SHARED_SEQ_ONE_BYTE_STRING_TYPE = SEQ_ONE_BYTE_STRING_TYPE | kSharedStringTag ,
  v8::internal::SHARED_EXTERNAL_TWO_BYTE_STRING_TYPE , v8::internal::SHARED_EXTERNAL_ONE_BYTE_STRING_TYPE , v8::internal::SHARED_UNCACHED_EXTERNAL_TWO_BYTE_STRING_TYPE , v8::internal::SHARED_UNCACHED_EXTERNAL_ONE_BYTE_STRING_TYPE ,
  v8::internal::FIRST_UNIQUE_NAME_TYPE = INTERNALIZED_TWO_BYTE_STRING_TYPE , v8::internal::LAST_UNIQUE_NAME_TYPE = SYMBOL_TYPE , v8::internal::FIRST_NONSTRING_TYPE = SYMBOL_TYPE , v8::internal::FIRST_CALLABLE_JS_FUNCTION_TYPE = FIRST_JS_FUNCTION_TYPE ,
  v8::internal::LAST_CALLABLE_JS_FUNCTION_TYPE = JS_CLASS_CONSTRUCTOR_TYPE - 1 , v8::internal::LAST_SPECIAL_RECEIVER_TYPE = LAST_JS_SPECIAL_OBJECT_TYPE , v8::internal::LAST_CUSTOM_ELEMENTS_RECEIVER = LAST_JS_CUSTOM_ELEMENTS_OBJECT_TYPE , v8::internal::FIRST_TYPE = FIRST_HEAP_OBJECT_TYPE ,
  v8::internal::LAST_TYPE = LAST_HEAP_OBJECT_TYPE , v8::internal::BIGINT_TYPE = BIG_INT_BASE_TYPE , v8::internal::DEPENDENT_CODE_TYPE = WEAK_ARRAY_LIST_TYPE
}
 

Functions

static bool v8::internal::IsShortcutCandidate (int type)
 
V8_EXPORT_PRIVATE std::ostream & v8::internal::operator<< (std::ostream &os, InstanceType instance_type)
 
V8_EXPORT_PRIVATE std::string v8::internal::ToString (InstanceType instance_type)
 
V8_INLINE bool v8::internal::InstanceTypeChecker::IsSeqString (Tagged< Map > map_object)
 
V8_INLINE bool v8::internal::InstanceTypeChecker::IsConsString (Tagged< Map > map_object)
 
V8_INLINE bool v8::internal::InstanceTypeChecker::IsSlicedString (Tagged< Map > map_object)
 
V8_INLINE bool v8::internal::InstanceTypeChecker::IsThinString (Tagged< Map > map_object)
 
V8_INLINE bool v8::internal::InstanceTypeChecker::IsOneByteString (Tagged< Map > map_object)
 
V8_INLINE bool v8::internal::InstanceTypeChecker::IsTwoByteString (Tagged< Map > map_object)
 

Variables

const uint32_t v8::internal::kIsNotStringMask = ~((1 << 7) - 1)
 
const uint32_t v8::internal::kStringTag = 0x0
 
const uint32_t v8::internal::kStringRepresentationMask = (1 << 3) - 1
 
const uint32_t v8::internal::kIsIndirectStringMask = 1 << 0
 
const uint32_t v8::internal::kIsIndirectStringTag = 1 << 0
 
const uint32_t v8::internal::kThinStringTagBit = 1 << 2
 
const uint32_t v8::internal::kStringEncodingMask = 1 << 3
 
const uint32_t v8::internal::kTwoByteStringTag = 0
 
const uint32_t v8::internal::kOneByteStringTag = 1 << 3
 
constexpr uint32_t v8::internal::kStringRepresentationAndEncodingMask
 
constexpr uint32_t v8::internal::kSeqOneByteStringTag = kSeqStringTag | kOneByteStringTag
 
constexpr uint32_t v8::internal::kSeqTwoByteStringTag = kSeqStringTag | kTwoByteStringTag
 
constexpr uint32_t v8::internal::kExternalOneByteStringTag
 
constexpr uint32_t v8::internal::kExternalTwoByteStringTag
 
const uint32_t v8::internal::kUncachedExternalStringMask = 1 << 4
 
const uint32_t v8::internal::kUncachedExternalStringTag = 1 << 4
 
const uint32_t v8::internal::kIsNotInternalizedMask = 1 << 5
 
const uint32_t v8::internal::kNotInternalizedTag = 1 << 5
 
const uint32_t v8::internal::kInternalizedTag = 0
 
const uint32_t v8::internal::kSharedStringMask = 1 << 6
 
const uint32_t v8::internal::kSharedStringTag = 1 << 6
 
constexpr uint32_t v8::internal::kStringRepresentationEncodingAndSharedMask
 
const uint32_t v8::internal::kShortcutTypeMask
 
const uint32_t v8::internal::kShortcutTypeTag = kConsStringTag | kNotInternalizedTag
 
constexpr InstanceType v8::internal::LAST_STRING_TYPE
 
static constexpr InstanceType v8::internal::PROPERTY_DICTIONARY_TYPE = NAME_DICTIONARY_TYPE
 

Macro Definition Documentation

◆ CHECK_INSTANCE_TYPE

#define CHECK_INSTANCE_TYPE ( TYPE)
Value:
static_assert((TYPE >= FIRST_JS_RECEIVER_TYPE && \
TYPE <= LAST_SPECIAL_RECEIVER_TYPE) == \
(IF_WASM(EXPAND, TYPE == WASM_STRUCT_TYPE || \
TYPE == WASM_ARRAY_TYPE ||) \
TYPE == JS_PROXY_TYPE || TYPE == JS_GLOBAL_OBJECT_TYPE || \
TYPE == JS_GLOBAL_PROXY_TYPE || \
TYPE == JS_MODULE_NAMESPACE_TYPE || \
TYPE == JS_SPECIAL_API_OBJECT_TYPE)); \
static_assert((TYPE >= FIRST_JS_RECEIVER_TYPE && \
TYPE <= LAST_CUSTOM_ELEMENTS_RECEIVER) == \
(IF_WASM(EXPAND, TYPE == WASM_STRUCT_TYPE || \
TYPE == WASM_ARRAY_TYPE ||) \
TYPE == JS_PROXY_TYPE || TYPE == JS_GLOBAL_OBJECT_TYPE || \
TYPE == JS_GLOBAL_PROXY_TYPE || \
TYPE == JS_MODULE_NAMESPACE_TYPE || \
TYPE == JS_SPECIAL_API_OBJECT_TYPE || \
TYPE == JS_PRIMITIVE_WRAPPER_TYPE));
#define EXPAND(X)
Definition macros.h:16
#define IF_WASM(V,...)
Definition macros.h:472

Definition at line 245 of file instance-type.h.

◆ CHECK_NONSTRING_RANGE

#define CHECK_NONSTRING_RANGE ( TYPE)
Value:
static_assert(TYPE >= FIRST_NONSTRING_TYPE);

Definition at line 225 of file instance-type.h.

◆ CHECK_STRING_RANGE

#define CHECK_STRING_RANGE ( TYPE,
... )
Value:
static_assert(TYPE < FIRST_NONSTRING_TYPE);

Definition at line 221 of file instance-type.h.

◆ MAKE_TORQUE_INSTANCE_TYPE

#define MAKE_TORQUE_INSTANCE_TYPE ( TYPE,
value )
Value:
TYPE = value,
std::unique_ptr< ValueMirror > value

Definition at line 177 of file instance-type.h.

◆ UNIQUE_INSTANCE_TYPE_MAP_LIST_GENERATOR

#define UNIQUE_INSTANCE_TYPE_MAP_LIST_GENERATOR ( V,
_ )
Value:
V(_, ByteArrayMap, byte_array_map, ByteArray) \
V(_, NameDictionaryMap, name_dictionary_map, NameDictionary) \
V(_, OrderedNameDictionaryMap, ordered_name_dictionary_map, \
OrderedNameDictionary) \
V(_, GlobalDictionaryMap, global_dictionary_map, GlobalDictionary) \
V(_, GlobalPropertyCellMap, global_property_cell_map, PropertyCell) \
V(_, GlobalContextSidePropertyCellMap, \
global_context_side_property_cell_map, ContextSidePropertyCell) \
V(_, HeapNumberMap, heap_number_map, HeapNumber) \
V(_, WeakFixedArrayMap, weak_fixed_array_map, WeakFixedArray) \
V(_, ScopeInfoMap, scope_info_map, ScopeInfo) \
V(_, WeakArrayListMap, weak_array_list_map, WeakArrayList) \
TORQUE_DEFINED_MAP_CSA_LIST_GENERATOR(V, _)
#define V(Name)
#define UNIQUE_LEAF_INSTANCE_TYPE_MAP_LIST_GENERATOR(V, _)
#define _

Definition at line 318 of file instance-type.h.

◆ UNIQUE_LEAF_INSTANCE_TYPE_MAP_LIST_GENERATOR

#define UNIQUE_LEAF_INSTANCE_TYPE_MAP_LIST_GENERATOR ( V,
_ )

Definition at line 281 of file instance-type.h.