5#ifndef RUNTIME_VM_COMPILER_RUNTIME_API_H_
6#define RUNTIME_VM_COMPILER_RUNTIME_API_H_
45 class Untagged##clazz; \
124 intptr_t num_arguments);
126template <
typename To,
typename From>
128 return reinterpret_cast<const To&
>(from);
153bool IsNotTemporaryScopedHandle(
const Object& obj);
174 return *
reinterpret_cast<const Object*
>(&handle);
178 return *
reinterpret_cast<const Object*
>(&handle);
213#if defined(TARGET_ARCH_IA32)
214uword SymbolsPredefinedAddress();
235 : runtime_entry_(runtime_entry) {}
241#define DECLARE_RUNTIME_ENTRY(name) \
242 extern const RuntimeEntry& k##name##RuntimeEntry;
244#undef DECLARE_RUNTIME_ENTRY
246#define DECLARE_RUNTIME_ENTRY(type, name, ...) \
247 extern const RuntimeEntry& k##name##RuntimeEntry;
249#undef DECLARE_RUNTIME_ENTRY
263#if defined(TARGET_ARCH_IS_32_BIT)
265typedef uint32_t
uword;
267#elif defined(TARGET_ARCH_IS_64_BIT)
269typedef uint64_t
uword;
272#error "Unsupported architecture"
275static_assert(kWordSize ==
sizeof(
word),
"kWordSize should match sizeof(word)");
277#if !defined(FFI_UNIT_TESTS)
279 "Host word size smaller than target word size");
282#if defined(DART_COMPRESSED_POINTERS)
283static constexpr intptr_t kCompressedWordSize =
kInt32Size;
284static constexpr intptr_t kCompressedWordSizeLog2 =
kInt32SizeLog2;
286static constexpr intptr_t kCompressedWordSize = kWordSize;
287static constexpr intptr_t kCompressedWordSizeLog2 =
kWordSizeLog2;
291static constexpr word kBitsPerWord = 1 << kBitsPerWordLog2;
295constexpr word kWordMax = (
static_cast<uword>(1) << (kBitsPerWord - 1)) - 1;
296constexpr word kWordMin = -(
static_cast<uword>(1) << (kBitsPerWord - 1));
297constexpr uword kUwordMax =
static_cast<word>(-1);
300#if !defined(DART_COMPRESSED_POINTERS)
301constexpr intptr_t kSmiBits = kBitsPerWord - 2;
303constexpr intptr_t kSmiBits = 30;
305constexpr word kSmiMax = (
static_cast<uword>(1) << kSmiBits) - 1;
306constexpr word kSmiMin = -(
static_cast<uword>(1) << kSmiBits);
320 kRequiredNamedParameterFlag,
326static constexpr intptr_t kNumParameterFlagsPerElementLog2 =
328static constexpr intptr_t kNumParameterFlagsPerElement =
329 1 << kNumParameterFlagsPerElementLog2;
330static_assert(kNumParameterFlagsPerElement <=
kSmiBits,
331 "kNumParameterFlagsPerElement should fit in a Smi");
333inline intptr_t RoundedAllocationSize(intptr_t size) {
337extern FrameLayout frame_layout;
339constexpr intptr_t kIntSpillFactor =
sizeof(int64_t) / kWordSize;
340constexpr intptr_t kDoubleSpillFactor =
sizeof(double) / kWordSize;
344inline intptr_t FrameOffsetInBytesForVariable(
const LocalVariable* variable) {
367bool IsSmi(int64_t value);
390#if defined(TARGET_ARCH_IA32)
393bool CanEmbedAsRawPointerInGeneratedCode(
const dart::Object& obj);
406#define FINAL_CLASS() \
407 static word NextFieldOffset() { \
417class UntaggedObject :
public AllStatic {
419 static const word kCardRememberedBit;
420 static const word kCanonicalBit;
421 static const word kNewBit;
422 static const word kOldAndNotRememberedBit;
423 static const word kNotMarkedBit;
424 static const word kImmutableBit;
425 static const word kSizeTagPos;
426 static const word kSizeTagSize;
427 static const word kClassIdTagPos;
428 static const word kClassIdTagSize;
429 static const word kHashTagPos;
430 static const word kHashTagSize;
431 static const word kSizeTagMaxSizeTag;
432 static const word kTagBitsSizeTagPos;
433 static const word kBarrierOverlapShift;
434 static const word kGenerationalBarrierMask;
435 static const word kIncrementalBarrierMask;
437 static bool IsTypedDataClassId(intptr_t
cid);
440class UntaggedAbstractType :
public AllStatic {
442 static const word kTypeStateFinalizedInstantiated;
443 static const word kTypeStateShift;
444 static const word kTypeStateBits;
445 static const word kNullabilityMask;
448class UntaggedType :
public AllStatic {
450 static const word kTypeClassIdShift;
453class UntaggedTypeParameter :
public AllStatic {
455 static const word kIsFunctionTypeParameterBit;
458class Object :
public AllStatic {
461 static word tags_offset();
462 static word InstanceSize();
465class ObjectPool :
public AllStatic {
468 static word element_offset(intptr_t index);
470 static word InstanceSize();
474class Class :
public AllStatic {
476 static word host_type_arguments_field_offset_in_words_offset();
478 static word declaration_type_offset();
480 static word super_type_offset();
483 static word num_type_arguments_offset();
486 static const word kNoTypeArguments;
488 static word InstanceSize();
500 static bool HasCompressedPointers(
const dart::Class& handle);
503 static intptr_t NumTypeArguments(
const dart::Class& klass);
506 static bool HasTypeArgumentsField(
const dart::Class& klass);
509 static intptr_t TypeArgumentsFieldOffset(
const dart::Class& klass);
512 static bool TraceAllocation(
const dart::Class& klass);
515class Instance :
public AllStatic {
518 static word first_field_offset();
519 static word native_fields_array_offset();
520 static word DataOffsetFor(intptr_t
cid);
521 static word ElementSizeFor(intptr_t
cid);
522 static word InstanceSize();
523 static word NextFieldOffset();
526class Function :
public AllStatic {
528 static word code_offset();
529 static word data_offset();
531 static word kind_tag_offset();
532 static word signature_offset();
533 static word usage_counter_offset();
534 static word InstanceSize();
538class CallSiteData :
public AllStatic {
540 static word arguments_descriptor_offset();
543class ICData :
public AllStatic {
545 static word owner_offset();
546 static word entries_offset();
547 static word receivers_static_type_offset();
548 static word state_bits_offset();
550 static word CodeIndexFor(
word num_args);
551 static word CountIndexFor(
word num_args);
552 static word TargetIndexFor(
word num_args);
553 static word ExactnessIndexFor(
word num_args);
554 static word TestEntryLengthFor(
word num_args,
bool exactness_check);
555 static word EntryPointIndexFor(
word num_args);
556 static word NumArgsTestedShift();
557 static word NumArgsTestedMask();
558 static word InstanceSize();
562class MegamorphicCache :
public AllStatic {
564 static const word kSpreadFactor;
565 static word mask_offset();
566 static word buckets_offset();
567 static word InstanceSize();
571class SingleTargetCache :
public AllStatic {
573 static word lower_limit_offset();
574 static word upper_limit_offset();
575 static word entry_point_offset();
576 static word target_offset();
577 static word InstanceSize();
581class Array :
public AllStatic {
583 static word header_size();
584 static word tags_offset();
585 static word data_offset();
586 static word type_arguments_offset();
587 static word length_offset();
588 static word element_offset(intptr_t index);
589 static intptr_t index_at_offset(intptr_t offset_in_bytes);
591 static word InstanceSize();
594 static const word kMaxElements;
595 static const word kMaxNewSpaceElements;
598class GrowableObjectArray :
public AllStatic {
600 static word data_offset();
601 static word type_arguments_offset();
602 static word length_offset();
603 static word InstanceSize();
607class RecordShape :
public AllStatic {
609 static const word kNumFieldsMask;
610 static const word kMaxNumFields;
611 static const word kFieldNamesIndexShift;
612 static const word kFieldNamesIndexMask;
613 static const word kMaxFieldNamesIndex;
616class Record :
public AllStatic {
618 static word shape_offset();
619 static word field_offset(intptr_t index);
620 static intptr_t field_index_at_offset(intptr_t offset_in_bytes);
622 static word InstanceSize();
625 static const word kMaxElements;
628class PointerBase :
public AllStatic {
630 static word data_offset();
633class TypedDataBase :
public AllStatic {
635 static word length_offset();
636 static word InstanceSize();
640class TypedData :
public AllStatic {
642 static word payload_offset();
643 static word HeaderSize();
644 static word InstanceSize();
645 static word InstanceSize(
word lengthInBytes);
649class ExternalTypedData :
public AllStatic {
651 static word InstanceSize();
655class TypedDataView :
public AllStatic {
657 static word offset_in_bytes_offset();
658 static word typed_data_offset();
659 static word InstanceSize();
663class LinkedHashBase :
public AllStatic {
665 static word index_offset();
666 static word data_offset();
667 static word hash_mask_offset();
668 static word used_data_offset();
669 static word deleted_keys_offset();
670 static word type_arguments_offset();
671 static word InstanceSize();
674class ImmutableLinkedHashBase :
public LinkedHashBase {
677 static word data_offset();
680class Map :
public LinkedHashBase {
685class Set :
public LinkedHashBase {
690class FutureOr :
public AllStatic {
692 static word type_arguments_offset();
693 static word InstanceSize();
697class ArgumentsDescriptor :
public AllStatic {
699 static word first_named_entry_offset();
700 static word named_entry_size();
701 static word position_offset();
702 static word name_offset();
703 static word count_offset();
704 static word size_offset();
705 static word type_args_len_offset();
706 static word positional_count_offset();
709class LocalHandle :
public AllStatic {
711 static word ptr_offset();
712 static word InstanceSize();
715class PersistentHandle :
public AllStatic {
717 static word ptr_offset();
720class Pointer :
public AllStatic {
722 static word type_arguments_offset();
723 static word InstanceSize();
727class AbstractType :
public AllStatic {
729 static word flags_offset();
730 static word hash_offset();
731 static word type_test_stub_entry_point_offset();
732 static word InstanceSize();
736class Type :
public AllStatic {
738 static word arguments_offset();
739 static word InstanceSize();
743class FunctionType :
public AllStatic {
745 static word packed_parameter_counts_offset();
746 static word packed_type_parameter_counts_offset();
747 static word named_parameter_names_offset();
748 static word parameter_types_offset();
749 static word type_parameters_offset();
750 static word InstanceSize();
754class RecordType :
public AllStatic {
756 static word InstanceSize();
767class Double :
public AllStatic {
769 static word value_offset();
770 static word InstanceSize();
774class Mint :
public AllStatic {
776 static word value_offset();
777 static word InstanceSize();
781class String :
public AllStatic {
783 static const word kHashBits;
784 static const word kMaxElements;
785 static word hash_offset();
786 static word length_offset();
787 static word InstanceSize();
788 static word InstanceSize(
word payload_size);
792class OneByteString :
public AllStatic {
794 static word data_offset();
796 static word InstanceSize();
799 static const word kMaxNewSpaceElements;
802 static word element_offset(intptr_t index);
805class TwoByteString :
public AllStatic {
807 static word data_offset();
809 static word InstanceSize();
812 static const word kMaxNewSpaceElements;
815 static word element_offset(intptr_t index);
818class Int32x4 :
public AllStatic {
820 static word value_offset();
821 static word InstanceSize();
825class Float32x4 :
public AllStatic {
827 static word value_offset();
828 static word InstanceSize();
832class Float64x2 :
public AllStatic {
834 static word value_offset();
835 static word InstanceSize();
839class DynamicLibrary :
public AllStatic {
841 static word InstanceSize();
845class PatchClass :
public AllStatic {
847 static word InstanceSize();
851class FfiTrampolineData :
public AllStatic {
853 static word InstanceSize();
857class Script :
public AllStatic {
859 static word InstanceSize();
863class Library :
public AllStatic {
865 static word InstanceSize();
869class Namespace :
public AllStatic {
871 static word InstanceSize();
875class KernelProgramInfo :
public AllStatic {
877 static word InstanceSize();
881class PcDescriptors :
public AllStatic {
883 static word HeaderSize();
884 static word InstanceSize();
885 static word InstanceSize(
word payload_size);
889class CodeSourceMap :
public AllStatic {
891 static word HeaderSize();
892 static word InstanceSize();
893 static word InstanceSize(
word payload_size);
897class CompressedStackMaps :
public AllStatic {
899 static word HeaderSize() {
return ObjectHeaderSize() + PayloadHeaderSize(); }
900 static word InstanceSize();
901 static word InstanceSize(
word payload_size);
905 static word ObjectHeaderSize();
906 static word PayloadHeaderSize();
909class LocalVarDescriptors :
public AllStatic {
911 static word InstanceSize();
915class ExceptionHandlers :
public AllStatic {
917 static word element_offset(intptr_t index);
919 static word InstanceSize();
923class ContextScope :
public AllStatic {
925 static word element_offset(intptr_t index);
927 static word InstanceSize();
931class Sentinel :
public AllStatic {
933 static word InstanceSize();
937class UnlinkedCall :
public AllStatic {
939 static word InstanceSize();
945 static word InstanceSize();
949class LanguageError :
public AllStatic {
951 static word InstanceSize();
955class UnhandledException :
public AllStatic {
957 static word exception_offset();
958 static word stacktrace_offset();
959 static word InstanceSize();
963class UnwindError :
public AllStatic {
965 static word InstanceSize();
969class Bool :
public AllStatic {
971 static word InstanceSize();
975class TypeParameter :
public AllStatic {
977 static word InstanceSize();
979 static word index_offset();
982class LibraryPrefix :
public AllStatic {
984 static word InstanceSize();
988class Capability :
public AllStatic {
990 static word InstanceSize();
994class ReceivePort :
public AllStatic {
996 static word send_port_offset();
997 static word handler_offset();
998 static word InstanceSize();
1002class SendPort :
public AllStatic {
1004 static word InstanceSize();
1008class TransferableTypedData :
public AllStatic {
1010 static word InstanceSize();
1014class StackTrace :
public AllStatic {
1016 static word InstanceSize();
1020class SuspendState :
public AllStatic {
1022 static word frame_capacity_offset();
1023 static word frame_size_offset();
1024 static word pc_offset();
1025 static word function_data_offset();
1026 static word then_callback_offset();
1027 static word error_callback_offset();
1028 static word payload_offset();
1030 static word HeaderSize();
1031 static word InstanceSize();
1032 static word InstanceSize(
word payload_size);
1033 static word FrameSizeGrowthGap();
1038class Integer :
public AllStatic {
1040 static word InstanceSize();
1041 static word NextFieldOffset();
1044class Smi :
public AllStatic {
1046 static word InstanceSize();
1050class WeakProperty :
public AllStatic {
1052 static word key_offset();
1053 static word value_offset();
1054 static word InstanceSize();
1058class WeakReference :
public AllStatic {
1060 static word target_offset();
1061 static word type_arguments_offset();
1062 static word InstanceSize();
1066class FinalizerBase :
public AllStatic {
1068 static word all_entries_offset();
1069 static word detachments_offset();
1070 static word entries_collected_offset();
1071 static word isolate_offset();
1075class Finalizer :
public AllStatic {
1077 static word callback_offset();
1078 static word type_arguments_offset();
1079 static word InstanceSize();
1083class NativeFinalizer :
public AllStatic {
1085 static word callback_offset();
1086 static word InstanceSize();
1090class FinalizerEntry :
public AllStatic {
1092 static word detach_offset();
1093 static word external_size_offset();
1094 static word finalizer_offset();
1095 static word next_offset();
1096 static word token_offset();
1097 static word value_offset();
1098 static word InstanceSize();
1102class MirrorReference :
public AllStatic {
1104 static word InstanceSize();
1108class Number :
public AllStatic {
1110 static word InstanceSize();
1111 static word NextFieldOffset();
1114class TimelineStream :
public AllStatic {
1116 static word enabled_offset();
1119class StreamInfo :
public AllStatic {
1121 static word enabled_offset();
1124class MonomorphicSmiableCall :
public AllStatic {
1126 static word expected_cid_offset();
1127 static word entrypoint_offset();
1128 static word target_offset();
1129 static word InstanceSize();
1133class TsanUtils :
public AllStatic {
1135 static word setjmp_function_offset();
1136 static word setjmp_buffer_offset();
1137 static word exception_pc_offset();
1138 static word exception_sp_offset();
1139 static word exception_fp_offset();
1142class Thread :
public AllStatic {
1144 static word api_top_scope_offset();
1145 static word double_truncate_round_supported_offset();
1146 static word exit_through_ffi_offset();
1147 static uword exit_through_runtime_call();
1148 static uword exit_through_ffi();
1149 static word dart_stream_offset();
1150 static word service_extension_stream_offset();
1151 static word predefined_symbols_address_offset();
1152 static word optimize_entry_offset();
1153 static word deoptimize_entry_offset();
1154 static word megamorphic_call_checked_entry_offset();
1155 static word active_exception_offset();
1156 static word active_stacktrace_offset();
1157 static word resume_pc_offset();
1158 static word saved_shadow_call_stack_offset();
1159 static word marking_stack_block_offset();
1160 static word top_exit_frame_info_offset();
1161 static word top_resource_offset();
1162 static word global_object_pool_offset();
1163 static word object_null_offset();
1164 static word bool_true_offset();
1165 static word bool_false_offset();
1166 static word dispatch_table_array_offset();
1167 static word top_offset();
1168 static word end_offset();
1169 static word isolate_offset();
1170 static word isolate_group_offset();
1171 static word field_table_values_offset();
1172 static word store_buffer_block_offset();
1173 static word call_to_runtime_entry_point_offset();
1174 static word write_barrier_mask_offset();
1175 static word heap_base_offset();
1176 static word switchable_call_miss_entry_offset();
1177 static word write_barrier_wrappers_thread_offset(
Register regno);
1178 static word array_write_barrier_entry_point_offset();
1179 static word allocate_mint_with_fpu_regs_entry_point_offset();
1180 static word allocate_mint_without_fpu_regs_entry_point_offset();
1181 static word allocate_object_entry_point_offset();
1182 static word allocate_object_parameterized_entry_point_offset();
1183 static word allocate_object_slow_entry_point_offset();
1184 static word slow_type_test_entry_point_offset();
1185 static word write_barrier_entry_point_offset();
1186 static word vm_tag_offset();
1187 static uword vm_tag_dart_id();
1189 static word safepoint_state_offset();
1190 static uword full_safepoint_state_unacquired();
1191 static uword full_safepoint_state_acquired();
1193 static word execution_state_offset();
1194 static uword vm_execution_state();
1195 static uword native_execution_state();
1196 static uword generated_execution_state();
1197 static word stack_overflow_flags_offset();
1198 static word stack_overflow_shared_stub_entry_point_offset(
bool fpu_regs);
1199 static word stack_limit_offset();
1200 static word saved_stack_limit_offset();
1201 static word unboxed_runtime_arg_offset();
1203 static word tsan_utils_offset();
1204 static word jump_to_frame_entry_point_offset();
1206 static word AllocateArray_entry_point_offset();
1207 static word write_barrier_code_offset();
1208 static word array_write_barrier_code_offset();
1209 static word fix_callers_target_code_offset();
1210 static word fix_allocation_stub_code_offset();
1212 static word switchable_call_miss_stub_offset();
1213 static word lazy_specialize_type_test_stub_offset();
1214 static word slow_type_test_stub_offset();
1215 static word call_to_runtime_stub_offset();
1216 static word invoke_dart_code_stub_offset();
1217 static word late_initialization_error_shared_without_fpu_regs_stub_offset();
1218 static word late_initialization_error_shared_with_fpu_regs_stub_offset();
1219 static word null_error_shared_without_fpu_regs_stub_offset();
1220 static word null_error_shared_with_fpu_regs_stub_offset();
1221 static word null_arg_error_shared_without_fpu_regs_stub_offset();
1222 static word null_arg_error_shared_with_fpu_regs_stub_offset();
1223 static word null_cast_error_shared_without_fpu_regs_stub_offset();
1224 static word null_cast_error_shared_with_fpu_regs_stub_offset();
1225 static word range_error_shared_without_fpu_regs_stub_offset();
1226 static word range_error_shared_with_fpu_regs_stub_offset();
1227 static word write_error_shared_without_fpu_regs_stub_offset();
1228 static word write_error_shared_with_fpu_regs_stub_offset();
1229 static word resume_stub_offset();
1230 static word return_async_not_future_stub_offset();
1231 static word return_async_star_stub_offset();
1232 static word return_async_stub_offset();
1233 static word stack_overflow_shared_without_fpu_regs_entry_point_offset();
1234 static word stack_overflow_shared_without_fpu_regs_stub_offset();
1235 static word stack_overflow_shared_with_fpu_regs_entry_point_offset();
1236 static word stack_overflow_shared_with_fpu_regs_stub_offset();
1237 static word lazy_deopt_from_return_stub_offset();
1238 static word lazy_deopt_from_throw_stub_offset();
1239 static word allocate_mint_with_fpu_regs_stub_offset();
1240 static word allocate_mint_without_fpu_regs_stub_offset();
1241 static word allocate_object_stub_offset();
1242 static word allocate_object_parameterized_stub_offset();
1243 static word allocate_object_slow_stub_offset();
1244 static word async_exception_handler_stub_offset();
1245 static word optimize_stub_offset();
1246 static word deoptimize_stub_offset();
1247 static word enter_safepoint_stub_offset();
1248 static word exit_safepoint_stub_offset();
1249 static word exit_safepoint_ignore_unwind_in_progress_stub_offset();
1250 static word call_native_through_safepoint_stub_offset();
1251 static word call_native_through_safepoint_entry_point_offset();
1253 static word bootstrap_native_wrapper_entry_point_offset();
1254 static word no_scope_native_wrapper_entry_point_offset();
1255 static word auto_scope_native_wrapper_entry_point_offset();
1257#define THREAD_XMM_CONSTANT_LIST(V) \
1265#define DECLARE_CONSTANT_OFFSET_GETTER(name) \
1266 static word name##_address_offset();
1268#undef DECLARE_CONSTANT_OFFSET_GETTER
1270 static word next_task_id_offset();
1271 static word random_offset();
1273 static word suspend_state_init_async_entry_point_offset();
1274 static word suspend_state_await_entry_point_offset();
1275 static word suspend_state_await_with_type_check_entry_point_offset();
1276 static word suspend_state_return_async_entry_point_offset();
1277 static word suspend_state_return_async_not_future_entry_point_offset();
1279 static word suspend_state_init_async_star_entry_point_offset();
1280 static word suspend_state_yield_async_star_entry_point_offset();
1281 static word suspend_state_return_async_star_entry_point_offset();
1283 static word suspend_state_init_sync_star_entry_point_offset();
1284 static word suspend_state_suspend_sync_star_at_start_entry_point_offset();
1286 static word suspend_state_handle_exception_entry_point_offset();
1294 static word top_offset();
1295 static word pointers_offset();
1301 static word top_offset();
1302 static word pointers_offset();
1306class ObjectStore :
public AllStatic {
1308 static word double_type_offset();
1309 static word int_type_offset();
1310 static word record_field_names_offset();
1311 static word string_type_offset();
1312 static word type_type_offset();
1314 static word ffi_callback_code_offset();
1316 static word suspend_state_await_offset();
1317 static word suspend_state_await_with_type_check_offset();
1318 static word suspend_state_handle_exception_offset();
1319 static word suspend_state_init_async_offset();
1320 static word suspend_state_init_async_star_offset();
1321 static word suspend_state_init_sync_star_offset();
1322 static word suspend_state_return_async_offset();
1323 static word suspend_state_return_async_not_future_offset();
1324 static word suspend_state_return_async_star_offset();
1325 static word suspend_state_suspend_sync_star_at_start_offset();
1326 static word suspend_state_yield_async_star_offset();
1329class Isolate :
public AllStatic {
1331 static word default_tag_offset();
1332 static word current_tag_offset();
1333 static word user_tag_offset();
1334 static word finalizers_offset();
1335#if !defined(PRODUCT)
1336 static word single_step_offset();
1337 static word has_resumption_breakpoints_offset();
1341class IsolateGroup :
public AllStatic {
1343 static word object_store_offset();
1344 static word class_table_offset();
1345 static word cached_class_table_table_offset();
1348class ClassTable :
public AllStatic {
1350#if !defined(PRODUCT)
1351 static word allocation_tracing_state_table_offset();
1352 static word AllocationTracingStateSlotOffsetFor(intptr_t
cid);
1356class InstructionsSection :
public AllStatic {
1358 static word UnalignedHeaderSize();
1359 static word HeaderSize();
1360 static word InstanceSize();
1361 static word InstanceSize(
word payload_size);
1365class InstructionsTable :
public AllStatic {
1367 static word HeaderSize();
1368 static word InstanceSize();
1373 static word element_offset(intptr_t index);
1376class Instructions :
public AllStatic {
1378 static const word kMonomorphicEntryOffsetJIT;
1379 static const word kPolymorphicEntryOffsetJIT;
1380 static const word kMonomorphicEntryOffsetAOT;
1381 static const word kPolymorphicEntryOffsetAOT;
1382 static const word kBarePayloadAlignment;
1383 static const word kNonBarePayloadAlignment;
1384 static word UnalignedHeaderSize();
1385 static word HeaderSize();
1386 static word InstanceSize();
1387 static word InstanceSize(
word payload_size);
1391class Code :
public AllStatic {
1393#if defined(TARGET_ARCH_IA32)
1397 static word object_pool_offset();
1399 static word active_instructions_offset();
1400 static word instructions_offset();
1401 static word owner_offset();
1402 static word HeaderSize();
1403 static word InstanceSize();
1408 static word element_offset(intptr_t index);
1411class WeakSerializationReference :
public AllStatic {
1413 static word InstanceSize();
1417class WeakArray :
public AllStatic {
1419 static word length_offset();
1420 static word element_offset(intptr_t index);
1422 static word InstanceSize();
1426class SubtypeTestCache :
public AllStatic {
1428 static word cache_offset();
1429 static word num_inputs_offset();
1431 static const word kMaxInputs;
1432 static const word kTestEntryLength;
1433 static const word kInstanceCidOrSignature;
1434 static const word kDestinationType;
1435 static const word kInstanceTypeArguments;
1436 static const word kInstantiatorTypeArguments;
1437 static const word kFunctionTypeArguments;
1438 static const word kInstanceParentFunctionTypeArguments;
1439 static const word kInstanceDelayedFunctionTypeArguments;
1440 static const word kTestResult;
1441 static word InstanceSize();
1445class LoadingUnit :
public AllStatic {
1447 static word InstanceSize();
1451class Context :
public AllStatic {
1453 static word header_size();
1454 static word parent_offset();
1455 static word num_variables_offset();
1456 static word variable_offset(intptr_t index);
1458 static word InstanceSize();
1461 static const word kMaxElements;
1464class Closure :
public AllStatic {
1466 static word context_offset();
1467 static word delayed_type_arguments_offset();
1468 static word entry_point_offset();
1469 static word function_offset();
1470 static word function_type_arguments_offset();
1471 static word instantiator_type_arguments_offset();
1472 static word hash_offset();
1473 static word InstanceSize();
1477class ClosureData :
public AllStatic {
1479 static word packed_fields_offset();
1480 static word InstanceSize();
1484class Page :
public AllStatic {
1486 static const word kBytesPerCardLog2;
1488 static word card_table_offset();
1489 static word original_top_offset();
1490 static word original_end_offset();
1493class Heap :
public AllStatic {
1500class NativeArguments {
1502 static word thread_offset();
1503 static word argc_tag_offset();
1504 static word argv_offset();
1505 static word retval_offset();
1507 static word StructSize();
1512 static const word kNumCallWrapperArguments;
1515class RegExp :
public AllStatic {
1518 static word InstanceSize();
1522class UserTag :
public AllStatic {
1524 static word tag_offset();
1525 static word InstanceSize();
1529class Symbols :
public AllStatic {
1531 static const word kNumberOfOneCharCodeSymbols;
1532 static const word kNullCharCodeSymbolOffset;
1535class Field :
public AllStatic {
1539 static word guarded_cid_offset();
1540 static word guarded_list_length_in_object_offset_offset();
1541 static word guarded_list_length_offset();
1542 static word is_nullable_offset();
1543 static word kind_bits_offset();
1544 static word initializer_function_offset();
1545 static word host_offset_or_field_id_offset();
1546 static word InstanceSize();
1550class TypeParameters :
public AllStatic {
1552 static word names_offset();
1553 static word flags_offset();
1554 static word bounds_offset();
1555 static word defaults_offset();
1556 static word InstanceSize();
1560class TypeArguments :
public AllStatic {
1562 static word hash_offset();
1563 static word instantiations_offset();
1564 static word length_offset();
1565 static word nullability_offset();
1566 static word type_at_offset(intptr_t i);
1567 static word types_offset();
1569 static word InstanceSize();
1572 static const word kMaxElements;
1575class FreeListElement :
public AllStatic {
1584class ForwardingCorpse :
public AllStatic {
#define CLASS_LIST_FOR_HANDLES(V)
static constexpr T RoundUp(T x, uintptr_t alignment, uintptr_t offset=0)
intptr_t argument_count() const
RuntimeEntry(const dart::RuntimeEntry *runtime_entry)
word OffsetFromThread() const
static word InstanceSize()
static word InstanceSize()
static const uint8_t buffer[]
uword MakeTagWordForNewSpaceObject(classid_t cid, uword instance_size)
bool WillAllocateNewOrRememberedContext(intptr_t num_context_variables)
void UnboxFieldIfSupported(const dart::Field &field, const dart::AbstractType &type)
bool CanLoadFromThread(const dart::Object &object, intptr_t *offset)
bool WillAllocateNewOrRememberedArray(intptr_t length)
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)
const word kPageSizeInWords
static constexpr intptr_t kHostWordSizeLog2
const Type & ObjectType()
InvalidClass kNewObjectAlignmentOffset
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)
InvalidClass kWordSizeLog2
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)
InvalidClass kObjectAlignment
int32_t CreateJitCookie()
void SetToNull(Object *obj)
const String & AllocateString(const char *buffer)
InvalidClass kObjectAlignmentLog2
const Array & ArgumentsDescriptorBoxed(intptr_t type_args_len, intptr_t num_arguments)
InvalidClass kBitsPerWord
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)
InvalidClass kObjectAlignmentMask
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()
InvalidClass kOldObjectAlignmentOffset
InvalidClass kNewObjectBitPosition
const Bool & FalseObject()
const Object & NullObject()
InvalidClass kBitsPerWordLog2
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 To & CastHandle(const From &from)
const Code & StubCodeSubtype4TestCache()
const Object & ToObject(const Code &handle)
bool HasIntegerValue(const dart::Object &object, int64_t *value)
const Type & DynamicType()
InvalidClass kPageSizeInWords
StoreBuffer::Block StoreBufferBlock
constexpr intptr_t kBitsPerWordLog2
constexpr intptr_t kBitsPerByteLog2
MarkingStack::Block MarkingStackBlock
constexpr intptr_t kInt32SizeLog2
constexpr intptr_t kWordSizeLog2
bool IsAllocatableInNewSpace(intptr_t size)
constexpr intptr_t kInt32Size
constexpr intptr_t kWordSize
std::function< void(Dart_NativeArguments)> NativeEntry
@ ApiError
The Dart error code for an API error.
#define DECLARE_CONSTANT_OFFSET_GETTER(name)
#define THREAD_XMM_CONSTANT_LIST(V)
#define DECLARE_RUNTIME_ENTRY(name)
#define RUNTIME_ENTRY_LIST(V)
#define LEAF_RUNTIME_ENTRY_LIST(V)
intptr_t FrameSlotForVariable(const LocalVariable *variable) const
static constexpr intptr_t kObjectAlignment