Bug 1644554 - Block V128 in the Jit ABI r=bbouvier
authorLars T Hansen <lhansen@mozilla.com>
Fri, 12 Jun 2020 08:58:57 +0000
changeset 535432 af354efba63aa90f773464f8956f8a90aee29a83
parent 535431 05e436fbc095956356421978a548db389d000ed8
child 535433 cfa67d766e0b617742dd6d6fab712125ff3ee795
push id37501
push usernbeleuzu@mozilla.com
push dateSat, 13 Jun 2020 03:21:52 +0000
treeherdermozilla-central@80b6f21783a3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbbouvier
bugs1644554
milestone79.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 1644554 - Block V128 in the Jit ABI r=bbouvier See bug for further description. Differential Revision: https://phabricator.services.mozilla.com/D79415
js/src/wasm/WasmStubs.cpp
--- a/js/src/wasm/WasmStubs.cpp
+++ b/js/src/wasm/WasmStubs.cpp
@@ -1827,17 +1827,25 @@ static void FillArgumentArrayForExit(
             masm.loadConstantDouble(0, dscratch);
             GenPrintF64(DebugChannel::Import, masm, dscratch);
             masm.boxDouble(dscratch, dst);
           } else {
             MOZ_CRASH(
                 "FillArgumentArrayForExit, ABIArg::Stack: unexpected type");
           }
         } else {
-          StackCopy(masm, type, scratch, src, dst);
+          if (type == MIRType::Simd128) {
+            // As above.  StackCopy does not know this trick.
+            ScratchDoubleScope dscratch(masm);
+            masm.loadConstantDouble(0, dscratch);
+            GenPrintF64(DebugChannel::Import, masm, dscratch);
+            masm.storeDouble(dscratch, dst);
+          } else {
+            StackCopy(masm, type, scratch, src, dst);
+          }
         }
         break;
       }
       case ABIArg::Uninitialized:
         MOZ_CRASH("Uninitialized ABIArg kind");
     }
   }
   GenPrintf(DebugChannel::Import, masm, "\n");