Bug 688327 - tempCallReg cannot return callee-saved registers since they may be held live across FASTCALLs (r=dvander)
☠☠ backed out by 101f56e8231d ☠ ☠
authorSteve Fink <sfink@mozilla.com>
Thu, 22 Sep 2011 15:06:08 -0700
changeset 78939 75010170a6eebb980afacb7d639da0a9b093f870
parent 78938 6e359c7e80803cd6cc787ea21ed1daa6553d3d00
child 78940 a21f23d350d819d20a42e73a247545dce83d4f7b
push id78
push userclegnitto@mozilla.com
push dateFri, 16 Dec 2011 17:32:24 +0000
treeherdermozilla-release@79d24e644fdd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdvander
bugs688327
milestone9.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 688327 - tempCallReg cannot return callee-saved registers since they may be held live across FASTCALLs (r=dvander)
js/src/methodjit/MachineRegs.h
--- a/js/src/methodjit/MachineRegs.h
+++ b/js/src/methodjit/MachineRegs.h
@@ -411,17 +411,17 @@ struct Registers {
     static const uint32 AvailAnyRegs = AvailRegs | AvailFPRegs;
 
     static inline uint32 maskReg(AnyRegisterID reg) {
         return (1 << reg.reg_);
     }
 
     /* Get a register which is not live before a FASTCALL. */
     static inline RegisterID tempCallReg() {
-        Registers regs(AvailRegs);
+        Registers regs(TempRegs);
         regs.takeReg(Registers::ArgReg0);
         regs.takeReg(Registers::ArgReg1);
         return regs.takeAnyReg().reg();
     }
 
     /* Get a register which is not live before a normal ABI call with at most four args. */
     static inline Registers tempCallRegMask() {
         Registers regs(AvailRegs);