v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
register-arm.h File Reference
Include dependency graph for register-arm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::Register
 
class  v8::internal::SwVfpRegister
 
class  v8::internal::DwVfpRegister
 
class  v8::internal::LowDwVfpRegister
 
class  v8::internal::QwNeonRegister
 
class  v8::internal::CRegister
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define GENERAL_REGISTERS(V)
 
#define ALLOCATABLE_GENERAL_REGISTERS(V)
 
#define FLOAT_REGISTERS(V)
 
#define LOW_DOUBLE_REGISTERS(V)
 
#define NON_LOW_DOUBLE_REGISTERS(V)
 
#define DOUBLE_REGISTERS(V)
 
#define SIMD128_REGISTERS(V)
 
#define ALLOCATABLE_DOUBLE_REGISTERS(V)
 
#define ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS(V)
 
#define C_REGISTERS(V)
 
#define REGISTER_CODE(R)
 
#define DECLARE_REGISTER(R)
 
#define REGISTER_CODE(R)
 
#define REGISTER_CODE(R)
 
#define REGISTER_CODE(R)
 
#define REGISTER_CODE(R)
 
#define DECLARE_FLOAT_REGISTER(R)
 
#define DECLARE_LOW_DOUBLE_REGISTER(R)
 
#define DECLARE_DOUBLE_REGISTER(R)
 
#define DECLARE_SIMD128_REGISTER(R)
 
#define DECLARE_C_REGISTER(R)
 

Typedefs

using v8::internal::VfpRegList = uint64_t
 
using v8::internal::FloatRegister = SwVfpRegister
 
using v8::internal::DoubleRegister = DwVfpRegister
 
using v8::internal::QuadRegister = QwNeonRegister
 
using v8::internal::Simd128Register = QwNeonRegister
 

Enumerations

enum  v8::internal::RegisterCode {
  v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast ,
  v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast ,
  v8::internal::kRegAfterLast
}
 
enum  v8::internal::SwVfpRegisterCode { v8::internal::kSwVfpAfterLast }
 
enum  v8::internal::DoubleRegisterCode {
  v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast ,
  v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast
}
 
enum  v8::internal::Simd128RegisterCode { v8::internal::kSimd128AfterLast , v8::internal::kSimd128AfterLast }
 
enum  v8::internal::CRegisterCode { v8::internal::kCAfterLast , v8::internal::kCAfterLast , v8::internal::kCAfterLast }
 

Functions

 v8::internal::ASSERT_TRIVIALLY_COPYABLE (Register)
 
Register v8::internal::ReassignRegister (Register &source)
 
constexpr int v8::internal::ArgumentPaddingSlots (int argument_count)
 
 v8::internal::ASSERT_TRIVIALLY_COPYABLE (SwVfpRegister)
 
 v8::internal::ASSERT_TRIVIALLY_COPYABLE (DwVfpRegister)
 

Variables

constexpr Register v8::internal::no_reg = Register::no_reg()
 
constexpr Register v8::internal::kCArgRegs [] = {r0, r1, r2, r3}
 
static const int v8::internal::kRegisterPassedArguments = arraysize(kCArgRegs)
 
static const int v8::internal::kDoubleRegisterPassedArguments = 8
 
constexpr AliasingKind v8::internal::kFPAliasing = AliasingKind::kCombine
 
constexpr bool v8::internal::kSimdMaskRegisters = false
 
constexpr DwVfpRegister v8::internal::no_dreg = DwVfpRegister::no_reg()
 
constexpr LowDwVfpRegister v8::internal::kFirstCalleeSavedDoubleReg = d8
 
constexpr LowDwVfpRegister v8::internal::kLastCalleeSavedDoubleReg = d15
 
constexpr LowDwVfpRegister v8::internal::kDoubleRegZero = d13
 
constexpr CRegister v8::internal::no_creg = CRegister::no_reg()
 
constexpr Register v8::internal::kStackPointerRegister = sp
 
