5#ifndef RUNTIME_VM_CONSTANTS_X64_H_
6#define RUNTIME_VM_CONSTANTS_X64_H_
8#ifndef RUNTIME_VM_CONSTANTS_H_
9#error Do not include constants_x64.h directly; use constants.h instead.
20#define R(reg) (static_cast<RegList>(1) << (reg))
69 if (
RSP <= reg && reg <=
RDI) {
144struct SharedSlowPathStubABI {
149struct InstantiationABI {
160struct InstantiateTAVInternalRegs {
174struct TTSInternalRegs {
192struct STCInternalRegs {
231struct AssertSubtypeABI {
248struct InitStaticFieldABI {
254struct InitLateStaticFieldInternalRegs {
260struct InitInstanceFieldABI {
267struct InitLateInstanceFieldInternalRegs {
273struct LateInitializationErrorABI {
289struct AssertBooleanABI {
294struct RangeErrorABI {
300struct AllocateObjectABI {
307struct AllocateClosureABI {
316struct AllocateMintABI {
322struct AllocateBoxABI {
328struct AllocateArrayABI {
335struct AllocateRecordABI {
344struct AllocateSmallRecordABI {
354struct AllocateTypedDataArrayABI {
360struct BoxDoubleStubABI {
367struct DoubleToIntegerStubABI {
375struct SuspendStubABI {
393struct InitSuspendableFunctionStubABI {
398struct ResumeStubABI {
415struct ReturnStubABI {
420struct AsyncExceptionHandlerStubABI {
425struct CloneSuspendStateStubABI {
435struct FfiAsyncCallbackSendStubABI {
443struct DispatchTableNullErrorABI {
464#if defined(DART_TARGET_OS_WINDOWS)
491#if defined(TARGET_ARCH_IS_64_BIT)
497#error "Unexpected word size"
499#if !defined(DART_COMPRESSED_POINTERS)
508class CallingConventions {
510#if defined(DART_TARGET_OS_WINDOWS)
558 static const size_t kRegisterTransferLimit = 16;
711 DISALLOW_ALLOCATION();
713 DISALLOW_IMPLICIT_CONSTRUCTORS(
Instr);
static constexpr ExtensionStrategy kArgumentStackExtension
static constexpr Register kSecondReturnReg
static constexpr XmmRegister xmmFirstNonParameterReg
static constexpr Register kVarArgFpuRegisterCount
static constexpr intptr_t kCalleeSaveCpuRegisters
static constexpr AlignmentStrategy kArgumentRegisterAlignmentVarArgs
static constexpr RegList kVolatileXmmRegisters
static constexpr AlignmentStrategy kFieldAlignment
static const FpuRegister FpuArgumentRegisters[]
static constexpr FpuRegister kSecondReturnFpuReg
static constexpr Register kArg5Reg
static const Register ArgumentRegisters[]
static constexpr bool kArgumentIntRegXorFpuReg
static constexpr intptr_t kVolatileCpuRegisters
COMPILE_ASSERT(((R(kFfiAnyNonAbiRegister)) &kCalleeSaveCpuRegisters) !=0)
static constexpr intptr_t kFpuArgumentRegisters
static constexpr FpuRegister kReturnFpuReg
static constexpr intptr_t kNumFpuArgRegs
static constexpr Register kPointerToReturnStructRegisterCall
static constexpr Register kFirstNonArgumentRegister
static constexpr Register kFfiAnyNonAbiRegister
static constexpr AlignmentStrategy kArgumentStackAlignmentVarArgs
static constexpr Register kPointerToReturnStructRegisterReturn
static constexpr AlignmentStrategy kArgumentRegisterAlignment
static constexpr Register kArg3Reg
static constexpr ExtensionStrategy kReturnRegisterExtension
COMPILE_ASSERT((kArgumentRegisters &kReservedCpuRegisters)==0)
static constexpr Register kArg6Reg
static constexpr Register kArg1Reg
COMPILE_ASSERT(((R(kFirstNonArgumentRegister)|R(kSecondNonArgumentRegister)) &(kArgumentRegisters|R(kPointerToReturnStructRegisterCall)))==0)
static constexpr Register kStackPointerRegister
static constexpr Register kReturnReg
static constexpr intptr_t kArgumentRegisters
static constexpr Register kSecondNonArgumentRegister
static constexpr Register kArg2Reg
static constexpr ExtensionStrategy kArgumentRegisterExtension
static constexpr intptr_t kShadowSpaceBytes
static constexpr Register kArg4Reg
static constexpr intptr_t kNumArgRegs
static constexpr AlignmentStrategy kArgumentStackAlignment
static constexpr intptr_t kCalleeSaveXmmRegisters
static Instr * At(uword pc)
static constexpr int32_t kBreakPointInstruction
static constexpr int kBreakPointInstructionSize
static constexpr uint8_t kHltInstruction
static constexpr uint8_t kGdbBreakpointInstruction
static constexpr int CountOneBits32(uint32_t x)
const FpuRegister kNoFpuRegister
const Register kWriteBarrierSlotReg
@ TIMES_COMPRESSED_HALF_WORD_SIZE
@ TIMES_COMPRESSED_WORD_SIZE
const Register kExceptionObjectReg
const RegList kReservedCpuRegisters
const Register kWriteBarrierObjectReg
const RegList kAllFpuRegistersList
const Register kWriteBarrierValueReg
const char *const fpu_reg_names[kNumberOfFpuRegisters]
const Register CALLEE_SAVED_TEMP
constexpr uword kBreakInstructionFiller
const Register ARGS_DESC_REG
const int kNumberOfFpuRegisters
const RegList kAbiPreservedCpuRegs
constexpr RegList kDartAvailableCpuRegs
const RegList kDartVolatileCpuRegs
const intptr_t kStoreBufferWrapperSize
constexpr int kRegisterAllocationBias
const Register FUNCTION_REG
constexpr intptr_t kNumberOfReservedCpuRegisters
const Register IC_DATA_REG
const char *const cpu_reg_names[kNumberOfCpuRegisters]
constexpr intptr_t kInt64SizeLog2
constexpr intptr_t kWordSize
const Register kStackTraceObjectReg
const RegList kAllCpuRegistersList
const intptr_t kPreferredLoopAlignment
simd128_value_t fpu_register_t
const char *const cpu_reg_byte_names[kNumberOfByteRegisters]
const RegList kAbiVolatileFpuRegs
const char *const cpu_reg_abi_names[kNumberOfCpuRegisters]
const int kFpuRegisterSize
constexpr int kNumberOfDartAvailableCpuRegs
ByteRegister ByteRegisterOf(Register reg)
static constexpr Register kResultReg
static constexpr Register kLengthReg
static constexpr Register kTypeArgumentsReg
static constexpr Register kResultReg
static constexpr Register kTempReg
static constexpr Register kFunctionReg
static constexpr Register kContextReg
static constexpr Register kResultReg
static constexpr Register kInstantiatorTypeArgsReg
static constexpr Register kScratchReg
static constexpr Register kResultReg
static constexpr Register kTempReg
static constexpr Register kTypeArgumentsReg
static constexpr Register kResultReg
static constexpr Register kTagsReg
static constexpr Register kShapeReg
static constexpr Register kResultReg
static constexpr Register kTemp1Reg
static constexpr Register kTemp2Reg
static constexpr Register kResultReg
static constexpr Register kShapeReg
static constexpr Register kValue2Reg
static constexpr Register kValue0Reg
static constexpr Register kTempReg
static constexpr Register kValue1Reg
static constexpr Register kLengthReg
static constexpr Register kResultReg
static constexpr Register kObjectReg
static constexpr Register kSubTypeReg
static constexpr Register kSuperTypeReg
static constexpr Register kFunctionTypeArgumentsReg
static constexpr intptr_t kAbiRegisters
static constexpr Register kInstantiatorTypeArgumentsReg
static constexpr Register kDstNameReg
static constexpr Register kSuspendStateReg
static constexpr Register kTempReg
static constexpr Register kResultReg
static constexpr FpuRegister kValueReg
static constexpr Register kDestinationReg
static constexpr Register kSrcFrameReg
static constexpr Register kFrameSizeReg
static constexpr Register kSourceReg
static constexpr Register kTempReg
static constexpr Register kDstFrameReg
static constexpr Register kCpuRegistersForArgs[]
static constexpr FpuRegister kFpuRegistersForArgs[]
static constexpr Register kClassIdReg
static constexpr Register kResultReg
static constexpr Register kRecognizedKindReg
static constexpr FpuRegister kInputReg
static constexpr Register kArgsReg
static constexpr Register kFieldReg
static constexpr Register kResultReg
static constexpr Register kInstanceReg
static constexpr Register kAddressReg
static constexpr Register kScratchReg
static constexpr Register kAddressReg
static constexpr Register kScratchReg
static constexpr Register kResultReg
static constexpr Register kFieldReg
static constexpr Register kTypeArgsReg
static constexpr Register kEntryStartReg
static constexpr intptr_t kSavedRegisters
static constexpr Register kCurrentEntryIndexReg
static constexpr Register kProbeMaskReg
static constexpr Register kProbeDistanceReg
static constexpr Register kInstantiatorTypeArgumentsReg
static constexpr Register kScratchReg
static constexpr Register kResultTypeReg
static constexpr Register kUninstantiatedTypeArgumentsReg
static constexpr Register kResultTypeArgumentsReg
static constexpr Register kFunctionTypeArgumentsReg
static constexpr Register kFieldReg
static constexpr Register kLengthReg
static constexpr Register kIndexReg
static constexpr Register kStackTraceReg
static constexpr Register kExceptionReg
static constexpr Register kSrcFrameReg
static constexpr Register kDstFrameReg
static constexpr Register kFrameSizeReg
static constexpr Register kSuspendStateReg
static constexpr Register kExceptionReg
static constexpr Register kTempReg
static constexpr Register kResumePcReg
static constexpr Register kStackTraceReg
static constexpr Register kSuspendStateReg
static constexpr Register kInstanceInstantiatorTypeArgumentsReg
static constexpr intptr_t kInternalRegisters
static constexpr Register kInstanceCidOrSignatureReg
static constexpr Register kCacheEntryReg
static constexpr Register kResultReg
static constexpr Register kSrcFrameReg
static constexpr Register kFunctionDataReg
static constexpr Register kSuspendStateReg
static constexpr intptr_t kResumePcDistance
static constexpr Register kTempReg
static constexpr Register kArgumentReg
static constexpr Register kDstFrameReg
static constexpr Register kTypeArgsReg
static constexpr Register kFrameSizeReg
static constexpr intptr_t kInternalRegisters
static constexpr intptr_t kSavedTypeArgumentRegisters
static constexpr Register kSuperTypeArgumentReg
static constexpr Register kSubTypeArgumentReg
static constexpr Register kInstanceTypeArgumentsReg
static constexpr Register kScratchReg
static constexpr Register kExceptionReg
static constexpr Register kSubtypeTestCacheReg
static constexpr Register kDstTypeReg
static constexpr Register kInstanceReg
static constexpr Register kFunctionTypeArgumentsReg
static constexpr Register kInstantiatorTypeArgumentsReg
static constexpr intptr_t kNonPreservedAbiRegisters
static constexpr Register kSubtypeTestCacheResultReg
static constexpr intptr_t kPreservedAbiRegisters
static constexpr Register kScratchReg
static constexpr intptr_t kAbiRegisters
static constexpr Register kInstanceOfResultReg