Bug 1353358 - Support JSOP_OPTIMIZE_SPREADCALL in Ion r=jandem
authorTed Campbell <tcampbell@mozilla.com>
Wed, 19 Apr 2017 14:48:04 -0400
changeset 402421 077dfe0825246cd4c7df1b8436882610d8d03b1a
parent 402420 fd25c2c275fceb51347b7a108c6ce17214dbf70c
child 402422 a4212d9e1d0b74470916c4f751050ac80ba89497
push id7391
push usermtabara@mozilla.com
push dateMon, 12 Jun 2017 13:08:53 +0000
treeherdermozilla-beta@2191d7f87e2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem
bugs1353358
milestone55.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 1353358 - Support JSOP_OPTIMIZE_SPREADCALL in Ion r=jandem MozReview-Commit-ID: H3iyhI0Ca2u
js/src/jit/IonBuilder.cpp
js/src/jit/IonControlFlow.cpp
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -2317,16 +2317,26 @@ IonBuilder::inspectOpcode(JSOp op)
 #endif
         return Ok();
       }
 
       case JSOP_IS_CONSTRUCTING:
         pushConstant(MagicValue(JS_IS_CONSTRUCTING));
         return Ok();
 
+      case JSOP_OPTIMIZE_SPREADCALL:
+      {
+        // Assuming optimization isn't available doesn't affect correctness.
+        // TODO: Investigate dynamic checks.
+        MDefinition* arr = current->peek(-1);
+        arr->setImplicitlyUsedUnchecked();
+        pushConstant(BooleanValue(false));
+        return Ok();
+      }
+
       default:
         break;
     }
 
     // Track a simpler message, since the actionable abort message is a
     // static string, and the internal opcode name isn't an actionable
     // thing anyways.
     trackActionableAbort("Unsupported bytecode");
--- a/js/src/jit/IonControlFlow.cpp
+++ b/js/src/jit/IonControlFlow.cpp
@@ -331,17 +331,16 @@ ControlFlowGenerator::snoopControlFlow(J
         return processAndOr(op);
 
       case JSOP_LABEL:
         return processLabel();
 
       case JSOP_TRY:
         return processTry();
 
-      case JSOP_OPTIMIZE_SPREADCALL:
       case JSOP_THROWMSG:
         // Not implemented yet.
         return ControlStatus::Abort;
 
       default:
         break;
     }
     return ControlStatus::None;