Backout abc018892155 (Bug 1189112) for suspected crashes.
authorTerrence Cole <terrence@mozilla.com>
Wed, 05 Aug 2015 17:08:33 -0700
changeset 288129 502847c641287296b103cde5af7361e0770caf20
parent 288128 2f2b78e9f9ef741a07a619cbe91e24143a46c63e
child 288130 e601c8a36227b6260880801573e5ece67d41f263
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)
bugs1189112
milestone42.0a1
backs outabc018892155463bfee51a1cc3d72454904a0bf0
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
Backout abc018892155 (Bug 1189112) for suspected crashes.
js/src/gc/RootMarking.cpp
js/src/jsscript.h
js/src/vm/Runtime.h
--- a/js/src/gc/RootMarking.cpp
+++ b/js/src/gc/RootMarking.cpp
@@ -315,18 +315,21 @@ js::gc::GCRuntime::markRuntime(JSTracer*
         for (RootRange r = rootsHash.all(); !r.empty(); r.popFront()) {
             const RootEntry& entry = r.front();
             TraceRoot(trc, entry.key(), entry.value());
         }
 
         MarkPersistentRootedChains(trc);
     }
 
-    if (rt->scriptAndCountsVector)
-        rt->scriptAndCountsVector->trace(trc);
+    if (rt->scriptAndCountsVector) {
+        ScriptAndCountsVector& vec = *rt->scriptAndCountsVector;
+        for (size_t i = 0; i < vec.length(); i++)
+            TraceRoot(trc, &vec[i].script, "scriptAndCountsVector");
+    }
 
     if (!rt->isBeingDestroyed() && !rt->isHeapMinorCollecting()) {
         gcstats::AutoPhase ap(stats, gcstats::PHASE_MARK_RUNTIME_DATA);
 
         if (traceOrMark == TraceRuntime || rt->atomsCompartment()->zone()->isCollecting()) {
             MarkPermanentAtoms(trc);
             MarkAtoms(trc);
             MarkWellKnownSymbols(trc);
--- a/js/src/jsscript.h
+++ b/js/src/jsscript.h
@@ -2360,20 +2360,16 @@ struct ScriptAndCounts
 
     PCCounts& getPCCounts(jsbytecode* pc) const {
         return scriptCounts.pcCountsVector[script->pcToOffset(pc)];
     }
 
     jit::IonScriptCounts* getIonCounts() const {
         return scriptCounts.ionCounts;
     }
-
-    void trace(JSTracer* trc) {
-        TraceRoot(trc, &script, "ScriptAndCounts::script");
-    }
 };
 
 struct GSNCache;
 
 jssrcnote*
 GetSrcNote(GSNCache& cache, JSScript* script, jsbytecode* pc);
 
 extern jssrcnote*
--- a/js/src/vm/Runtime.h
+++ b/js/src/vm/Runtime.h
@@ -31,17 +31,16 @@
 #include "gc/GCRuntime.h"
 #include "gc/Tracer.h"
 #include "irregexp/RegExpStack.h"
 #include "js/Debug.h"
 #include "js/HashTable.h"
 #ifdef DEBUG
 # include "js/Proxy.h" // For AutoEnterPolicy
 #endif
-#include "js/TraceableVector.h"
 #include "js/Vector.h"
 #include "vm/CommonPropertyNames.h"
 #include "vm/DateTime.h"
 #include "vm/MallocProvider.h"
 #include "vm/SPSProfiler.h"
 #include "vm/Stack.h"
 #include "vm/Symbol.h"
 
@@ -135,17 +134,17 @@ struct ScopeCoordinateNameCache {
 
     Shape* shape;
     Map map;
 
     ScopeCoordinateNameCache() : shape(nullptr) {}
     void purge();
 };
 
-using ScriptAndCountsVector = TraceableVector<ScriptAndCounts, 0, SystemAllocPolicy>;
+typedef Vector<ScriptAndCounts, 0, SystemAllocPolicy> ScriptAndCountsVector;
 
 struct EvalCacheEntry
 {
     JSLinearString* str;
     JSScript* script;
     JSScript* callerScript;
     jsbytecode* pc;
 };