Bug 1189117 - IonMonkey: treat ObjectState instructions as effect free for the purposes of AliasAnalysis. r=nbp
authorSpenser Andrew Bauman <sabauma@gmail.com>
Thu, 30 Jul 2015 10:05:00 +0200
changeset 287527 c933c71431c46c0ad3fd62c131a48f2e18707837
parent 287526 bea2f46be0f19808c0a232a77f66f0f835e76541
child 287528 c742ac2240c547f045b0da2eda17ec73d811c912
push id5067
push userraliiev@mozilla.com
push dateMon, 21 Sep 2015 14:04:52 +0000
treeherdermozilla-beta@14221ffe5b2f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnbp
bugs1189117
milestone42.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 1189117 - IonMonkey: treat ObjectState instructions as effect free for the purposes of AliasAnalysis. r=nbp
js/src/jit/AliasAnalysis.cpp
--- a/js/src/jit/AliasAnalysis.cpp
+++ b/js/src/jit/AliasAnalysis.cpp
@@ -200,16 +200,22 @@ AliasAnalysis::analyze()
              ++def)
         {
             def->setId(newId++);
 
             AliasSet set = def->getAliasSet();
             if (set.isNone())
                 continue;
 
+            // For the purposes of alias analysis, all recoverable operations
+            // are treated as effect free as the memory represented by these
+            // operations cannot be aliased by others.
+            if (def->canRecoverOnBailout())
+                continue;
+
             if (set.isStore()) {
                 for (AliasSetIterator iter(set); iter; iter++) {
                     if (!stores[*iter].append(*def))
                         return false;
                 }
 
                 if (JitSpewEnabled(JitSpew_Alias)) {
                     Fprinter& out = JitSpewPrinter();