Bug 969375 - MIPS port: Added JS_CODEGEN_MIPS checks and includes. r=jandem

This commit is contained in:
Branislav Rankov 2014-04-15 11:53:23 +02:00
Родитель c14cfbf44f
Коммит 041d3b7a2f
20 изменённых файлов: 61 добавлений и 19 удалений

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

@ -349,9 +349,9 @@ struct BaselineStackBuilder
JS_ASSERT(BaselineFrameReg == FramePointer);
priorOffset -= sizeof(void *);
return virtualPointerAtStackOffset(priorOffset);
#elif defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_ARM)
// On X64 and ARM, the frame pointer save location depends on the caller of the
// the rectifier frame.
#elif defined(JS_CODEGEN_X64) || defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_MIPS)
// On X64, ARM and MIPS, the frame pointer save location depends on
// the caller of the rectifier frame.
BufferPointer<IonRectifierFrameLayout> priorFrame =
pointerAtStackOffset<IonRectifierFrameLayout>(priorOffset);
FrameType priorType = priorFrame->prevType();

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

@ -442,6 +442,8 @@ BaselineCompiler::emitOutOfLinePostBarrierSlot()
// On ARM, save the link register before calling. It contains the return
// address. The |masm.ret()| later will pop this into |pc| to return.
masm.push(lr);
#elif defined(JS_CODEGEN_MIPS)
masm.push(ra);
#endif
masm.setupUnalignedABICall(2, scratch);

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

