Bug 928562 - Eagerly baseline compile inlined scripts during definite properties analysis, r=jandem.
authorBrian Hackett <bhackett1024@gmail.com>
Wed, 23 Oct 2013 07:45:41 -0600
changeset 165673 89b5b123e01a086175d953ac072c308ccffc2e3c
parent 165672 ffd9c7bbd2fedf850c94d1eecdeb9e75d4bba553
child 165674 64a19bc0e198e94705f109b232a65895b3c46488
push id3066
push userakeybl@mozilla.com
push dateMon, 09 Dec 2013 19:58:46 +0000
treeherdermozilla-beta@a31a0dce83aa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjandem
bugs928562
milestone27.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 928562 - Eagerly baseline compile inlined scripts during definite properties analysis, r=jandem.
js/src/jit/IonBuilder.cpp
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -278,16 +278,23 @@ IonBuilder::canInlineTarget(JSFunction *
         return false;
     }
 
     // Allow constructing lazy scripts when performing the definite properties
     // analysis, as baseline has not been used to warm the caller up yet.
     if (target->isInterpretedLazy() && info().executionMode() == DefinitePropertiesAnalysis) {
         if (!target->getOrCreateScript(context()))
             return false;
+
+        RootedScript script(context(), target->nonLazyScript());
+        if (!script->hasBaselineScript()) {
+            MethodStatus status = BaselineCompile(context(), script);
+            if (status != Method_Compiled)
+                return false;
+        }
     }
 
     if (!target->hasScript()) {
         IonSpew(IonSpew_Inlining, "Cannot inline due to lack of Non-Lazy script");
         return false;
     }
 
     if (constructing && !target->isInterpretedConstructor()) {