Bug 1204189 - IonMonkey: MIPS: Split shareable code to mips-shared in LIR-mips32. r=nbp
authorHeiher <r@hev.cc>
Tue, 15 Sep 2015 17:48:36 +0800
changeset 296820 d1cb5ccdb3752d297f04aa47697897173c1cab6c
parent 296819 76af401b52d454a3a2ad7ed26c97d2bb742e3209
child 296821 1cc8d9beba22f303a7e498acbd08c4ce73de0399
push id962
push userjlund@mozilla.com
push dateFri, 04 Dec 2015 23:28:54 +0000
treeherdermozilla-release@23a2d286e80f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnbp
bugs1204189
milestone43.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
Bug 1204189 - IonMonkey: MIPS: Split shareable code to mips-shared in LIR-mips32. r=nbp --- js/src/jit/LIR.h | 5 +- .../LIR-mips32.h => mips-shared/LIR-mips-shared.h} | 72 +---- js/src/jit/mips32/LIR-mips32.h | 291 --------------------- 3 files changed, 7 insertions(+), 361 deletions(-) copy js/src/jit/{mips32/LIR-mips32.h => mips-shared/LIR-mips-shared.h} (82%)
js/src/jit/LIR.h
js/src/jit/mips-shared/LIR-mips-shared.h
js/src/jit/mips32/LIR-mips32.h
--- a/js/src/jit/LIR.h
+++ b/js/src/jit/LIR.h
@@ -1823,17 +1823,20 @@ LAllocation::toRegister() const
 #  include "jit/x64/LIR-x64.h"
 # endif
 # include "jit/x86-shared/LIR-x86-shared.h"
 #elif defined(JS_CODEGEN_ARM)
 # include "jit/arm/LIR-arm.h"
 #elif defined(JS_CODEGEN_ARM64)
 # include "jit/arm64/LIR-arm64.h"
 #elif defined(JS_CODEGEN_MIPS32)
-# include "jit/mips32/LIR-mips32.h"
+# if defined(JS_CODEGEN_MIPS32)
+#  include "jit/mips32/LIR-mips32.h"
+# endif
+# include "jit/mips-shared/LIR-mips-shared.h"
 #elif defined(JS_CODEGEN_NONE)
 # include "jit/none/LIR-none.h"
 #else
 # error "Unknown architecture!"
 #endif
 
 #undef LIR_HEADER
 
copy from js/src/jit/mips32/LIR-mips32.h
copy to js/src/jit/mips-shared/LIR-mips-shared.h
--- a/js/src/jit/mips32/LIR-mips32.h
+++ b/js/src/jit/mips-shared/LIR-mips-shared.h
@@ -1,86 +1,20 @@
 /* -*- 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/. */
 
-#ifndef jit_mips32_LIR_mips32_h
-#define jit_mips32_LIR_mips32_h
+#ifndef jit_mips_shared_LIR_mips_shared_h
+#define jit_mips_shared_LIR_mips_shared_h
 
 namespace js {
 namespace jit {
 
-class LBoxFloatingPoint : public LInstructionHelper<2, 1, 1>
-{
-    MIRType type_;
-
-  public:
-    LIR_HEADER(BoxFloatingPoint);
-
-    LBoxFloatingPoint(const LAllocation& in, const LDefinition& temp, MIRType type)
-      : type_(type)
-    {
-        setOperand(0, in);
-        setTemp(0, temp);
-    }
-
-    MIRType type() const {
-        return type_;
-    }
-    const char* extraName() const {
-        return StringFromMIRType(type_);
-    }
-};
-
-class LUnbox : public LInstructionHelper<1, 2, 0>
-{
-  public:
-    LIR_HEADER(Unbox);
-
-    MUnbox* mir() const {
-        return mir_->toUnbox();
-    }
-    const LAllocation* payload() {
-        return getOperand(0);
-    }
-    const LAllocation* type() {
-        return getOperand(1);
-    }
-    const char* extraName() const {
-        return StringFromMIRType(mir()->type());
-    }
-};
-
-class LUnboxFloatingPoint : public LInstructionHelper<1, 2, 0>
-{
-    MIRType type_;
-
-  public:
-    LIR_HEADER(UnboxFloatingPoint);
-
-    static const size_t Input = 0;
-
-    LUnboxFloatingPoint(MIRType type)
-      : type_(type)
-    { }
-
-    MUnbox* mir() const {
-        return mir_->toUnbox();
-    }
-
-    MIRType type() const {
-        return type_;
-    }
-    const char* extraName() const {
-        return StringFromMIRType(type_);
-    }
-};
-
 // Convert a 32-bit unsigned integer to a double.
 class LAsmJSUInt32ToDouble : public LInstructionHelper<1, 1, 0>
 {
   public:
     LIR_HEADER(AsmJSUInt32ToDouble)
 
     LAsmJSUInt32ToDouble(const LAllocation& input) {
         setOperand(0, input);
@@ -365,9 +299,9 @@ class LRandom : public LCallInstructionH
     const LDefinition* temp2() {
         return getTemp(1);
     }
 };
 
 } // namespace jit
 } // namespace js
 
-#endif /* jit_mips32_LIR_mips32_h */
+#endif /* jit_mips_shared_LIR_mips_shared_h */
--- a/js/src/jit/mips32/LIR-mips32.h
+++ b/js/src/jit/mips32/LIR-mips32.h
@@ -71,303 +71,12 @@ class LUnboxFloatingPoint : public LInst
     MIRType type() const {
         return type_;
     }
     const char* extraName() const {
         return StringFromMIRType(type_);
     }
 };
 
