Bug 1528399 - ARM64: EnterJIT should align on 16 bytes instead of 256. r=sstangl
authorNicolas B. Pierron <nicolas.b.pierron@nbp.name>
Wed, 27 Feb 2019 16:49:10 +0000
changeset 522352 08c00f2c0eaba54e7f99aa5b0024338187464e7e
parent 522351 c660601ee72374ffda52fecbcf5924156ecc2f04
child 522353 9970e92003a2ba84098ffab8531863051f800f46
push id2032
push userffxbld-merge
push dateMon, 13 May 2019 09:36:57 +0000
treeherdermozilla-release@455c1065dcbe [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssstangl
bugs1528399
milestone67.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 1528399 - ARM64: EnterJIT should align on 16 bytes instead of 256. r=sstangl Differential Revision: https://phabricator.services.mozilla.com/D20174
js/src/jit/arm64/Trampoline-arm64.cpp
--- a/js/src/jit/arm64/Trampoline-arm64.cpp
+++ b/js/src/jit/arm64/Trampoline-arm64.cpp
@@ -103,17 +103,17 @@ void JitRuntime::generateEnterJIT(JSCont
   // Touch frame incrementally (a requirement for Windows).
   //
   // Use already saved callee-save registers r20 and r21 as temps.
   //
   // This has to be done outside the ScratchRegisterScope, as the temps are
   // under demand inside the touchFrameValues call.
 
   // Give sp 16-byte alignment and sync stack pointers.
-  masm.andToStackPtr(Imm32(~0xff));
+  masm.andToStackPtr(Imm32(~0xf));
   // We needn't worry about the Gecko Profiler mark because touchFrameValues
   // touches in large increments.
   masm.touchFrameValues(reg_argc, r20, r21);
   // Restore stack pointer, preserved above.
   masm.moveToStackPtr(r19);
 
   // Push the argument vector onto the stack.
   // WARNING: destructively modifies reg_argv
@@ -133,17 +133,17 @@ void JitRuntime::generateEnterJIT(JSCont
     // overwriting the Gecko Profiler mark pushed above.
     masm.subFromStackPtr(Imm32(8));
 
     // sp -= 8 * argc
     masm.Sub(PseudoStackPointer64, PseudoStackPointer64,
              Operand(tmp_argc, vixl::SXTX, 3));
 
     // Give sp 16-byte alignment and sync stack pointers.
-    masm.andToStackPtr(Imm32(~0xff));
+    masm.andToStackPtr(Imm32(~0xf));
     masm.moveStackPtrTo(tmp_sp.asUnsized());
 
     masm.branchTestPtr(Assembler::Zero, reg_argc, reg_argc, &noArguments);
 
     // Begin argument-pushing loop.
     // This could be optimized using Ldp and Stp.
     {
       masm.bind(&loopHead);