bug 809306 - fix a bunch of static initializers caused by ion monkey's assembler headers r=dvander

This commit is contained in:
Trevor Saunders 2013-06-07 15:49:03 -04:00
Родитель 49fb5d684f
Коммит f31d4e7e40
7 изменённых файлов: 196 добавлений и 197 удалений

Просмотреть файл

@ -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.