зеркало из https://github.com/mozilla/gecko-dev.git
bug 809306 - fix a bunch of static initializers caused by ion monkey's assembler headers r=dvander
This commit is contained in:
Родитель
49fb5d684f
Коммит
f31d4e7e40
|
@ -85,11 +85,6 @@ using mozilla::IsNegative;
|
|||
// after range analysis is performed. The remaining compiler phases do not ever
|
||||
// encounter beta nodes.
|
||||
|
||||
RangeAnalysis::RangeAnalysis(MIRGraph &graph)
|
||||
: graph_(graph)
|
||||
{
|
||||
}
|
||||
|
||||
static bool
|
||||
IsDominatedUse(MBasicBlock *block, MUse *use)
|
||||
{
|
||||
|
|
|
@ -78,7 +78,8 @@ class RangeAnalysis
|
|||
MIRGraph &graph_;
|
||||
|
||||
public:
|
||||
RangeAnalysis(MIRGraph &graph);
|
||||
MOZ_CONSTEXPR RangeAnalysis(MIRGraph &graph) :
|
||||
graph_(graph) {}
|
||||
bool addBetaNobes();
|
||||
bool analyze();
|
||||
bool removeBetaNobes();
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#ifndef js_ion_registerallocator_h__
|
||||
#define js_ion_registerallocator_h__
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
|
||||
#include "Ion.h"
|
||||
#include "MIR.h"
|
||||
#include "MIRGraph.h"
|
||||
|
@ -140,7 +142,7 @@ struct AllocationIntegrityState
|
|||
class CodePosition
|
||||
{
|
||||
private:
|
||||
CodePosition(const uint32_t &bits)
|
||||
MOZ_CONSTEXPR CodePosition(const uint32_t &bits)
|
||||
: bits_(bits)
|
||||
{ }
|
||||
|
||||
|
@ -159,7 +161,7 @@ class CodePosition
|
|||
OUTPUT
|
||||
};
|
||||
|
||||
CodePosition() : bits_(0)
|
||||
MOZ_CONSTEXPR CodePosition() : bits_(0)
|
||||
{ }
|
||||
|
||||
CodePosition(uint32_t instruction, SubPosition where) {
|
||||
|
|
|
@ -92,7 +92,7 @@ class ValueOperand
|
|||
Register payload_;
|
||||
|
||||
public:
|
||||
ValueOperand(Register type, Register payload)
|
||||
MOZ_CONSTEXPR ValueOperand(Register type, Register payload)
|
||||
: type_(type), payload_(payload)
|
||||
{ }
|
||||
|
||||
|
@ -117,7 +117,7 @@ class ValueOperand
|
|||
Register value_;
|
||||
|
||||
public:
|
||||
explicit ValueOperand(Register value)
|
||||
explicit MOZ_CONSTEXPR ValueOperand(Register value)
|
||||
: value_(value)
|
||||
{ }
|
||||
|
||||
|
@ -297,13 +297,13 @@ class TypedRegisterSet
|
|||
uint32_t bits_;
|
||||
|
||||
public:
|
||||
explicit TypedRegisterSet(uint32_t bits)
|
||||
explicit MOZ_CONSTEXPR TypedRegisterSet(uint32_t bits)
|
||||
: bits_(bits)
|
||||
{ }
|
||||
|
||||
TypedRegisterSet() : bits_(0)
|
||||
MOZ_CONSTEXPR TypedRegisterSet() : bits_(0)
|
||||
{ }
|
||||
TypedRegisterSet(const TypedRegisterSet<T> &set) : bits_(set.bits_)
|
||||
MOZ_CONSTEXPR TypedRegisterSet(const TypedRegisterSet<T> &set) : bits_(set.bits_)
|
||||
{ }
|
||||
|
||||
static inline TypedRegisterSet All() {
|
||||
|
@ -471,7 +471,7 @@ class RegisterSet {
|
|||
public:
|
||||
RegisterSet()
|
||||
{ }
|
||||
RegisterSet(const GeneralRegisterSet &gpr, const FloatRegisterSet &fpu)
|
||||
MOZ_CONSTEXPR RegisterSet(const GeneralRegisterSet &gpr, const FloatRegisterSet &fpu)
|
||||
: gpr_(gpr),
|
||||
fpu_(fpu)
|
||||
{ }
|
||||
|
@ -579,10 +579,10 @@ class RegisterSet {
|
|||
gpr_.clear();
|
||||
fpu_.clear();
|
||||
}
|
||||
GeneralRegisterSet gprs() const {
|
||||
MOZ_CONSTEXPR GeneralRegisterSet gprs() const {
|
||||
return gpr_;
|
||||
}
|
||||
FloatRegisterSet fpus() const {
|
||||
MOZ_CONSTEXPR FloatRegisterSet fpus() const {
|
||||
return fpu_;
|
||||
}
|
||||
bool operator ==(const RegisterSet &other) const {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#ifndef jsion_cpu_arm_assembler_h__
|
||||
#define jsion_cpu_arm_assembler_h__
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/MathAlgorithms.h"
|
||||
#include "mozilla/Util.h"
|
||||
|
||||
|
@ -26,44 +27,44 @@ namespace ion {
|
|||
// clearer than bl r14). HOWEVER, this register can
|
||||
// easily be a gpr when it is not busy holding the return
|
||||
// address.
|
||||
static const Register r0 = { Registers::r0 };
|
||||
static const Register r1 = { Registers::r1 };
|
||||
static const Register r2 = { Registers::r2 };
|
||||
static const Register r3 = { Registers::r3 };
|
||||
static const Register r4 = { Registers::r4 };
|
||||
static const Register r5 = { Registers::r5 };
|
||||
static const Register r6 = { Registers::r6 };
|
||||
static const Register r7 = { Registers::r7 };
|
||||
static const Register r8 = { Registers::r8 };
|
||||
static const Register r9 = { Registers::r9 };
|
||||
static const Register r10 = { Registers::r10 };
|
||||
static const Register r11 = { Registers::r11 };
|
||||
static const Register r12 = { Registers::ip };
|
||||
static const Register ip = { Registers::ip };
|
||||
static const Register sp = { Registers::sp };
|
||||
static const Register r14 = { Registers::lr };
|
||||
static const Register lr = { Registers::lr };
|
||||
static const Register pc = { Registers::pc };
|
||||
static const MOZ_CONSTEXPR Register r0 = { Registers::r0 };
|
||||
static const MOZ_CONSTEXPR Register r1 = { Registers::r1 };
|
||||
static const MOZ_CONSTEXPR Register r2 = { Registers::r2 };
|
||||
static const MOZ_CONSTEXPR Register r3 = { Registers::r3 };
|
||||
static const MOZ_CONSTEXPR Register r4 = { Registers::r4 };
|
||||
static const MOZ_CONSTEXPR Register r5 = { Registers::r5 };
|
||||
static const MOZ_CONSTEXPR Register r6 = { Registers::r6 };
|
||||
static const MOZ_CONSTEXPR Register r7 = { Registers::r7 };
|
||||
static const MOZ_CONSTEXPR Register r8 = { Registers::r8 };
|
||||
static const MOZ_CONSTEXPR Register r9 = { Registers::r9 };
|
||||
static const MOZ_CONSTEXPR Register r10 = { Registers::r10 };
|
||||
static const MOZ_CONSTEXPR Register r11 = { Registers::r11 };
|
||||
static const MOZ_CONSTEXPR Register r12 = { Registers::ip };
|
||||
static const MOZ_CONSTEXPR Register ip = { Registers::ip };
|
||||
static const MOZ_CONSTEXPR Register sp = { Registers::sp };
|
||||
static const MOZ_CONSTEXPR Register r14 = { Registers::lr };
|
||||
static const MOZ_CONSTEXPR Register lr = { Registers::lr };
|
||||
static const MOZ_CONSTEXPR Register pc = { Registers::pc };
|
||||
|
||||
static const Register ScratchRegister = {Registers::ip};
|
||||
static const MOZ_CONSTEXPR Register ScratchRegister = {Registers::ip};
|
||||
|
||||
static const Register OsrFrameReg = r3;
|
||||
static const Register ArgumentsRectifierReg = r8;
|
||||
static const Register CallTempReg0 = r5;
|
||||
static const Register CallTempReg1 = r6;
|
||||
static const Register CallTempReg2 = r7;
|
||||
static const Register CallTempReg3 = r8;
|
||||
static const Register CallTempReg4 = r0;
|
||||
static const Register CallTempReg5 = r1;
|
||||
static const Register CallTempReg6 = r2;
|
||||
static const MOZ_CONSTEXPR Register OsrFrameReg = r3;
|
||||
static const MOZ_CONSTEXPR Register ArgumentsRectifierReg = r8;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg0 = r5;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg1 = r6;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg2 = r7;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg3 = r8;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg4 = r0;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg5 = r1;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg6 = r2;
|
||||
|
||||
static const Register IntArgReg0 = r0;
|
||||
static const Register IntArgReg1 = r1;
|
||||
static const Register IntArgReg2 = r2;
|
||||
static const Register IntArgReg3 = r3;
|
||||
static const Register GlobalReg = r10;
|
||||
static const Register HeapReg = r11;
|
||||
static const Register CallTempNonArgRegs[] = { r5, r6, r7, r8 };
|
||||
static const MOZ_CONSTEXPR Register IntArgReg0 = r0;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg1 = r1;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg2 = r2;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg3 = r3;
|
||||
static const MOZ_CONSTEXPR Register GlobalReg = r10;
|
||||
static const MOZ_CONSTEXPR Register HeapReg = r11;
|
||||
static const MOZ_CONSTEXPR Register CallTempNonArgRegs[] = { r5, r6, r7, r8 };
|
||||
static const uint32_t NumCallTempNonArgRegs =
|
||||
mozilla::ArrayLength(CallTempNonArgRegs);
|
||||
class ABIArgGenerator
|
||||
|
@ -87,37 +88,37 @@ class ABIArgGenerator
|
|||
|
||||
};
|
||||
|
||||
static const Register PreBarrierReg = r1;
|
||||
static const MOZ_CONSTEXPR Register PreBarrierReg = r1;
|
||||
|
||||
static const Register InvalidReg = { Registers::invalid_reg };
|
||||
static const FloatRegister InvalidFloatReg = { FloatRegisters::invalid_freg };
|
||||
static const MOZ_CONSTEXPR Register InvalidReg = { Registers::invalid_reg };
|
||||
static const MOZ_CONSTEXPR FloatRegister InvalidFloatReg = { FloatRegisters::invalid_freg };
|
||||
|
||||
static const Register JSReturnReg_Type = r3;
|
||||
static const Register JSReturnReg_Data = r2;
|
||||
static const Register StackPointer = sp;
|
||||
static const Register FramePointer = InvalidReg;
|
||||
static const Register ReturnReg = r0;
|
||||
static const FloatRegister ReturnFloatReg = { FloatRegisters::d0 };
|
||||
static const FloatRegister ScratchFloatReg = { FloatRegisters::d1 };
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg_Type = r3;
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg_Data = r2;
|
||||
static const MOZ_CONSTEXPR Register StackPointer = sp;
|
||||
static const MOZ_CONSTEXPR Register FramePointer = InvalidReg;
|
||||
static const MOZ_CONSTEXPR Register ReturnReg = r0;
|
||||
static const MOZ_CONSTEXPR FloatRegister ReturnFloatReg = { FloatRegisters::d0 };
|
||||
static const MOZ_CONSTEXPR FloatRegister ScratchFloatReg = { FloatRegisters::d1 };
|
||||
|
||||
static const FloatRegister NANReg = { FloatRegisters::d15 };
|
||||
static const MOZ_CONSTEXPR FloatRegister NANReg = { FloatRegisters::d15 };
|
||||
|
||||
static const FloatRegister d0 = {FloatRegisters::d0};
|
||||
static const FloatRegister d1 = {FloatRegisters::d1};
|
||||
static const FloatRegister d2 = {FloatRegisters::d2};
|
||||
static const FloatRegister d3 = {FloatRegisters::d3};
|
||||
static const FloatRegister d4 = {FloatRegisters::d4};
|
||||
static const FloatRegister d5 = {FloatRegisters::d5};
|
||||
static const FloatRegister d6 = {FloatRegisters::d6};
|
||||
static const FloatRegister d7 = {FloatRegisters::d7};
|
||||
static const FloatRegister d8 = {FloatRegisters::d8};
|
||||
static const FloatRegister d9 = {FloatRegisters::d9};
|
||||
static const FloatRegister d10 = {FloatRegisters::d10};
|
||||
static const FloatRegister d11 = {FloatRegisters::d11};
|
||||
static const FloatRegister d12 = {FloatRegisters::d12};
|
||||
static const FloatRegister d13 = {FloatRegisters::d13};
|
||||
static const FloatRegister d14 = {FloatRegisters::d14};
|
||||
static const FloatRegister d15 = {FloatRegisters::d15};
|
||||
static const MOZ_CONSTEXPR FloatRegister d0 = {FloatRegisters::d0};
|
||||
static const MOZ_CONSTEXPR FloatRegister d1 = {FloatRegisters::d1};
|
||||
static const MOZ_CONSTEXPR FloatRegister d2 = {FloatRegisters::d2};
|
||||
static const MOZ_CONSTEXPR FloatRegister d3 = {FloatRegisters::d3};
|
||||
static const MOZ_CONSTEXPR FloatRegister d4 = {FloatRegisters::d4};
|
||||
static const MOZ_CONSTEXPR FloatRegister d5 = {FloatRegisters::d5};
|
||||
static const MOZ_CONSTEXPR FloatRegister d6 = {FloatRegisters::d6};
|
||||
static const MOZ_CONSTEXPR FloatRegister d7 = {FloatRegisters::d7};
|
||||
static const MOZ_CONSTEXPR FloatRegister d8 = {FloatRegisters::d8};
|
||||
static const MOZ_CONSTEXPR FloatRegister d9 = {FloatRegisters::d9};
|
||||
static const MOZ_CONSTEXPR FloatRegister d10 = {FloatRegisters::d10};
|
||||
static const MOZ_CONSTEXPR FloatRegister d11 = {FloatRegisters::d11};
|
||||
static const MOZ_CONSTEXPR FloatRegister d12 = {FloatRegisters::d12};
|
||||
static const MOZ_CONSTEXPR FloatRegister d13 = {FloatRegisters::d13};
|
||||
static const MOZ_CONSTEXPR FloatRegister d14 = {FloatRegisters::d14};
|
||||
static const MOZ_CONSTEXPR FloatRegister d15 = {FloatRegisters::d15};
|
||||
|
||||
// For maximal awesomeness, 8 should be sufficent.
|
||||
// ldrd/strd (dual-register load/store) operate in a single cycle
|
||||
|
|
|
@ -15,39 +15,39 @@
|
|||
namespace js {
|
||||
namespace ion {
|
||||
|
||||
static const Register rax = { JSC::X86Registers::eax };
|
||||
static const Register rbx = { JSC::X86Registers::ebx };
|
||||
static const Register rcx = { JSC::X86Registers::ecx };
|
||||
static const Register rdx = { JSC::X86Registers::edx };
|
||||
static const Register rsi = { JSC::X86Registers::esi };
|
||||
static const Register rdi = { JSC::X86Registers::edi };
|
||||
static const Register rbp = { JSC::X86Registers::ebp };
|
||||
static const Register r8 = { JSC::X86Registers::r8 };
|
||||
static const Register r9 = { JSC::X86Registers::r9 };
|
||||
static const Register r10 = { JSC::X86Registers::r10 };
|
||||
static const Register r11 = { JSC::X86Registers::r11 };
|
||||
static const Register r12 = { JSC::X86Registers::r12 };
|
||||
static const Register r13 = { JSC::X86Registers::r13 };
|
||||
static const Register r14 = { JSC::X86Registers::r14 };
|
||||
static const Register r15 = { JSC::X86Registers::r15 };
|
||||
static const Register rsp = { JSC::X86Registers::esp };
|
||||
static const MOZ_CONSTEXPR Register rax = { JSC::X86Registers::eax };
|
||||
static const MOZ_CONSTEXPR Register rbx = { JSC::X86Registers::ebx };
|
||||
static const MOZ_CONSTEXPR Register rcx = { JSC::X86Registers::ecx };
|
||||
static const MOZ_CONSTEXPR Register rdx = { JSC::X86Registers::edx };
|
||||
static const MOZ_CONSTEXPR Register rsi = { JSC::X86Registers::esi };
|
||||
static const MOZ_CONSTEXPR Register rdi = { JSC::X86Registers::edi };
|
||||
static const MOZ_CONSTEXPR Register rbp = { JSC::X86Registers::ebp };
|
||||
static const MOZ_CONSTEXPR Register r8 = { JSC::X86Registers::r8 };
|
||||
static const MOZ_CONSTEXPR Register r9 = { JSC::X86Registers::r9 };
|
||||
static const MOZ_CONSTEXPR Register r10 = { JSC::X86Registers::r10 };
|
||||
static const MOZ_CONSTEXPR Register r11 = { JSC::X86Registers::r11 };
|
||||
static const MOZ_CONSTEXPR Register r12 = { JSC::X86Registers::r12 };
|
||||
static const MOZ_CONSTEXPR Register r13 = { JSC::X86Registers::r13 };
|
||||
static const MOZ_CONSTEXPR Register r14 = { JSC::X86Registers::r14 };
|
||||
static const MOZ_CONSTEXPR Register r15 = { JSC::X86Registers::r15 };
|
||||
static const MOZ_CONSTEXPR Register rsp = { JSC::X86Registers::esp };
|
||||
|
||||
static const FloatRegister xmm0 = { JSC::X86Registers::xmm0 };
|
||||
static const FloatRegister xmm1 = { JSC::X86Registers::xmm1 };
|
||||
static const FloatRegister xmm2 = { JSC::X86Registers::xmm2 };
|
||||
static const FloatRegister xmm3 = { JSC::X86Registers::xmm3 };
|
||||
static const FloatRegister xmm4 = { JSC::X86Registers::xmm4 };
|
||||
static const FloatRegister xmm5 = { JSC::X86Registers::xmm5 };
|
||||
static const FloatRegister xmm6 = { JSC::X86Registers::xmm6 };
|
||||
static const FloatRegister xmm7 = { JSC::X86Registers::xmm7 };
|
||||
static const FloatRegister xmm8 = { JSC::X86Registers::xmm8 };
|
||||
static const FloatRegister xmm9 = { JSC::X86Registers::xmm9 };
|
||||
static const FloatRegister xmm10 = { JSC::X86Registers::xmm10 };
|
||||
static const FloatRegister xmm11 = { JSC::X86Registers::xmm11 };
|
||||
static const FloatRegister xmm12 = { JSC::X86Registers::xmm12 };
|
||||
static const FloatRegister xmm13 = { JSC::X86Registers::xmm13 };
|
||||
static const FloatRegister xmm14 = { JSC::X86Registers::xmm14 };
|
||||
static const FloatRegister xmm15 = { JSC::X86Registers::xmm15 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm0 = { JSC::X86Registers::xmm0 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm1 = { JSC::X86Registers::xmm1 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm2 = { JSC::X86Registers::xmm2 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm3 = { JSC::X86Registers::xmm3 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm4 = { JSC::X86Registers::xmm4 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm5 = { JSC::X86Registers::xmm5 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm6 = { JSC::X86Registers::xmm6 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm7 = { JSC::X86Registers::xmm7 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm8 = { JSC::X86Registers::xmm8 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm9 = { JSC::X86Registers::xmm9 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm10 = { JSC::X86Registers::xmm10 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm11 = { JSC::X86Registers::xmm11 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm12 = { JSC::X86Registers::xmm12 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm13 = { JSC::X86Registers::xmm13 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm14 = { JSC::X86Registers::xmm14 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm15 = { JSC::X86Registers::xmm15 };
|
||||
|
||||
// X86-common synonyms.
|
||||
static const Register eax = rax;
|
||||
|
@ -59,74 +59,74 @@ static const Register edi = rdi;
|
|||
static const Register ebp = rbp;
|
||||
static const Register esp = rsp;
|
||||
|
||||
static const Register InvalidReg = { JSC::X86Registers::invalid_reg };
|
||||
static const FloatRegister InvalidFloatReg = { JSC::X86Registers::invalid_xmm };
|
||||
static const MOZ_CONSTEXPR Register InvalidReg = { JSC::X86Registers::invalid_reg };
|
||||
static const MOZ_CONSTEXPR FloatRegister InvalidFloatReg = { JSC::X86Registers::invalid_xmm };
|
||||
|
||||
static const Register StackPointer = rsp;
|
||||
static const Register FramePointer = rbp;
|
||||
static const Register JSReturnReg = rcx;
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg = rcx;
|
||||
// Avoid, except for assertions.
|
||||
static const Register JSReturnReg_Type = JSReturnReg;
|
||||
static const Register JSReturnReg_Data = JSReturnReg;
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg_Type = JSReturnReg;
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg_Data = JSReturnReg;
|
||||
|
||||
static const Register ReturnReg = rax;
|
||||
static const Register ScratchReg = r11;
|
||||
static const Register HeapReg = r15;
|
||||
static const FloatRegister ReturnFloatReg = xmm0;
|
||||
static const FloatRegister ScratchFloatReg = xmm15;
|
||||
static const MOZ_CONSTEXPR Register ReturnReg = rax;
|
||||
static const MOZ_CONSTEXPR Register ScratchReg = r11;
|
||||
static const MOZ_CONSTEXPR Register HeapReg = r15;
|
||||
static const MOZ_CONSTEXPR FloatRegister ReturnFloatReg = xmm0;
|
||||
static const MOZ_CONSTEXPR FloatRegister ScratchFloatReg = xmm15;
|
||||
|
||||
static const Register ArgumentsRectifierReg = r8;
|
||||
static const Register CallTempReg0 = rax;
|
||||
static const Register CallTempReg1 = rdi;
|
||||
static const Register CallTempReg2 = rbx;
|
||||
static const Register CallTempReg3 = rcx;
|
||||
static const Register CallTempReg4 = rsi;
|
||||
static const Register CallTempReg5 = rdx;
|
||||
static const Register CallTempReg6 = rbp;
|
||||
static const MOZ_CONSTEXPR Register ArgumentsRectifierReg = r8;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg0 = rax;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg1 = rdi;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg2 = rbx;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg3 = rcx;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg4 = rsi;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg5 = rdx;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg6 = rbp;
|
||||
|
||||
// Different argument registers for WIN64
|
||||
#if defined(_WIN64)
|
||||
static const Register IntArgReg0 = rcx;
|
||||
static const Register IntArgReg1 = rdx;
|
||||
static const Register IntArgReg2 = r8;
|
||||
static const Register IntArgReg3 = r9;
|
||||
static const uint32_t NumIntArgRegs = 4;
|
||||
static const Register IntArgRegs[NumIntArgRegs] = { rcx, rdx, r8, r9 };
|
||||
static const MOZ_CONSTEXPR Register IntArgReg0 = rcx;
|
||||
static constMOZ_CONSTEXPRconstexpr Register IntArgReg1 = rdx;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg2 = r8;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg3 = r9;
|
||||
static constMOZ_CONSTEXPRuint32_t NumIntArgRegs = 4;
|
||||
static const MOZ_CONSTEXPR Register IntArgRegs[NumIntArgRegs] = { rcx, rdx, r8, r9 };
|
||||
|
||||
static const Register CallTempNonArgRegs[] = { rax, rdi, rbx, rsi };
|
||||
static const MOZ_CONSTEXPR Register CallTempNonArgRegs[] = { rax, rdi, rbx, rsi };
|
||||
static const uint32_t NumCallTempNonArgRegs =
|
||||
mozilla::ArrayLength(CallTempNonArgRegs);
|
||||
|
||||
static const FloatRegister FloatArgReg0 = xmm0;
|
||||
static const FloatRegister FloatArgReg1 = xmm1;
|
||||
static const FloatRegister FloatArgReg2 = xmm2;
|
||||
static const FloatRegister FloatArgReg3 = xmm3;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg0 = xmm0;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg1 = xmm1;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg2 = xmm2;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg3 = xmm3;
|
||||
static const uint32_t NumFloatArgRegs = 4;
|
||||
static const FloatRegister FloatArgRegs[NumFloatArgRegs] = { xmm0, xmm1, xmm2, xmm3 };
|
||||
#else
|
||||
static const Register IntArgReg0 = rdi;
|
||||
static const Register IntArgReg1 = rsi;
|
||||
static const Register IntArgReg2 = rdx;
|
||||
static const Register IntArgReg3 = rcx;
|
||||
static const Register IntArgReg4 = r8;
|
||||
static const Register IntArgReg5 = r9;
|
||||
static const uint32_t NumIntArgRegs = 6;
|
||||
static const Register IntArgRegs[NumIntArgRegs] = { rdi, rsi, rdx, rcx, r8, r9 };
|
||||
static const MOZ_CONSTEXPR Register IntArgReg0 = rdi;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg1 = rsi;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg2 = rdx;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg3 = rcx;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg4 = r8;
|
||||
static const MOZ_CONSTEXPR Register IntArgReg5 = r9;
|
||||
static const MOZ_CONSTEXPR uint32_t NumIntArgRegs = 6;
|
||||
static const MOZ_CONSTEXPR Register IntArgRegs[NumIntArgRegs] = { rdi, rsi, rdx, rcx, r8, r9 };
|
||||
|
||||
static const Register CallTempNonArgRegs[] = { rax, rbx };
|
||||
static const MOZ_CONSTEXPR Register CallTempNonArgRegs[] = { rax, rbx };
|
||||
static const uint32_t NumCallTempNonArgRegs =
|
||||
mozilla::ArrayLength(CallTempNonArgRegs);
|
||||
|
||||
static const FloatRegister FloatArgReg0 = xmm0;
|
||||
static const FloatRegister FloatArgReg1 = xmm1;
|
||||
static const FloatRegister FloatArgReg2 = xmm2;
|
||||
static const FloatRegister FloatArgReg3 = xmm3;
|
||||
static const FloatRegister FloatArgReg4 = xmm4;
|
||||
static const FloatRegister FloatArgReg5 = xmm5;
|
||||
static const FloatRegister FloatArgReg6 = xmm6;
|
||||
static const FloatRegister FloatArgReg7 = xmm7;
|
||||
static const uint32_t NumFloatArgRegs = 8;
|
||||
static const FloatRegister FloatArgRegs[NumFloatArgRegs] = { xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7 };
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg0 = xmm0;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg1 = xmm1;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg2 = xmm2;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg3 = xmm3;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg4 = xmm4;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg5 = xmm5;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg6 = xmm6;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgReg7 = xmm7;
|
||||
static const MOZ_CONSTEXPR uint32_t NumFloatArgRegs = 8;
|
||||
static const MOZ_CONSTEXPR FloatRegister FloatArgRegs[NumFloatArgRegs] = { xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7 };
|
||||
#endif
|
||||
|
||||
class ABIArgGenerator
|
||||
|
@ -152,9 +152,9 @@ class ABIArgGenerator
|
|||
static const Register NonVolatileReg;
|
||||
};
|
||||
|
||||
static const Register OsrFrameReg = IntArgReg3;
|
||||
static const MOZ_CONSTEXPR Register OsrFrameReg = IntArgReg3;
|
||||
|
||||
static const Register PreBarrierReg = rdx;
|
||||
static const MOZ_CONSTEXPR Register PreBarrierReg = rdx;
|
||||
|
||||
// GCC stack is aligned on 16 bytes, but we don't maintain the invariant in
|
||||
// jitted code.
|
||||
|
@ -265,7 +265,7 @@ namespace js {
|
|||
namespace ion {
|
||||
|
||||
// Return operand from a JS -> JS call.
|
||||
static const ValueOperand JSReturnOperand = ValueOperand(JSReturnReg);
|
||||
static const MOZ_CONSTEXPR ValueOperand JSReturnOperand = ValueOperand(JSReturnReg);
|
||||
|
||||
class Assembler : public AssemblerX86Shared
|
||||
{
|
||||
|
|
|
@ -18,46 +18,46 @@
|
|||
namespace js {
|
||||
namespace ion {
|
||||
|
||||
static const Register eax = { JSC::X86Registers::eax };
|
||||
static const Register ecx = { JSC::X86Registers::ecx };
|
||||
static const Register edx = { JSC::X86Registers::edx };
|
||||
static const Register ebx = { JSC::X86Registers::ebx };
|
||||
static const Register esp = { JSC::X86Registers::esp };
|
||||
static const Register ebp = { JSC::X86Registers::ebp };
|
||||
static const Register esi = { JSC::X86Registers::esi };
|
||||
static const Register edi = { JSC::X86Registers::edi };
|
||||
static const MOZ_CONSTEXPR Register eax = { JSC::X86Registers::eax };
|
||||
static const MOZ_CONSTEXPR Register ecx = { JSC::X86Registers::ecx };
|
||||
static const MOZ_CONSTEXPR Register edx = { JSC::X86Registers::edx };
|
||||
static const MOZ_CONSTEXPR Register ebx = { JSC::X86Registers::ebx };
|
||||
static const MOZ_CONSTEXPR Register esp = { JSC::X86Registers::esp };
|
||||
static const MOZ_CONSTEXPR Register ebp = { JSC::X86Registers::ebp };
|
||||
static const MOZ_CONSTEXPR Register esi = { JSC::X86Registers::esi };
|
||||
static const MOZ_CONSTEXPR Register edi = { JSC::X86Registers::edi };
|
||||
|
||||
static const FloatRegister xmm0 = { JSC::X86Registers::xmm0 };
|
||||
static const FloatRegister xmm1 = { JSC::X86Registers::xmm1 };
|
||||
static const FloatRegister xmm2 = { JSC::X86Registers::xmm2 };
|
||||
static const FloatRegister xmm3 = { JSC::X86Registers::xmm3 };
|
||||
static const FloatRegister xmm4 = { JSC::X86Registers::xmm4 };
|
||||
static const FloatRegister xmm5 = { JSC::X86Registers::xmm5 };
|
||||
static const FloatRegister xmm6 = { JSC::X86Registers::xmm6 };
|
||||
static const FloatRegister xmm7 = { JSC::X86Registers::xmm7 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm0 = { JSC::X86Registers::xmm0 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm1 = { JSC::X86Registers::xmm1 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm2 = { JSC::X86Registers::xmm2 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm3 = { JSC::X86Registers::xmm3 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm4 = { JSC::X86Registers::xmm4 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm5 = { JSC::X86Registers::xmm5 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm6 = { JSC::X86Registers::xmm6 };
|
||||
static const MOZ_CONSTEXPR FloatRegister xmm7 = { JSC::X86Registers::xmm7 };
|
||||
|
||||
static const Register InvalidReg = { JSC::X86Registers::invalid_reg };
|
||||
static const FloatRegister InvalidFloatReg = { JSC::X86Registers::invalid_xmm };
|
||||
static const MOZ_CONSTEXPR Register InvalidReg = { JSC::X86Registers::invalid_reg };
|
||||
static const MOZ_CONSTEXPR FloatRegister InvalidFloatReg = { JSC::X86Registers::invalid_xmm };
|
||||
|
||||
static const Register JSReturnReg_Type = ecx;
|
||||
static const Register JSReturnReg_Data = edx;
|
||||
static const Register StackPointer = esp;
|
||||
static const Register FramePointer = ebp;
|
||||
static const Register ReturnReg = eax;
|
||||
static const FloatRegister ReturnFloatReg = xmm0;
|
||||
static const FloatRegister ScratchFloatReg = xmm7;
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg_Type = ecx;
|
||||
static const MOZ_CONSTEXPR Register JSReturnReg_Data = edx;
|
||||
static const MOZ_CONSTEXPR Register StackPointer = esp;
|
||||
static const MOZ_CONSTEXPR Register FramePointer = ebp;
|
||||
static const MOZ_CONSTEXPR Register ReturnReg = eax;
|
||||
static const MOZ_CONSTEXPR FloatRegister ReturnFloatReg = xmm0;
|
||||
static const MOZ_CONSTEXPR FloatRegister ScratchFloatReg = xmm7;
|
||||
|
||||
static const Register ArgumentsRectifierReg = esi;
|
||||
static const Register CallTempReg0 = edi;
|
||||
static const Register CallTempReg1 = eax;
|
||||
static const Register CallTempReg2 = ebx;
|
||||
static const Register CallTempReg3 = ecx;
|
||||
static const Register CallTempReg4 = esi;
|
||||
static const Register CallTempReg5 = edx;
|
||||
static const Register CallTempReg6 = ebp;
|
||||
static const MOZ_CONSTEXPR Register ArgumentsRectifierReg = esi;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg0 = edi;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg1 = eax;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg2 = ebx;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg3 = ecx;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg4 = esi;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg5 = edx;
|
||||
static const MOZ_CONSTEXPR Register CallTempReg6 = ebp;
|
||||
|
||||
// We have no arg regs, so our NonArgRegs are just our CallTempReg*
|
||||
static const Register CallTempNonArgRegs[] = { edi, eax, ebx, ecx, esi, edx };
|
||||
static const MOZ_CONSTEXPR Register CallTempNonArgRegs[] = { edi, eax, ebx, ecx, esi, edx };
|
||||
static const uint32_t NumCallTempNonArgRegs =
|
||||
mozilla::ArrayLength(CallTempNonArgRegs);
|
||||
|
||||
|
@ -78,8 +78,8 @@ class ABIArgGenerator
|
|||
static const Register NonVolatileReg;
|
||||
};
|
||||
|
||||
static const Register OsrFrameReg = edx;
|
||||
static const Register PreBarrierReg = edx;
|
||||
static const MOZ_CONSTEXPR Register OsrFrameReg = edx;
|
||||
static const MOZ_CONSTEXPR Register PreBarrierReg = edx;
|
||||
|
||||
// GCC stack is aligned on 16 bytes, but we don't maintain the invariant in
|
||||
// jitted code.
|
||||
|
|
Загрузка…
Ссылка в новой задаче