Bug 1032257 - Clear isParallelEntryScript when removing from table. (r=terrence)
authorShu-yu Guo <shu@rfrn.org>
Mon, 30 Jun 2014 14:01:25 -0700
changeset 191591 c9834e89efe8de04eff18e2b4fe8f7c3f5776a26
parent 191590 4e63a5bebd3f51634f0034b58628ec8cd8638c05
child 191592 9b64b4c850155d78caa246d94559410583941eb3
push id27055
push usercbook@mozilla.com
push dateTue, 01 Jul 2014 12:01:46 +0000
treeherdermozilla-central@4a9353b5762d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersterrence
bugs1032257
milestone33.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 1032257 - Clear isParallelEntryScript when removing from table. (r=terrence)
js/src/jit/Ion.cpp
js/src/jit/IonCode.h
--- a/js/src/jit/Ion.cpp
+++ b/js/src/jit/Ion.cpp
@@ -628,16 +628,17 @@ JitCompartment::mark(JSTracer *trc, JSCo
             //
             // Subtlety: We depend on the tracing of the parallel IonScript's
             // callTargetEntries to propagate the parallel age to the entire
             // call graph.
             if (script->parallelIonScript()->shouldPreserveParallelCode(IonScript::IncreaseAge)) {
                 MarkScript(trc, const_cast<PreBarrieredScript *>(&e.front()), "par-script");
                 MOZ_ASSERT(script == e.front());
             } else {
+                script->parallelIonScript()->clearIsParallelEntryScript();
                 e.removeFront();
             }
         }
     }
 }
 
 void
 JitCompartment::sweep(FreeOp *fop, JSCompartment *compartment)
--- a/js/src/jit/IonCode.h
+++ b/js/src/jit/IonCode.h
@@ -452,16 +452,19 @@ struct IonScript
         hasUncompiledCallTarget_ = false;
     }
     bool hasUncompiledCallTarget() const {
         return hasUncompiledCallTarget_;
     }
     void setIsParallelEntryScript() {
         isParallelEntryScript_ = true;
     }
+    void clearIsParallelEntryScript() {
+        isParallelEntryScript_ = false;
+    }
     bool isParallelEntryScript() const {
         return isParallelEntryScript_;
     }
     void setHasSPSInstrumentation() {
         hasSPSInstrumentation_ = true;
     }
     void clearHasSPSInstrumentation() {
         hasSPSInstrumentation_ = false;