constexpr Register v8::internal::kReturnRegister0 = r0
 
constexpr Register v8::internal::kReturnRegister1 = r1
 
constexpr Register v8::internal::kReturnRegister2 = r2
 
constexpr Register v8::internal::kJSFunctionRegister = r1
 
constexpr Register v8::internal::kContextRegister = r7
 
constexpr Register v8::internal::kAllocateSizeRegister = r1
 
constexpr Register v8::internal::kInterpreterAccumulatorRegister = r0
 
constexpr Register v8::internal::kInterpreterBytecodeOffsetRegister = r5
 
constexpr Register v8::internal::kInterpreterBytecodeArrayRegister = r6
 
constexpr Register v8::internal::kInterpreterDispatchTableRegister = r8
 
constexpr Register v8::internal::kJavaScriptCallArgCountRegister = r0
 
constexpr Register v8::internal::kJavaScriptCallCodeStartRegister = r2
 
constexpr Register v8::internal::kJavaScriptCallTargetRegister = kJSFunctionRegister
 
constexpr Register v8::internal::kJavaScriptCallNewTargetRegister = r3
 
constexpr Register v8::internal::kJavaScriptCallExtraArg1Register = r2
 
constexpr Register v8::internal::kJavaScriptCallDispatchHandleRegister = no_reg
 
constexpr Register v8::internal::kRuntimeCallFunctionRegister = r1
 
constexpr Register v8::internal::kRuntimeCallArgCountRegister = r0
 
constexpr Register v8::internal::kRuntimeCallArgvRegister = r2
 
constexpr Register v8::internal::kWasmImplicitArgRegister = r3
 
constexpr Register v8::internal::kWasmCompileLazyFuncIndexRegister = r4
 
constexpr Register v8::internal::cp = r7
 
constexpr Register v8::internal::r11 = fp
 
constexpr Register v8::internal::kRootRegister = r10
 
constexpr DoubleRegister v8::internal::kFPReturnRegister0 = d0
 
constexpr Register v8::internal::kMaglevExtraScratchRegister = r9
 

Macro Definition Documentation

◆ ALLOCATABLE_DOUBLE_REGISTERS

#define ALLOCATABLE_DOUBLE_REGISTERS ( V)
Value:
V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
V(d8) V(d9) V(d10) V(d11) V(d12) \
V(d16) V(d17) V(d18) V(d19) V(d20) V(d21) V(d22) V(d23) \
V(d24) V(d25) V(d26) V(d27) V(d28) V(d29) V(d30) V(d31)
#define V(Name)

Definition at line 43 of file register-arm.h.

◆ ALLOCATABLE_GENERAL_REGISTERS

#define ALLOCATABLE_GENERAL_REGISTERS ( V)
Value:
V(r0) V(r1) V(r2) V(r3) V(r4) V(r5) V(r6) V(r7) \
V(r8) V(r9)

Definition at line 18 of file register-arm.h.

◆ ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS

#define ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS ( V)
Value:
V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
V(d8) V(d9) V(d10) V(d11) V(d12) V(d15)

Definition at line 49 of file register-arm.h.

◆ C_REGISTERS

#define C_REGISTERS ( V)
Value:
V(cr0) V(cr1) V(cr2) V(cr3) V(cr4) V(cr5) V(cr6) V(cr7) \
V(cr8) V(cr9) V(cr10) V(cr11) V(cr12) V(cr15)

Definition at line 53 of file register-arm.h.

◆ DECLARE_C_REGISTER

