author | Sean Stangl <sstangl@mozilla.com> |
Thu, 08 Oct 2015 12:14:13 -0700 | |
changeset 266977 | f627ad014e6c30a0a3fd0f00210107ae78e7ab1d |
parent 266976 | 3cd86929d8835f2b162dc2c8654ae9af2a54e06f |
child 266978 | b37d2cb075ada571185ef3d355261f22fc6592a2 |
push id | 29504 |
push user | cbook@mozilla.com |
push date | Fri, 09 Oct 2015 09:43:23 +0000 |
treeherder | mozilla-central@d01dd42e654b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | efaust |
bugs | 1212656 |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/js/src/asmjs/AsmJSModule.cpp +++ b/js/src/asmjs/AsmJSModule.cpp @@ -1787,16 +1787,17 @@ AsmJSModule::setProfilingEnabled(bool en uint8_t* caller = callerRetAddr - 4; Instruction* callerInsn = reinterpret_cast<Instruction*>(caller); BOffImm calleeOffset; callerInsn->as<InstBLImm>()->extractImm(&calleeOffset); void* callee = calleeOffset.getDest(callerInsn); #elif defined(JS_CODEGEN_ARM64) MOZ_CRASH(); void* callee = nullptr; + (void)callerRetAddr; #elif defined(JS_CODEGEN_MIPS32) Instruction* instr = (Instruction*)(callerRetAddr - 4 * sizeof(uint32_t)); void* callee = (void*)Assembler::ExtractLuiOriValue(instr, instr->next()); #elif defined(JS_CODEGEN_NONE) MOZ_CRASH(); void* callee = nullptr; #else # error "Missing architecture" @@ -1812,16 +1813,17 @@ AsmJSModule::setProfilingEnabled(bool en MOZ_ASSERT_IF(!profilingEnabled_, callee == entry); uint8_t* newCallee = enabled ? profilingEntry : entry; #if defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64) X86Encoding::SetRel32(callerRetAddr, newCallee); #elif defined(JS_CODEGEN_ARM) new (caller) InstBLImm(BOffImm(newCallee - caller), Assembler::Always); #elif defined(JS_CODEGEN_ARM64) + (void)newCallee; MOZ_CRASH(); #elif defined(JS_CODEGEN_MIPS32) Assembler::WriteLuiOriInstructions(instr, instr->next(), ScratchRegister, (uint32_t)newCallee); instr[2] = InstReg(op_special, ScratchRegister, zero, ra, ff_jalr); #elif defined(JS_CODEGEN_NONE) MOZ_CRASH(); #else @@ -1877,16 +1879,18 @@ AsmJSModule::setProfilingEnabled(bool en if (enabled) { MOZ_ASSERT(reinterpret_cast<Instruction*>(jump)->is<InstNOP>()); new (jump) InstBImm(BOffImm(profilingEpilogue - jump), Assembler::Always); } else { MOZ_ASSERT(reinterpret_cast<Instruction*>(jump)->is<InstBImm>()); new (jump) InstNOP(); } #elif defined(JS_CODEGEN_ARM64) + (void)jump; + (void)profilingEpilogue; MOZ_CRASH(); #elif defined(JS_CODEGEN_MIPS32) Instruction* instr = (Instruction*)jump; if (enabled) { Assembler::WriteLuiOriInstructions(instr, instr->next(), ScratchRegister, (uint32_t)profilingEpilogue); instr[2] = InstReg(op_special, ScratchRegister, zero, zero, ff_jr); } else {
--- a/js/src/jit/arm64/BaselineIC-arm64.cpp +++ b/js/src/jit/arm64/BaselineIC-arm64.cpp @@ -8,16 +8,17 @@ #include "jit/SharedICHelpers.h" #ifdef JS_SIMULATOR_ARM64 #include "jit/arm64/Assembler-arm64.h" #include "jit/arm64/BaselineCompiler-arm64.h" #include "jit/arm64/vixl/Debugger-vixl.h" #endif +#include "jit/MacroAssembler-inl.h" using namespace js; using namespace js::jit; namespace js { namespace jit { // ICCompare_Int32
--- a/js/src/jit/arm64/MoveEmitter-arm64.cpp +++ b/js/src/jit/arm64/MoveEmitter-arm64.cpp @@ -1,19 +1,30 @@ /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * vim: set ts=8 sts=4 et sw=4 tw=99: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "jit/arm64/MoveEmitter-arm64.h" +#include "jit/MacroAssembler-inl.h" using namespace js; using namespace js::jit; +MemOperand +MoveEmitterARM64::toMemOperand(const MoveOperand& operand) const +{ + MOZ_ASSERT(operand.isMemory()); + ARMRegister base(operand.base(), 64); + if (operand.base() == masm.getStackPointer()) + return MemOperand(base, operand.disp() + (masm.framePushed() - pushedAtStart_)); + return MemOperand(base, operand.disp()); +} + void MoveEmitterARM64::emit(const MoveResolver& moves) { if (moves.numCycles()) { masm.reserveStack(sizeof(void*)); pushedAtCycle_ = masm.framePushed(); }
--- a/js/src/jit/arm64/MoveEmitter-arm64.h +++ b/js/src/jit/arm64/MoveEmitter-arm64.h @@ -30,23 +30,17 @@ class MoveEmitterARM64 int32_t pushedAtCycle_; int32_t pushedAtSpill_; void assertDone() { MOZ_ASSERT(!inCycle_); } MemOperand cycleSlot(); - MemOperand toMemOperand(const MoveOperand& operand) const { - MOZ_ASSERT(operand.isMemory()); - ARMRegister base(operand.base(), 64); - if (operand.base() == masm.getStackPointer()) - return MemOperand(base, operand.disp() + (masm.framePushed() - pushedAtStart_)); - return MemOperand(base, operand.disp()); - } + MemOperand toMemOperand(const MoveOperand& operand) const; ARMRegister toARMReg32(const MoveOperand& operand) const { MOZ_ASSERT(operand.isGeneralReg()); return ARMRegister(operand.reg(), 32); } ARMRegister toARMReg64(const MoveOperand& operand) const { if (operand.isGeneralReg()) return ARMRegister(operand.reg(), 64); else
--- a/js/src/jit/arm64/vixl/Instructions-vixl.cpp +++ b/js/src/jit/arm64/vixl/Instructions-vixl.cpp @@ -251,17 +251,17 @@ const Instruction* Instruction::ImmPCOff VIXL_ASSERT(BranchType() != UnknownBranchType); // Relative branch offsets are instruction-size-aligned. offset = ImmBranch() << kInstructionSizeLog2; } return base + offset; } -inline int Instruction::ImmBranch() const { +int Instruction::ImmBranch() const { switch (BranchType()) { case CondBranchType: return ImmCondBranch(); case UncondBranchType: return ImmUncondBranch(); case CompareBranchType: return ImmCmpBranch(); case TestBranchType: return ImmTestBranch(); default: VIXL_UNREACHABLE(); } return 0;