@ -14,8 +14,12 @@
# include "jit/x86/BaselineCompiler-x86.h"
#elif defined(JS_CODEGEN_X64)
# include "jit/x64/BaselineCompiler-x64.h"
#else
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/BaselineCompiler-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/BaselineCompiler-mips.h"
#else
# error "Unknown architecture!"
#endif
namespace js {

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

@ -15,6 +15,8 @@
# include "jit/x64/BaselineHelpers-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/BaselineHelpers-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/BaselineHelpers-mips.h"
#else
# error "Unknown architecture!"
#endif

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

@ -760,7 +760,7 @@ ICStubCompiler::emitPostWriteBarrierSlot(MacroAssembler &masm, Register obj, Val
masm.branchPtr(Assembler::AboveOrEqual, valReg, ImmWord(nursery.heapEnd()), &skipBarrier);
// void PostWriteBarrier(JSRuntime *rt, JSObject *obj);
#ifdef JS_CODEGEN_ARM
#if defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_MIPS)
saveRegs.add(BaselineTailCallReg);
#endif
saveRegs = GeneralRegisterSet::Intersect(saveRegs, GeneralRegisterSet::Volatile());

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

@ -1108,9 +1108,12 @@ class ICStubCompiler
inline GeneralRegisterSet availableGeneralRegs(size_t numInputs) const {
GeneralRegisterSet regs(GeneralRegisterSet::All());
JS_ASSERT(!regs.has(BaselineStackReg));
#ifdef JS_CODEGEN_ARM
#if defined(JS_CODEGEN_ARM)
JS_ASSERT(!regs.has(BaselineTailCallReg));
regs.take(BaselineSecondScratchReg);
#elif defined(JS_CODEGEN_MIPS)
JS_ASSERT(!regs.has(BaselineTailCallReg));
JS_ASSERT(!regs.has(BaselineSecondScratchReg));
#endif
regs.take(BaselineFrameReg);
regs.take(BaselineStubReg);

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

@ -13,8 +13,12 @@
# include "jit/x86/BaselineRegisters-x86.h"
#elif defined(JS_CODEGEN_X64)
# include "jit/x64/BaselineRegisters-x64.h"
#else
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/BaselineRegisters-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/BaselineRegisters-mips.h"
#else
# error "Unknown architecture!"
#endif
namespace js {

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

@ -18,8 +18,10 @@
# include "jit/x64/CodeGenerator-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/CodeGenerator-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/CodeGenerator-mips.h"
#else
#error "CPU Not Supported"
#error "Unknown architecture!"
#endif
namespace js {

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

@ -7,8 +7,10 @@
#ifndef jit_IonCaches_h
#define jit_IonCaches_h
#ifdef JS_CODEGEN_ARM
#if defined(JS_CODEGEN_ARM)
# include "jit/arm/Assembler-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/Assembler-mips.h"
#endif
#include "jit/Registers.h"
#include "jit/shared/Assembler-shared.h"
@ -349,13 +351,16 @@ class RepatchIonCache : public IonCache
// Offset from the initial jump to the rejoin label.
#ifdef JS_CODEGEN_ARM
static const size_t REJOIN_LABEL_OFFSET = 4;
#elif defined(JS_CODEGEN_MIPS)
// The size of jump created by MacroAssemblerMIPSCompat::jumpWithPatch.
static const size_t REJOIN_LABEL_OFFSET = 4 * sizeof(void *);
#else
static const size_t REJOIN_LABEL_OFFSET = 0;
#endif
CodeLocationLabel rejoinLabel() const {
uint8_t *ptr = initialJump_.raw();
#ifdef JS_CODEGEN_ARM
#if defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_MIPS)
uint32_t i = 0;
while (i < REJOIN_LABEL_OFFSET)
ptr = Assembler::nextInstruction(ptr, &i);

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

@ -17,6 +17,10 @@
# include "jit/x64/MacroAssembler-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/MacroAssembler-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/MacroAssembler-mips.h"
#else
# error "Unknown architecture!"
#endif
#include "jit/IonInstrumentation.h"
#include "jit/JitCompartment.h"

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

@ -1591,6 +1591,10 @@ LAllocation::toRegister() const
# include "jit/shared/LIR-x86-shared.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/LIR-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/LIR-mips.h"
#else
# error "Unknown architecture!"
#endif
#undef LIR_HEADER

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

@ -306,6 +306,10 @@
# include "jit/x64/LOpcodes-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/LOpcodes-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/LOpcodes-mips.h"
#else
# error "Unknown architecture!"
#endif
#define LIR_OPCODE_LIST(_) \

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

@ -17,8 +17,10 @@
# include "jit/x64/Lowering-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/Lowering-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/Lowering-mips.h"
#else
# error "CPU!"
# error "Unknown architecture!"
#endif
namespace js {

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

@ -11,8 +11,10 @@
# include "jit/shared/MoveEmitter-x86-shared.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/MoveEmitter-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/MoveEmitter-mips.h"
#else
# error "CPU Not Supported"
# error "Unknown architecture!"
#endif
#endif /* jit_MoveEmitter_h */

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

@ -311,7 +311,7 @@ class RegisterAllocator
#if defined(JS_CODEGEN_X64)
if (mir->compilingAsmJS())
allRegisters_.take(AnyRegister(HeapReg));
#elif defined(JS_CODEGEN_ARM)
#elif defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_MIPS)
if (mir->compilingAsmJS()) {
allRegisters_.take(AnyRegister(HeapReg));
allRegisters_.take(AnyRegister(GlobalReg));

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

@ -844,7 +844,7 @@ class AsmJSHeapAccess
isFloat32Load_(false),
loadedReg_(UINT8_MAX)
{}
#elif defined(JS_CODEGEN_ARM)
#elif defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_MIPS)
explicit AsmJSHeapAccess(uint32_t offset)
: offset_(offset)
{}

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

@ -16,6 +16,10 @@
# include "jit/x64/Architecture-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/Architecture-arm.h"
#elif defined(JS_CODEGEN_MIPS)
# include "jit/mips/Architecture-mips.h"
#else
# error "Unknown architecture!"
#endif
namespace js {

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

@ -10,8 +10,8 @@
# include "jit/x86/MacroAssembler-x86.h"
#elif defined(JS_CODEGEN_X64)
# include "jit/x64/MacroAssembler-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/MacroAssembler-arm.h"
#else
# error "Wrong architecture. Only x86 and x64 should build this file!"
#endif
using namespace js;

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

@ -67,7 +67,7 @@ CodeGeneratorShared::CodeGeneratorShared(MIRGenerator *gen, LIRGraph *graph, Mac
// An MAsmJSCall does not align the stack pointer at calls sites but instead
// relies on the a priori stack adjustment (in the prologue) on platforms
// (like x64) which require the stack to be aligned.
#ifdef JS_CODEGEN_ARM
#if defined(JS_CODEGEN_ARM) || defined(JS_CODEGEN_MIPS)
bool forceAlign = true;
#else
bool forceAlign = false;

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

@ -11,8 +11,8 @@
# include "jit/x86/MacroAssembler-x86.h"
#elif defined(JS_CODEGEN_X64)
# include "jit/x64/MacroAssembler-x64.h"
#elif defined(JS_CODEGEN_ARM)
# include "jit/arm/MacroAssembler-arm.h"
#else
# error "Wrong architecture. Only x86 and x64 should build this file!"
#endif
#include "jit/MoveResolver.h"