--- a/js/src/jit/CompileWrappers.cpp+++ b/js/src/jit/CompileWrappers.cpp@@ -270,16 +270,22 @@ const GlobalObject* CompileCompartment::maybeGlobal() { // This uses unsafeUnbarrieredMaybeGlobal() so as not to trigger the read // barrier on the global from off thread. This is safe because we // abort Ion compilation when we GC. return JS::GetRealmForCompartment(compartment())->unsafeUnbarrieredMaybeGlobal(); }+const uint32_t*+CompileCompartment::addressOfGlobalWriteBarriered()+{+ return &JS::GetRealmForCompartment(compartment())->globalWriteBarriered;+}+ bool CompileCompartment::hasAllocationMetadataBuilder() { return JS::GetRealmForCompartment(compartment())->hasAllocationMetadataBuilder(); } // Note: This function is thread-safe because setSingletonAsValue sets a boolean // variable to false, and this boolean variable has no way to be resetted to

--- a/js/src/vm/JSScript.cpp+++ b/js/src/vm/JSScript.cpp@@ -3103,20 +3103,20 @@ void JSScript::finalize(FreeOp* fop) { // NOTE: this JSScript may be partially initialized at this point. E.g. we // may have created it and partially initialized it with // JSScript::Create(), but not yet finished initializing it with // fullyInitFromEmitter() or fullyInitTrivial(). // Collect code coverage information for this script and all its inner- // scripts, and store the aggregated information on the compartment.+ // scripts, and store the aggregated information on the realm. MOZ_ASSERT_IF(hasScriptName(), fop->runtime()->lcovOutput().isEnabled()); if (fop->runtime()->lcovOutput().isEnabled() && hasScriptName()) {- compartment()->lcovOutput.collectCodeCoverageInfo(compartment(), this, getScriptName());+ realm()->lcovOutput.collectCodeCoverageInfo(realm(), this, getScriptName()); destroyScriptName(); } fop->runtime()->geckoProfiler().onScriptFinalized(this); if (types_) types_->destroy();

--- a/modules/libpref/init/all.js+++ b/modules/libpref/init/all.js@@ -57,18 +57,18 @@ pref("browser.cache.memory.max_entry_siz // Memory limit (in kB) for new cache data not yet written to disk. Writes to // the cache are buffered and written to disk on background with low priority. // With a slow persistent storage these buffers may grow when data is coming // fast from the network. When the amount of unwritten data is exceeded, new // writes will simply fail. We have two buckets, one for important data // (priority) like html, css, fonts and js, and one for other data like images, // video, etc. // Note: 0 means no limit.-pref("browser.cache.disk.max_chunks_memory_usage", 10240);-pref("browser.cache.disk.max_priority_chunks_memory_usage", 10240);+pref("browser.cache.disk.max_chunks_memory_usage", 40960);+pref("browser.cache.disk.max_priority_chunks_memory_usage", 40960); pref("browser.cache.disk_cache_ssl", true); // 0 = once-per-session, 1 = each-time, 2 = never, 3 = when-appropriate/automatically pref("browser.cache.check_doc_frequency", 3); // Limit of recent metadata we keep in memory for faster access, in Kb pref("browser.cache.disk.metadata_memory_limit", 250); // 0.25 MB // The number of chunks we preload ahead of read. One chunk has currently 256kB. pref("browser.cache.disk.preload_chunk_count", 4); // 1 MB of read ahead