Bug 814472 - Add jump(Register) method to Ion macro assembler. r=jandem
authorKannan Vijayan <kvijayan@mozilla.com>
Thu, 22 Nov 2012 13:13:29 -0500 (2012-11-22)
changeset 114021 4be7afcecf8c37876c212089f6e690a1f04caf5b
parent 114020 db7d2a9d2ce3087c4e88f6b972cf52794270ddca
child 114022 13a335d277d9af6f2ed785f9940a46e9259c2e5d
push id23896
push usercpearce@mozilla.com
push dateFri, 23 Nov 2012 02:23:35 +0000 (2012-11-23)
treeherdermozilla-central@c27455415eac [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem
bugs814472
milestone20.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 814472 - Add jump(Register) method to Ion macro assembler. r=jandem
js/src/ion/arm/MacroAssembler-arm.h
js/src/ion/shared/MacroAssembler-x86-shared.h
--- a/js/src/ion/arm/MacroAssembler-arm.h
+++ b/js/src/ion/arm/MacroAssembler-arm.h
@@ -481,16 +481,19 @@ class MacroAssemblerARMCompat : public M
         ma_movPatchable(Imm32(imm.value), ScratchRegister, Always, L_MOVWT);
         ma_push(ScratchRegister);
         return label;
     }
 
     void jump(Label *label) {
         as_b(label);
     }
+    void jump(Register reg) {
+        ma_bx(reg);
+    }
 
     void neg32(Register reg) {
         ma_neg(reg, reg, SetCond);
     }
     void test32(Register lhs, Register rhs) {
         ma_tst(lhs, rhs);
     }
     void testPtr(Register lhs, Register rhs) {
--- a/js/src/ion/shared/MacroAssembler-x86-shared.h
+++ b/js/src/ion/shared/MacroAssembler-x86-shared.h
@@ -170,16 +170,19 @@ class MacroAssemblerX86Shared : public A
     }
 
     void jump(Label *label) {
         jmp(label);
     }
     void jump(RepatchLabel *label) {
         jmp(label);
     }
+    void jump(Register reg) {
+        jmp(Operand(reg));
+    }
 
     void convertInt32ToDouble(const Register &src, const FloatRegister &dest) {
         cvtsi2sd(Operand(src), dest);
     }
     Condition testDoubleTruthy(bool truthy, const FloatRegister &reg) {
         xorpd(ScratchFloatReg, ScratchFloatReg);
         ucomisd(ScratchFloatReg, reg);
         return truthy ? NonZero : Zero;