11#if !defined(DART_PRECOMPILED_RUNTIME)
55#if !defined(DART_PRECOMPILED_RUNTIME)
61 if (
a.IsInstance() &&
b.IsInstance()) {
62 return Instance::Cast(
a).IsIdenticalTo(Instance::Cast(
b));
64 return a.ptr() ==
b.ptr();
72 return type.IsDoubleType();
76 return type.IsBoolType();
80 return type.IsIntType() ||
type.IsIntegerImplementationType() ||
81 type.IsSmiType() ||
type.IsMintType();
85 return type.IsSmiType();
89bool IsNotTemporaryScopedHandle(
const Object& obj) {
90 return obj.IsNotTemporaryScopedHandle();
95 bool Is##clazz##Handle(const Object& obj) { \
96 return obj.Is##clazz(); \
102 return obj.IsSmi() || obj.
IsOld();
111 if (obj.IsTypeArguments()) {
112 return TypeArguments::Cast(obj).Hash();
114 if (obj.IsInstance()) {
115 return Instance::Cast(obj).CanonicalizeHash();
118 return Code::Cast(obj).Hash();
120 if (obj.IsFunction()) {
121 return Function::Cast(obj).Hash();
124 return Field::Cast(obj).Hash();
126 if (obj.IsICData()) {
127 return ICData::Cast(obj).Hash();
150 return Object::null_object();
154 return Object::sentinel();
166 return Object::empty_type_arguments();
170 return dart::Type::dynamic_type();
178 return dart::Type::void_type();
187 return Class::Handle(object_store->growable_object_array_class());
221 intptr_t num_arguments) {
227 if (
object.IsICData()) {
228 return ICData::Cast(
object).IsOriginal();
229 }
else if (
object.IsField()) {
230 return Field::Cast(
object).IsOriginal();
240 if (
object.IsInteger()) {
241 *
value = Integer::Cast(
object).AsInt64Value();
262 ASSERT(!math_lib.IsNull());
264 math_lib.LookupClassAllowPrivate(dart::Symbols::_Random()));
265 ASSERT(!random_class.IsNull());
267 random_class.LookupInstanceFieldAllowPrivate(dart::Symbols::_state()));
272 const auto& convert_lib =
274 ASSERT(!convert_lib.IsNull());
276 convert_lib.LookupClassAllowPrivate(dart::Symbols::_Utf8Decoder()));
277 ASSERT(!_utf8decoder_class.IsNull());
279 _utf8decoder_class.LookupInstanceFieldAllowPrivate(
280 dart::Symbols::_scanFlags()));
281 return scan_flags_field;
288#if defined(TARGET_ARCH_IA32)
289uword SymbolsPredefinedAddress() {
295 return dart::StubCode::AllocateArray();
299 return dart::StubCode::Subtype2TestCache();
303 return dart::StubCode::Subtype3TestCache();
307 return dart::StubCode::Subtype4TestCache();
311 return dart::StubCode::Subtype6TestCache();
315 return dart::StubCode::Subtype7TestCache();
318#define DEFINE_ALIAS(name) \
319 const RuntimeEntry& k##name##RuntimeEntry(dart::k##name##RuntimeEntry);
323#define DEFINE_ALIAS(type, name, ...) \
324 const RuntimeEntry& k##name##RuntimeEntry(dart::k##name##RuntimeEntry);
333 return target::Thread::OffsetFromThread(runtime_entry_);
337 return runtime_entry_->
is_leaf();
371word Object::tags_offset() {
375const word UntaggedObject::kCardRememberedBit =
382const word UntaggedObject::kOldAndNotRememberedBit =
393const word UntaggedObject::kClassIdTagPos =
396const word UntaggedObject::kClassIdTagSize =
403const word UntaggedObject::kSizeTagMaxSizeTag =
407const word UntaggedObject::kTagBitsSizeTagPos =
410const word UntaggedAbstractType::kTypeStateFinalizedInstantiated =
412const word UntaggedAbstractType::kTypeStateShift =
414const word UntaggedAbstractType::kTypeStateBits =
416const word UntaggedAbstractType::kNullabilityMask =
419const word UntaggedType::kTypeClassIdShift =
422const word UntaggedTypeParameter::kIsFunctionTypeParameterBit =
425const word UntaggedObject::kBarrierOverlapShift =
428const word UntaggedObject::kGenerationalBarrierMask =
431const word UntaggedObject::kIncrementalBarrierMask =
450 switch (handle.
id()) {
452 return Mint::InstanceSize();
454 return Double::InstanceSize();
456 return Int32x4::InstanceSize();
458 return Float32x4::InstanceSize();
460 return Float64x2::InstanceSize();
462 return Object::InstanceSize();
464 return Instance::InstanceSize();
465 case kGrowableObjectArrayCid:
466 return GrowableObjectArray::InstanceSize();
468 return Closure::InstanceSize();
469 case kTypedDataBaseCid:
470 return TypedDataBase::InstanceSize();
472 return Map::InstanceSize();
474 return Set::InstanceSize();
475 case kUnhandledExceptionCid:
476 return UnhandledException::InstanceSize();
477 case kWeakPropertyCid:
478 return WeakProperty::InstanceSize();
479 case kWeakReferenceCid:
480 return WeakReference::InstanceSize();
482 return Finalizer::InstanceSize();
483 case kFinalizerEntryCid:
484 return FinalizerEntry::InstanceSize();
485 case kNativeFinalizerCid:
486 return NativeFinalizer::InstanceSize();
491 case kDynamicLibraryCid:
492#define HANDLE_CASE(clazz) case kFfi##clazz##Cid:
495#define HANDLE_CASE(clazz) \
496 case kTypedData##clazz##Cid: \
497 case kTypedData##clazz##ViewCid: \
498 case kExternalTypedData##clazz##Cid: \
499 case kUnmodifiableTypedData##clazz##ViewCid:
508 FATAL(
"Unsupported class for size translation: %s (id=%" Pd
509 ", kNumPredefinedCids=%" Pd ")\n",
533bool Class::HasTypeArgumentsField(
const dart::Class& klass) {
538intptr_t Class::TypeArgumentsFieldOffset(
const dart::Class& klass) {
542bool Class::TraceAllocation(
const dart::Class& klass) {
546word Instance::first_field_offset() {
550word Instance::native_fields_array_offset() {
554word Instance::DataOffsetFor(intptr_t
cid) {
560 return TypedData::payload_offset();
564 case kImmutableArrayCid:
565 return Array::data_offset();
566 case kTypeArgumentsCid:
567 return TypeArguments::types_offset();
568 case kOneByteStringCid:
569 return OneByteString::data_offset();
570 case kTwoByteStringCid:
571 return TwoByteString::data_offset();
573 return Record::field_offset(0);
576 return Array::data_offset();
580word Instance::ElementSizeFor(intptr_t
cid) {
588 case kImmutableArrayCid:
589 return kCompressedWordSize;
590 case kTypeArgumentsCid:
591 return kCompressedWordSize;
592 case kOneByteStringCid:
594 case kTwoByteStringCid:
602word ICData::CodeIndexFor(
word num_args) {
606word ICData::CountIndexFor(
word num_args) {
610word ICData::TargetIndexFor(
word num_args) {
614word ICData::ExactnessIndexFor(
word num_args) {
618word ICData::TestEntryLengthFor(
word num_args,
bool exactness_check) {
622word ICData::EntryPointIndexFor(
word num_args) {
626const word MegamorphicCache::kSpreadFactor =
636#define DEFINE_CONSTANT(Class, Name) const word Class::Name = Class##_##Name;
638#define DEFINE_ARRAY_SIZEOF(clazz, name, ElementOffset) \
639 word clazz::name() { \
642 word clazz::name(intptr_t length) { \
643 return RoundedAllocationSize(clazz::ElementOffset(length)); \
646#define DEFINE_PAYLOAD_SIZEOF(clazz, name, header) \
647 word clazz::name() { \
650 word clazz::name(word payload_size) { \
651 return RoundedAllocationSize(clazz::header() + payload_size); \
654#if defined(TARGET_ARCH_IA32)
656#define DEFINE_FIELD(clazz, name) \
657 word clazz::name() { \
658 return clazz##_##name; \
661#define DEFINE_ARRAY(clazz, name) \
662 word clazz::name(intptr_t index) { \
663 return clazz##_elements_start_offset + index * clazz##_element_size; \
666#define DEFINE_SIZEOF(clazz, name, what) \
667 word clazz::name() { \
668 return clazz##_##name; \
671#define DEFINE_RANGE(Class, Getter, Type, First, Last, Filter) \
672 word Class::Getter(Type index) { \
673 return Class##_##Getter[static_cast<intptr_t>(index) - \
674 static_cast<intptr_t>(First)]; \
695#define DEFINE_JIT_FIELD(clazz, name) \
696 word clazz::name() { \
697 if (FLAG_precompiled_mode) { \
698 FATAL("Use of JIT-only field %s in precompiled mode", \
699 #clazz "::" #name); \
701 return clazz##_##name; \
704#define DEFINE_JIT_ARRAY(clazz, name) \
705 word clazz::name(intptr_t index) { \
706 if (FLAG_precompiled_mode) { \
707 FATAL("Use of JIT-only array %s in precompiled mode", \
708 #clazz "::" #name); \
710 return clazz##_elements_start_offset + index * clazz##_element_size; \
713#define DEFINE_JIT_SIZEOF(clazz, name, what) \
714 word clazz::name() { \
715 if (FLAG_precompiled_mode) { \
716 FATAL("Use of JIT-only sizeof %s in precompiled mode", \
717 #clazz "::" #name); \
719 return clazz##_##name; \
722#define DEFINE_JIT_RANGE(Class, Getter, Type, First, Last, Filter) \
723 word Class::Getter(Type index) { \
724 if (FLAG_precompiled_mode) { \
725 FATAL("Use of JIT-only range %s in precompiled mode", \
726 #Class "::" #Getter); \
728 return Class##_##Getter[static_cast<intptr_t>(index) - \
729 static_cast<intptr_t>(First)]; \
740#undef DEFINE_JIT_FIELD
741#undef DEFINE_JIT_ARRAY
742#undef DEFINE_JIT_SIZEOF
743#undef DEFINE_JIT_RANGE
745#if defined(DART_PRECOMPILER)
751#define DEFINE_AOT_FIELD(clazz, name) \
752 word clazz::name() { \
753 return AOT_##clazz##_##name; \
756#define DEFINE_AOT_ARRAY(clazz, name) \
757 word clazz::name(intptr_t index) { \
758 return AOT_##clazz##_elements_start_offset + \
759 index * AOT_##clazz##_element_size; \
762#define DEFINE_AOT_SIZEOF(clazz, name, what) \
763 word clazz::name() { \
764 return AOT_##clazz##_##name; \
767#define DEFINE_AOT_RANGE(Class, Getter, Type, First, Last, Filter) \
768 word Class::Getter(Type index) { \
769 return AOT_##Class##_##Getter[static_cast<intptr_t>(index) - \
770 static_cast<intptr_t>(First)]; \
773#define DEFINE_AOT_FIELD(clazz, name) \
774 word clazz::name() { \
775 FATAL("Use of AOT-only field %s outside of the precompiler", \
776 #clazz "::" #name); \
779#define DEFINE_AOT_ARRAY(clazz, name) \
780 word clazz::name(intptr_t index) { \
781 FATAL("Use of AOT-only array %s outside of the precompiler", \
782 #clazz "::" #name); \
785#define DEFINE_AOT_SIZEOF(clazz, name, what) \
786 word clazz::name() { \
787 FATAL("Use of AOT-only sizeof %s outside of the precompiler", \
788 #clazz "::" #name); \
791#define DEFINE_AOT_RANGE(Class, Getter, Type, First, Last, Filter) \
792 word Class::Getter(Type index) { \
793 FATAL("Use of AOT-only range %s outside of the precompiler", \
794 #Class "::" #Getter); \
806#undef DEFINE_AOT_FIELD
807#undef DEFINE_AOT_ARRAY
808#undef DEFINE_AOT_SIZEOF
809#undef DEFINE_AOT_RANGE
811#define DEFINE_FIELD(clazz, name) \
812 word clazz::name() { \
813 return FLAG_precompiled_mode ? AOT_##clazz##_##name : clazz##_##name; \
816#define DEFINE_ARRAY(clazz, name) \
817 word clazz::name(intptr_t index) { \
818 if (FLAG_precompiled_mode) { \
819 return AOT_##clazz##_elements_start_offset + \
820 index * AOT_##clazz##_element_size; \
822 return clazz##_elements_start_offset + index * clazz##_element_size; \
826#define DEFINE_SIZEOF(clazz, name, what) \
827 word clazz::name() { \
828 return FLAG_precompiled_mode ? AOT_##clazz##_##name : clazz##_##name; \
831#define DEFINE_RANGE(Class, Getter, Type, First, Last, Filter) \
832 word Class::Getter(Type index) { \
833 if (FLAG_precompiled_mode) { \
834 return AOT_##Class##_##Getter[static_cast<intptr_t>(index) - \
835 static_cast<intptr_t>(First)]; \
837 return Class##_##Getter[static_cast<intptr_t>(index) - \
838 static_cast<intptr_t>(First)]; \
856#undef DEFINE_PAYLOAD_SIZEOF
857#undef DEFINE_CONSTANT
869 return FLAG_precompiled_mode;
872word Instructions::HeaderSize() {
875 :
Utils::RoundUp(UnalignedHeaderSize(), kNonBarePayloadAlignment);
878word Instructions::InstanceSize() {
882word Instructions::InstanceSize(
word payload_size) {
884 ? kBarePayloadAlignment
886 return Utils::RoundUp(Instructions::HeaderSize() + payload_size, alignment);
889word Thread::stack_overflow_shared_stub_entry_point_offset(
bool fpu_regs) {
890 return fpu_regs ? stack_overflow_shared_with_fpu_regs_entry_point_offset()
891 : stack_overflow_shared_without_fpu_regs_entry_point_offset();
894uword Thread::full_safepoint_state_unacquired() {
898uword Thread::full_safepoint_state_acquired() {
902uword Thread::generated_execution_state() {
906uword Thread::native_execution_state() {
910uword Thread::vm_execution_state() {
914uword Thread::vm_tag_dart_id() {
915 return dart::VMTag::kDartTagId;
918uword Thread::exit_through_runtime_call() {
922uword Thread::exit_through_ffi() {
928 return object_null_offset() +
930 dart::Thread::object_null_offset());
935 return AllocateArray_entry_point_offset() +
937 host_offset - dart::Thread::AllocateArray_entry_point_offset());
944 *
offset = Thread::OffsetFromThread(
object);
953 "Expected that size of Smi on HOST is at least as large as on target.");
970 return static_cast<word>(dart::Smi::Cast(
a).Value());
979 return dart::Double::Cast(
a).value();
982#if defined(TARGET_ARCH_IA32)
985 "Can't embed raw pointers to runtime objects when host and "
986 "target word sizes are different");
987 return code.EntryPoint();
990bool CanEmbedAsRawPointerInGeneratedCode(
const dart::Object& obj) {
996 "Can't embed raw pointers to runtime objects when host and "
997 "target word sizes are different");
998 return static_cast<word>(
a.ptr());
1003#if !defined(DART_COMPRESSED_POINTERS)
1012const word Symbols::kNumberOfOneCharCodeSymbols =
1014const word Symbols::kNullCharCodeSymbolOffset =
1019const uint8_t Nullability::kNullable =
1021const uint8_t Nullability::kNonNullable =
1023const uint8_t Nullability::kLegacy =
1026bool Heap::IsAllocatableInNewSpace(intptr_t instance_size) {
1047word Instance::NextFieldOffset() {
1051intptr_t Array::index_at_offset(intptr_t offset_in_bytes) {
1056intptr_t Record::field_index_at_offset(intptr_t offset_in_bytes) {
1061word String::InstanceSize(
word payload_size) {
1062 return RoundedAllocationSize(String::InstanceSize() + payload_size);
1065word LocalVarDescriptors::InstanceSize() {
1069word Integer::NextFieldOffset() {
1073word Smi::InstanceSize() {
1077word Number::NextFieldOffset() {
1087 if (
type.IsNullable()) {
1092 if (
type.IsDoubleType()) {
1096 }
else if (
type.IsFloat32x4Type()) {
1098 cid = kFloat32x4Cid;
1100 }
else if (
type.IsFloat64x2Type()) {
1102 cid = kFloat64x2Cid;
1126const word Array::kMaxElements = Array_kMaxElements;
1127const word Context::kMaxElements = Context_kMaxElements;
1128const word Record::kMaxElements = Record_kMaxElements;
1130const word RecordShape::kNumFieldsMask = RecordShape_kNumFieldsMask;
1131const word RecordShape::kMaxNumFields = RecordShape_kMaxNumFields;
1132const word RecordShape::kFieldNamesIndexShift =
1133 RecordShape_kFieldNamesIndexShift;
1134const word RecordShape::kFieldNamesIndexMask = RecordShape_kFieldNamesIndexMask;
1135const word RecordShape::kMaxFieldNamesIndex = RecordShape_kMaxFieldNamesIndex;
#define RELEASE_ASSERT(cond)
#define CLASS_LIST_FOR_HANDLES(V)
#define CLASS_LIST_FFI_TYPE_MARKER(V)
#define CLASS_LIST_TYPED_DATA(V)
static ArrayPtr NewBoxed(intptr_t type_args_len, intptr_t num_arguments, const Array &optional_arguments_names, Heap::Space space=Heap::kOld)
static intptr_t index_at_offset(intptr_t offset_in_bytes)
static constexpr bool UseCardMarkingForAllocation(const intptr_t array_length)
static constexpr bool IsValidLength(intptr_t len)
static constexpr uword encode(ClassIdTagType value)
static const Bool & False()
static const Bool & True()
bool TraceAllocation(IsolateGroup *isolate_group) const
intptr_t target_type_arguments_field_offset() const
intptr_t target_instance_size() const
intptr_t NumTypeArguments() const
intptr_t host_type_arguments_field_offset() const
bool HasCompressedPointers() const
static constexpr intptr_t kNoTypeArguments
static uword EntryPointOf(const CodePtr code)
static bool IsValidLength(intptr_t len)
static intptr_t InstanceSize()
static intptr_t FieldOffsetFor(intptr_t field_id)
void set_is_unboxed(bool b) const
intptr_t TargetOffset() const
void set_guarded_cid(intptr_t cid) const
void set_guarded_list_length_in_object_offset(intptr_t offset) const
intptr_t field_id() const
void set_is_nullable(bool val) const
void set_guarded_list_length(intptr_t list_length) const
static bool SupportsUnboxedDoubles()
static bool SupportsUnboxedSimd128()
static intptr_t ExactnessIndexFor(intptr_t num_args)
static intptr_t CodeIndexFor(intptr_t num_args)
static intptr_t TargetIndexFor(intptr_t num_args)
static intptr_t CountIndexFor(intptr_t num_args)
static intptr_t TestEntryLengthFor(intptr_t num_args, bool tracking_exactness)
static intptr_t EntryPointIndexFor(intptr_t num_args)
static intptr_t NextFieldOffset()
static intptr_t NativeFieldsOffset()
ObjectStore * object_store() const
static IsolateGroup * Current()
static LibraryPtr ConvertLibrary()
static LibraryPtr MathLibrary()
DART_NORETURN void Jump(int value, const Error &error)
static constexpr intptr_t kSpreadFactor
intptr_t GetClassId() const
bool InVMIsolateHeap() const
static bool ShouldHaveImmutabilityBitSet(classid_t class_id)
virtual const char * ToCString() const
static Object & ZoneHandle()
static constexpr intptr_t kHashBits
static constexpr intptr_t kBytesPerElement
static intptr_t field_index_at_offset(intptr_t offset_in_bytes)
static intptr_t function_offset(intptr_t cid, bool sticky)
intptr_t argument_count() const
static intptr_t RawValue(intptr_t value)
static StringPtr New(const char *cstr, Heap::Space space=Heap::kNew)
static constexpr int kNumberOfOneCharCodeSymbols
static constexpr int kNullCharCodeSymbolOffset
static StringPtr * PredefinedAddress()
LongJumpScope * long_jump_base() const
static uword full_safepoint_state_unacquired()
static intptr_t OffsetFromThread(const Object &object)
static Thread * Current()
@ kExitThroughRuntimeCall
static bool CanLoadFromThread(const Object &object)
static uword full_safepoint_state_acquired()
static constexpr intptr_t kBytesPerElement
static TypePtr ObjectType()
intptr_t ElementSizeInBytes() const
static constexpr intptr_t kNullabilityMask
static constexpr intptr_t kTypeStateBits
static constexpr intptr_t kTypeStateShift
static constexpr intptr_t kMaxSizeTagInUnitsOfAlignment
static constexpr bool SizeFits(intptr_t size)
static constexpr uword encode(intptr_t size)
static constexpr intptr_t kIncrementalBarrierMask
static constexpr intptr_t kGenerationalBarrierMask
static constexpr intptr_t kBarrierOverlapShift
@ kOldAndNotRememberedBit
static constexpr intptr_t kIsFunctionTypeParameterBit
static constexpr intptr_t kTypeClassIdShift
static bool IsInt(intptr_t N, T value)
static constexpr T RoundUp(T x, uintptr_t alignment, uintptr_t offset=0)
static constexpr bool IsAligned(T x, uintptr_t alignment, uintptr_t offset=0)
intptr_t argument_count() const
word OffsetFromThread() const
static word InstanceSize()
static word InstanceSize()
static const uint8_t buffer[]
static word TranslateOffsetInWords(word offset)
uword MakeTagWordForNewSpaceObject(classid_t cid, uword instance_size)
bool WillAllocateNewOrRememberedContext(intptr_t num_context_variables)
static uword GetInstanceSizeImpl(const dart::Class &handle)
static word TranslateOffsetInWordsToHost(word offset)
void UnboxFieldIfSupported(const dart::Field &field, const dart::AbstractType &type)
bool CanLoadFromThread(const dart::Object &object, intptr_t *offset)
bool WillAllocateNewOrRememberedArray(intptr_t length)
bool IsTypedDataClassId(intptr_t cid)
double DoubleValue(const dart::Object &a)
word ToRawSmi(const dart::Object &a)
bool IsDouble(const dart::Object &a)
bool SizeFitsInSizeTag(uword instance_size)
bool WillAllocateNewOrRememberedObject(intptr_t instance_size)
word SmiValue(const dart::Object &a)
static DART_FORCE_INLINE bool BareInstructionsPayloads()
const word kPageSizeInWords
const Type & ObjectType()
void BailoutWithBranchOffsetError()
const Field & LookupConvertUtf8DecoderScanFlagsField()
const Class & Int32x4Class()
Object & NewZoneHandle(Zone *zone)
static constexpr intptr_t kHostWordSize
const Class & Float64x2Class()
bool IsBoolType(const AbstractType &type)
word LookupFieldOffsetInBytes(const Field &field)
word TypedDataMaxNewSpaceElements(classid_t cid)
const Class & GrowableObjectArrayClass()
const Class & Float32x4Class()
intptr_t ObjectHash(const Object &obj)
word TypedDataElementSizeInBytes(classid_t cid)
bool IsOriginalObject(const Object &object)
int32_t CreateJitCookie()
void SetToNull(Object *obj)
const String & AllocateString(const char *buffer)
const Array & ArgumentsDescriptorBoxed(intptr_t type_args_len, intptr_t num_arguments)
const Code & StubCodeSubtype2TestCache()
const Bool & TrueObject()
bool IsDoubleType(const AbstractType &type)
const Code & StubCodeSubtype6TestCache()
const Code & StubCodeSubtype7TestCache()
const Code & StubCodeSubtype3TestCache()
bool IsInOldSpace(const Object &obj)
const Object & SentinelObject()
bool IsEqualType(const AbstractType &a, const AbstractType &b)
bool IsSubtypeOfInt(const AbstractType &type)
bool IsSameObject(const Object &a, const Object &b)
const Class & ClosureClass()
const Bool & FalseObject()
const Object & NullObject()
const Class & DoubleClass()
const Field & LookupMathRandomStateFieldOffset()
const Object & EmptyTypeArguments()
bool IsSmiType(const AbstractType &type)
const char * ObjectToCString(const Object &obj)
const Code & StubCodeAllocateArray()
const Class & MintClass()
const Code & StubCodeSubtype4TestCache()
bool HasIntegerValue(const dart::Object &object, int64_t *value)
const Type & DynamicType()
static constexpr intptr_t kNullIdentityHash
bool IsTypedDataViewClassId(intptr_t index)
bool IsTypedDataClassId(intptr_t index)
static constexpr intptr_t kPageSize
bool IsUnmodifiableTypedDataViewClassId(intptr_t index)
@ kUnmodifiableByteDataViewCid
bool IsAllocatableInNewSpace(intptr_t size)
static constexpr intptr_t kCompressedWordSize
constexpr intptr_t kWordSize
static constexpr intptr_t kPageMask
static constexpr intptr_t kNewAllocatableSize
bool IsExternalTypedDataClassId(intptr_t index)
#define DEFINE_JIT_SIZEOF(clazz, name, what)
#define DEFINE_ARRAY(clazz, name)
#define DEFINE_CONSTANT(Class, Name)
#define DEFINE_ALIAS(name)
#define DEFINE_AOT_FIELD(clazz, name)
#define DEFINE_FIELD(clazz, name)
#define HANDLE_CASE(clazz)
#define DEFINE_JIT_RANGE(Class, Getter, Type, First, Last, Filter)
#define DEFINE_JIT_ARRAY(clazz, name)
#define DEFINE_RANGE(Class, Getter, Type, First, Last, Filter)
#define DEFINE_JIT_FIELD(clazz, name)
#define DEFINE_SIZEOF(clazz, name, what)
#define RUNTIME_ENTRY_LIST(V)
#define LEAF_RUNTIME_ENTRY_LIST(V)
#define JIT_OFFSETS_LIST(FIELD, ARRAY, SIZEOF, ARRAY_SIZEOF, PAYLOAD_SIZEOF, RANGE, CONSTANT)
#define AOT_OFFSETS_LIST(FIELD, ARRAY, SIZEOF, ARRAY_SIZEOF, PAYLOAD_SIZEOF, RANGE, CONSTANT)
#define COMMON_OFFSETS_LIST(FIELD, ARRAY, SIZEOF, ARRAY_SIZEOF, PAYLOAD_SIZEOF, RANGE, CONSTANT)
static constexpr intptr_t kObjectAlignment