#define DECLARE_C_REGISTER ( R)
Value:
constexpr CRegister R = CRegister::from_code(kCCode_##R);

Definition at line 288 of file register-arm.h.

◆ DECLARE_DOUBLE_REGISTER

#define DECLARE_DOUBLE_REGISTER ( R)
Value:
constexpr DwVfpRegister R = DwVfpRegister::from_code(kDoubleCode_##R);

Definition at line 269 of file register-arm.h.

◆ DECLARE_FLOAT_REGISTER

#define DECLARE_FLOAT_REGISTER ( R)
Value:
constexpr SwVfpRegister R = SwVfpRegister::from_code(kSwVfpCode_##R);

Definition at line 259 of file register-arm.h.

◆ DECLARE_LOW_DOUBLE_REGISTER

#define DECLARE_LOW_DOUBLE_REGISTER ( R)
Value:
constexpr LowDwVfpRegister R = LowDwVfpRegister::from_code(kDoubleCode_##R);

Definition at line 264 of file register-arm.h.

◆ DECLARE_REGISTER

#define DECLARE_REGISTER ( R)
Value:
constexpr Register R = Register::from_code(kRegCode_##R);

Definition at line 83 of file register-arm.h.

◆ DECLARE_SIMD128_REGISTER

#define DECLARE_SIMD128_REGISTER ( R)
Value:
constexpr Simd128Register R = Simd128Register::from_code(kSimd128Code_##R);

Definition at line 276 of file register-arm.h.

◆ DOUBLE_REGISTERS

#define DOUBLE_REGISTERS ( V)
Value:
#define LOW_DOUBLE_REGISTERS(V)
#define NON_LOW_DOUBLE_REGISTERS(V)

Definition at line 36 of file register-arm.h.

◆ FLOAT_REGISTERS

#define FLOAT_REGISTERS ( V)
Value:
V(s0) V(s1) V(s2) V(s3) V(s4) V(s5) V(s6) V(s7) \
V(s8) V(s9) V(s10) V(s11) V(s12) V(s13) V(s14) V(s15) \
V(s16) V(s17) V(s18) V(s19) V(s20) V(s21) V(s22) V(s23) \
V(s24) V(s25) V(s26) V(s27) V(s28) V(s29) V(s30) V(s31)

Definition at line 22 of file register-arm.h.

◆ GENERAL_REGISTERS

#define GENERAL_REGISTERS ( V)
Value:
V(r0) V(r1) V(r2) V(r3) V(r4) V(r5) V(r6) V(r7) \
V(r8) V(r9) V(r10) V(fp) V(ip) V(sp) V(lr) V(pc)

Definition at line 14 of file register-arm.h.

◆ LOW_DOUBLE_REGISTERS

#define LOW_DOUBLE_REGISTERS ( V)
Value:
V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15)

Definition at line 28 of file register-arm.h.

◆ NON_LOW_DOUBLE_REGISTERS

#define NON_LOW_DOUBLE_REGISTERS ( V)
Value:
V(d16) V(d17) V(d18) V(d19) V(d20) V(d21) V(d22) V(d23) \
V(d24) V(d25) V(d26) V(d27) V(d28) V(d29) V(d30) V(d31)

Definition at line 32 of file register-arm.h.

◆ REGISTER_CODE [1/5]

#define REGISTER_CODE ( R)
Value:
kRegCode_##R,

Definition at line 59 of file register-arm.h.

◆ REGISTER_CODE [2/5]

#define REGISTER_CODE ( R)
Value:
kSwVfpCode_##R,

Definition at line 59 of file register-arm.h.

◆ REGISTER_CODE [3/5]

#define REGISTER_CODE ( R)
Value:
kDoubleCode_##R,

Definition at line 59 of file register-arm.h.

◆ REGISTER_CODE [4/5]

#define REGISTER_CODE ( R)
Value:
kSimd128Code_##R,

Definition at line 59 of file register-arm.h.

◆ REGISTER_CODE [5/5]

#define REGISTER_CODE ( R)
Value:
kCCode_##R,

Definition at line 59 of file register-arm.h.

◆ SIMD128_REGISTERS

#define SIMD128_REGISTERS ( V)
Value:
V(q0) V(q1) V(q2) V(q3) V(q4) V(q5) V(q6) V(q7) \
V(q8) V(q9) V(q10) V(q11) V(q12) V(q13) V(q14) V(q15)

Definition at line 39 of file register-arm.h.