Bug 1592974 - Spill registers before emitting an interrupt check r=lth
authorAndy Wingo <wingo@igalia.com>
Tue, 05 Nov 2019 15:40:21 +0000
changeset 500594 f0e9baa206dc4318293804c2c2ccca5c9eb7258e
parent 500593 5bfb9d257c441384b0217032236bab42b59374c8
child 500595 a9d567f1675794fc506a250121338a7d3d17e44e
push id36767
push usershindli@mozilla.com
push dateTue, 05 Nov 2019 21:49:23 +0000
treeherdermozilla-central@a465ca5c85f2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerslth
bugs1592974
milestone72.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 1592974 - Spill registers before emitting an interrupt check r=lth Differential Revision: https://phabricator.services.mozilla.com/D51270
js/src/wasm/WasmBaselineCompile.cpp
--- a/js/src/wasm/WasmBaselineCompile.cpp
+++ b/js/src/wasm/WasmBaselineCompile.cpp
@@ -8582,16 +8582,18 @@ bool BaseCompiler::emitLoop() {
   bceSafe_ = 0;
 
   if (!deadCode_) {
     // Loop entry is a control join, so shuffle the entry parameters into the
     // well-known locations.
     topBlockResults(params);
     masm.nopAlign(CodeAlignment);
     masm.bind(&controlItem(0).label);
+    // The interrupt check barfs if there are live registers.
+    sync();
     if (!addInterruptCheck()) {
       return false;
     }
   }
 
   return true;
 }