-// Convert a 32-bit unsigned integer to a double.
-class LAsmJSUInt32ToDouble : public LInstructionHelper<1, 1, 0>
-{
-  public:
-    LIR_HEADER(AsmJSUInt32ToDouble)
-
-    LAsmJSUInt32ToDouble(const LAllocation& input) {
-        setOperand(0, input);
-    }
-};
-
-// Convert a 32-bit unsigned integer to a float32.
-class LAsmJSUInt32ToFloat32 : public LInstructionHelper<1, 1, 0>
-{
-  public:
-    LIR_HEADER(AsmJSUInt32ToFloat32)
-
-    LAsmJSUInt32ToFloat32(const LAllocation& input) {
-        setOperand(0, input);
-    }
-};
-
-
-class LDivI : public LBinaryMath<1>
-{
-  public:
-    LIR_HEADER(DivI);
-
-    LDivI(const LAllocation& lhs, const LAllocation& rhs,
-          const LDefinition& temp) {
-        setOperand(0, lhs);
-        setOperand(1, rhs);
-        setTemp(0, temp);
-    }
-
-    MDiv* mir() const {
-        return mir_->toDiv();
-    }
-};
-
-class LDivPowTwoI : public LInstructionHelper<1, 1, 1>
-{
-    const int32_t shift_;
-
-  public:
-    LIR_HEADER(DivPowTwoI)
-
-    LDivPowTwoI(const LAllocation& lhs, int32_t shift, const LDefinition& temp)
-      : shift_(shift)
-    {
-        setOperand(0, lhs);
-        setTemp(0, temp);
-    }
-
-    const LAllocation* numerator() {
-        return getOperand(0);
-    }
-
-    int32_t shift() {
-        return shift_;
-    }
-
-    MDiv* mir() const {
-        return mir_->toDiv();
-    }
-};
-
-class LModI : public LBinaryMath<1>
-{
-  public:
-    LIR_HEADER(ModI);
-
-    LModI(const LAllocation& lhs, const LAllocation& rhs,
-          const LDefinition& callTemp)
-    {
-        setOperand(0, lhs);
-        setOperand(1, rhs);
-        setTemp(0, callTemp);
-    }
-
-    const LDefinition* callTemp() {
-        return getTemp(0);
-    }
-
-    MMod* mir() const {
-        return mir_->toMod();
-    }
-};
-
-class LModPowTwoI : public LInstructionHelper<1, 1, 0>
-{
-    const int32_t shift_;
-
-  public:
-    LIR_HEADER(ModPowTwoI);
-    int32_t shift()
-    {
-        return shift_;
-    }
-
-    LModPowTwoI(const LAllocation& lhs, int32_t shift)
-      : shift_(shift)
-    {
-        setOperand(0, lhs);
-    }
-
-    MMod* mir() const {
-        return mir_->toMod();
-    }
-};
-
-class LModMaskI : public LInstructionHelper<1, 1, 2>
-{
-    const int32_t shift_;
-
-  public:
-    LIR_HEADER(ModMaskI);
-
-    LModMaskI(const LAllocation& lhs, const LDefinition& temp0, const LDefinition& temp1,
-              int32_t shift)
-      : shift_(shift)
-    {
-        setOperand(0, lhs);
-        setTemp(0, temp0);
-        setTemp(1, temp1);
-    }
-
-    int32_t shift() const {
-        return shift_;
-    }
-
-    MMod* mir() const {
-        return mir_->toMod();
-    }
-};
-
-// Takes a tableswitch with an integer to decide
-class LTableSwitch : public LInstructionHelper<0, 1, 2>
-{
-  public:
-    LIR_HEADER(TableSwitch);
-
-    LTableSwitch(const LAllocation& in, const LDefinition& inputCopy,
-                 const LDefinition& jumpTablePointer, MTableSwitch* ins) {
-        setOperand(0, in);
-        setTemp(0, inputCopy);
-        setTemp(1, jumpTablePointer);
-        setMir(ins);
-    }
-
-    MTableSwitch* mir() const {
-        return mir_->toTableSwitch();
-    }
-
-    const LAllocation* index() {
-        return getOperand(0);
-    }
-    const LDefinition* tempInt() {
-        return getTemp(0);
-    }
-    // This is added to share the same CodeGenerator prefixes.
-    const LDefinition* tempPointer() {
-        return getTemp(1);
-    }
-};
-
-// Takes a tableswitch with an integer to decide
-class LTableSwitchV : public LInstructionHelper<0, BOX_PIECES, 3>
-{
-  public:
-    LIR_HEADER(TableSwitchV);
-
-    LTableSwitchV(const LDefinition& inputCopy, const LDefinition& floatCopy,
-                  const LDefinition& jumpTablePointer, MTableSwitch* ins)
-    {
-        setTemp(0, inputCopy);
-        setTemp(1, floatCopy);
-        setTemp(2, jumpTablePointer);
-        setMir(ins);
-    }
-
-    MTableSwitch* mir() const {
-        return mir_->toTableSwitch();
-    }
-
-    static const size_t InputValue = 0;
-
-    const LDefinition* tempInt() {
-        return getTemp(0);
-    }
-    const LDefinition* tempFloat() {
-        return getTemp(1);
-    }
-    const LDefinition* tempPointer() {
-        return getTemp(2);
-    }
-};
-
-class LGuardShape : public LInstructionHelper<0, 1, 1>
-{
-  public:
-    LIR_HEADER(GuardShape);
-
-    LGuardShape(const LAllocation& in, const LDefinition& temp) {
-        setOperand(0, in);
-        setTemp(0, temp);
-    }
-    const MGuardShape* mir() const {
-        return mir_->toGuardShape();
-    }
-    const LDefinition* tempInt() {
-        return getTemp(0);
-    }
-};
-
-class LGuardObjectGroup : public LInstructionHelper<0, 1, 1>
-{
-  public:
-    LIR_HEADER(GuardObjectGroup);
-
-    LGuardObjectGroup(const LAllocation& in, const LDefinition& temp) {
-        setOperand(0, in);
-        setTemp(0, temp);
-    }
-    const MGuardObjectGroup* mir() const {
-        return mir_->toGuardObjectGroup();
-    }
-    const LDefinition* tempInt() {
-        return getTemp(0);
-    }
-};
-
-class LMulI : public LBinaryMath<0>
-{
-  public:
-    LIR_HEADER(MulI);
-
-    MMul* mir() {
-        return mir_->toMul();
-    }
-};
-
-class LUDivOrMod : public LBinaryMath<0>
-{
-  public:
-    LIR_HEADER(UDivOrMod);
-
-    MBinaryArithInstruction* mir() const {
-        MOZ_ASSERT(mir_->isDiv() || mir_->isMod());
-        return static_cast<MBinaryArithInstruction*>(mir_);
-    }
-
-    bool canBeDivideByZero() const {
-        if (mir_->isMod())
-            return mir_->toMod()->canBeDivideByZero();
-        return mir_->toDiv()->canBeDivideByZero();
-    }
-};
-
-class LAsmJSLoadFuncPtr : public LInstructionHelper<1, 1, 0>
-{
-  public:
-    LIR_HEADER(AsmJSLoadFuncPtr);
-    LAsmJSLoadFuncPtr(const LAllocation& index) {
-        setOperand(0, index);
-    }
-    const MAsmJSLoadFuncPtr* mir() const {
-        return mir_->toAsmJSLoadFuncPtr();
-    }
-    const LAllocation* index() {
-        return getOperand(0);
-    }
-};
-
-// Math.random().
-class LRandom : public LCallInstructionHelper<1, 0, 2>
-{
-  public:
-    LIR_HEADER(Random)
-    LRandom(const LDefinition& temp, const LDefinition& temp2) {
-        setTemp(0, temp);
-        setTemp(1, temp2);
-    }
-    const LDefinition* temp() {
-        return getTemp(0);
-    }
-    const LDefinition* temp2() {
-        return getTemp(1);
-    }
-};
-
 } // namespace jit
 } // namespace js
 
 #endif /* jit_mips32_LIR_mips32_h */