Bug 885169 - Spidermonkey: Fix ARM trampoline code to inform its RegisterSet of its use of a context register. r=nbp
authorDan Gohman <sunfish@google.com>
Wed, 04 Sep 2013 21:16:07 -0700
changeset 158536 8a34b197be1d7b298afcd6d8a347ccfb7bf222f9
parent 158535 4537337759b73a894a7c6b4c1d4b2b1d4d68010d
child 158537 7a887cc385cb4250ab9199641db1a592ca57dd2b
push id2961
push userlsblakk@mozilla.com
push dateMon, 28 Oct 2013 21:59:28 +0000
treeherdermozilla-beta@73ef4f13486f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnbp
bugs885169
milestone26.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 885169 - Spidermonkey: Fix ARM trampoline code to inform its RegisterSet of its use of a context register. r=nbp
js/src/jit/arm/Trampoline-arm.cpp
--- a/js/src/jit/arm/Trampoline-arm.cpp
+++ b/js/src/jit/arm/Trampoline-arm.cpp
@@ -646,16 +646,17 @@ IonRuntime::generateVMWrapper(JSContext 
     MacroAssembler masm(cx);
     GeneralRegisterSet regs = GeneralRegisterSet(Register::Codes::WrapperMask);
 
     // Wrapper register set is a superset of Volatile register set.
     JS_STATIC_ASSERT((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0);
 
     // The context is the first argument; r0 is the first argument register.
     Register cxreg = r0;
+    regs.take(cxreg);
 
     // Stack is:
     //    ... frame ...
     //  +8  [args] + argPadding
     //  +0  ExitFrame
     //
     // We're aligned to an exit frame, so link it up.
     masm.enterExitFrameAndLoadContext(&f, cxreg, regs.getAny(), f.executionMode);