diff --git a/scripts/update_external_patches.py b/scripts/update_external_patches.py index 1ad279ab6..3e4c1057b 100644 --- a/scripts/update_external_patches.py +++ b/scripts/update_external_patches.py @@ -55,7 +55,7 @@ def main(): name = patch.get("name") if not phab_id or not name: die(f"Patch entry missing 'id' or 'name': {patch}") - name = name.replace(" ", "_").lower() + name = name.replace(" ", "_").replace(".", "_").lower() output_file = os.path.join(OUTPUT_DIR, "firefox", f"{name}.patch") print(f"Processing Phabricator patch: {phab_id} -> {output_file}") download_phab_patch(phab_id, output_file) diff --git a/src/external-patches/firefox/ff150_1_pgo_patch_for_bug-1962418.patch b/src/external-patches/firefox/ff150_1_pgo_patch_for_bug-1962418.patch new file mode 100644 index 000000000..efe430372 --- /dev/null +++ b/src/external-patches/firefox/ff150_1_pgo_patch_for_bug-1962418.patch @@ -0,0 +1,441 @@ +diff --git a/build/pgo/index.html b/build/pgo/index.html +--- a/build/pgo/index.html ++++ b/build/pgo/index.html +@@ -3,11 +3,50 @@ + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + /* global Quitter */ + +- var list = [ ++ var defaultTimeout = 2 * 1000; ++ var extendedTimeout = 2 * 60 * 1000; ++ var superExtendedTimeout = 5 * 60 * 1000; ++ var hasExtendedCorpus = ++ new URLSearchParams(location.search).get("extendedCorpus") == "true"; ++ ++ function waitTimeout(time) { ++ return new Promise(resolve => { ++ window.setTimeout(() => { ++ resolve(); ++ }, time); ++ }); ++ } ++ ++ /** ++ * An item in the PGO training corpus ++ */ ++ class Item { ++ url; ++ timeout; ++ ++ constructor(url, timeout = defaultTimeout) { ++ this.url = url; ++ this.timeout = timeout; ++ } ++ ++ async run() { ++ var subWindow = window.open(this.url); ++ ++ // Prevent the perf-reftest-singletons from calling alert() ++ subWindow.tpRecordTime = function () {}; ++ ++ // Wait until the timeout is finished ++ await waitTimeout(this.timeout); ++ ++ subWindow.close(); ++ } ++ } ++ ++ var defaultItemUrls = [ + "blueprint/elements.html", + "blueprint/forms.html", + "blueprint/grid.html", + "blueprint/sample.html", + "js-input/3d-thingy.html", +@@ -72,42 +111,46 @@ + "talos/tests/perf-reftest-singletons/style-sharing.html", + "talos/tests/perf-reftest-singletons/svg-text-textLength-1.html", + "talos/tests/perf-reftest-singletons/svg-text-getExtentOfChar-1.html", + "talos/tests/perf-reftest-singletons/tiny-traversal-singleton.html", + "talos/tests/perf-reftest-singletons/window-named-property-get.html", +- "webkit/PerformanceTests/Speedometer/index.html", +- "http://localhost:8000/index.html?startAutomatically=true", +- "webkit/PerformanceTests/webaudio/index.html?raptor&rendering-buffer-length=30", + ]; +- var defaultInterval = 2000; +- var idx = 0; +- var w; + +- window.onload = function () { +- w = window.open("about:blank"); +- window.setTimeout(loadURL, defaultInterval); +- }; +- function loadURL() { +- var interval = defaultInterval; +- var testURL = list[idx++]; +- if (testURL.includes("webkit") || testURL.includes("localhost")) { +- interval = 120000; +- } +- w.close(); +- w = window.open(testURL); +- // Prevent the perf-reftest-singletons from calling alert() +- w.tpRecordTime = function () {}; ++ // Start with items with the default timeout ++ var items = defaultItemUrls.map(x => new Item(x)); + +- if (idx < list.length) { +- window.setTimeout(loadURL, interval); +- } else { +- window.setTimeout(Quitter.quit, interval); +- } ++ // Add items that needs longer timeouts ++ items.push( ++ new Item("webkit/PerformanceTests/Speedometer/index.html", extendedTimeout), ++ new Item( ++ "http://localhost:8000/index.html?startAutomatically=true", ++ extendedTimeout ++ ), ++ new Item( ++ "webkit/PerformanceTests/webaudio/index.html?raptor&rendering-buffer-length=30", ++ extendedTimeout ++ ) ++ ); ++ ++ // Add optional items if there is a 'pgo-extended-corpus' provided ++ if (hasExtendedCorpus) { ++ items.push( ++ new Item( ++ "http://localhost:8001/index.html?startAutomatically=true&testIterationCount=3&worstCaseCount=1", ++ superExtendedTimeout ++ ) ++ ); + } +- var i; + +- for (i = 0; i < list.length; i++) { ++ window.onload = async function () { ++ for (let item of items) { ++ await item.run(); ++ } ++ Quitter.quit(); ++ }; ++ ++ for (let item of items) { + // eslint-disable-next-line no-unsanitized/method +- document.write(list[i]); ++ document.write(item.url); + document.write("
"); + } + +diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py +--- a/build/pgo/profileserver.py ++++ b/build/pgo/profileserver.py +@@ -56,12 +56,33 @@ + test_name=name, + ) + return rc + + ++class ProfileServerCLI(CLI): ++ def __init__(self, args=sys.argv[1:]): ++ CLI.__init__(self, args=args) ++ ++ def add_options(self, parser): ++ CLI.add_options(self, parser) ++ ++ # add profileserver options ++ parser.add_option( ++ "-e", ++ "--extended-corpus", ++ dest="extended_corpus_dir", ++ help="Directory of the optional extended corpus.", ++ metavar=None, ++ default=None, ++ ) ++ ++ def extended_corpus_dir(self): ++ return self.options.extended_corpus_dir ++ ++ + if __name__ == "__main__": +- cli = CLI() ++ cli = ProfileServerCLI() + debug_args, interactive = cli.debugger_arguments() + runner_args = cli.runner_args() + + build = MozbuildObject.from_environment() + +@@ -72,29 +93,51 @@ + except BinaryNotFoundException as e: + print(f"{e}\n\n{e.help()}\n") + sys.exit(1) + binary = os.path.normpath(os.path.abspath(binary)) + ++ extended_corpus_dir = cli.extended_corpus_dir() ++ has_extended_corpus = extended_corpus_dir is not None ++ + path_mappings = { + k: os.path.join(build.topsrcdir, v) for k, v in PATH_MAPPINGS.items() + } + httpd = MozHttpd( + port=PORT, + docroot=os.path.join(build.topsrcdir, "build", "pgo"), + path_mappings=path_mappings, + ) + httpd.start(block=False) + ++ # Speedometer3 must run in its own server. The benchmark assumes that it ++ # is in a root path, and will fail if it's not. + sp3_httpd = MozHttpd( + port=8000, + docroot=os.path.join( + build.topsrcdir, "third_party", "webkit", "PerformanceTests", "Speedometer3" + ), + path_mappings=path_mappings, + ) + sp3_httpd.start(block=False) + print("started SP3 server on port 8000") ++ ++ if has_extended_corpus: ++ js3_dir = os.path.join(extended_corpus_dir, "JetStream") ++ ++ if not os.path.exists(js3_dir): ++ print(f"Error: JetStream directory does not exist at {js3_dir}") ++ sys.exit(1) ++ ++ # JetStream3 must run in its own server. The benchmark assumes that it ++ # is in a root path, and will fail if it's not. ++ js3_httpd = MozHttpd( ++ port=8001, ++ docroot=js3_dir, ++ ) ++ js3_httpd.start(block=False) ++ print("started JS3 server on port 8001") ++ + locations = ServerLocations() + locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") + + old_profraw_files = glob.glob("*.profraw") + for f in old_profraw_files: +@@ -167,10 +210,12 @@ + if logfile: + print("Firefox output (%s):" % logfile) + with open(logfile) as f: + print(f.read()) + sp3_httpd.stop() ++ if has_extended_corpus: ++ js3_httpd.stop() + httpd.stop() + get_crashreports(profilePath, name="Profile initialization") + sys.exit(ret) + + jarlog = os.getenv("JARLOG_FILE") +@@ -182,21 +227,26 @@ + + if "UPLOAD_PATH" in env: + process_args["logfile"] = os.path.join( + env["UPLOAD_PATH"], "profile-run-2.log" + ) +- cmdargs = ["http://localhost:%d/index.html" % PORT] ++ cmdargs = [ ++ "http://localhost:%d/index.html?extendedCorpus=%s" ++ % (PORT, str(has_extended_corpus).lower()) ++ ] + runner = FirefoxRunner( + profile=profile, + binary=binary, + cmdargs=cmdargs, + env=env, + process_args=process_args, + ) + runner.start(debug_args=debug_args, interactive=interactive) + ret = runner.wait() + sp3_httpd.stop() ++ if has_extended_corpus: ++ js3_httpd.stop() + httpd.stop() + if ret: + print("Firefox exited with code %d during profiling" % ret) + logfile = process_args.get("logfile") + if logfile: +diff --git a/python/mozbuild/mozbuild/build_commands.py b/python/mozbuild/mozbuild/build_commands.py +--- a/python/mozbuild/mozbuild/build_commands.py ++++ b/python/mozbuild/mozbuild/build_commands.py +@@ -10,10 +10,11 @@ + + import mozpack.path as mozpath + from mach.decorators import Command, CommandArgument + + from mozbuild.backend import backends ++from mozbuild.bootstrap import bootstrap_toolchain + from mozbuild.mozconfig import MozconfigLoader + from mozbuild.util import ( + MOZBUILD_METRICS_PATH, + ensure_l10n_central, + get_latest_file, +@@ -275,10 +276,21 @@ + raise Exception("Cannot specify targets (%s) in MOZ_PGO=1 builds" % what) + instr = command_context._spawn(BuildDriver) + orig_topobjdir = instr._topobjdir + instr._topobjdir = mozpath.join(instr._topobjdir, "instrumented") + ++ # Allow opt-in of using the pgo-extended-corpus ++ use_extended_corpus = ( ++ configure_args and "MOZ_PGO_EXTENDED_CORPUS=1" in configure_args ++ ) ++ ++ # Get the location of the pgo-extended-corpus, if we are using it ++ if use_extended_corpus: ++ pgo_extended_corpus = bootstrap_toolchain("pgo-extended-corpus") ++ if not pgo_extended_corpus: ++ raise Exception("Cannot find pgo-extended-corpus.") ++ + append_env = {"MOZ_PROFILE_GENERATE": "1"} + status = instr.build( + command_context.metrics, + what=what, + jobs=jobs, +@@ -312,10 +324,13 @@ + pgo_env["JARLOG_FILE"] = mozpath.join(orig_topobjdir, "jarlog/en-US.log") + pgo_cmd = [ + command_context.virtualenv_manager.python_path, + mozpath.join(command_context.topsrcdir, "build/pgo/profileserver.py"), + ] ++ if use_extended_corpus: ++ pgo_cmd.extend(["--extended-corpus", str(pgo_extended_corpus)]) ++ + subprocess.check_call(pgo_cmd, cwd=instr.topobjdir, env=pgo_env) + + # Set the default build to MOZ_PROFILE_USE + append_env = {"MOZ_PROFILE_USE": "1"} + +diff --git a/taskcluster/kinds/fetch/benchmarks.yml b/taskcluster/kinds/fetch/benchmarks.yml +--- a/taskcluster/kinds/fetch/benchmarks.yml ++++ b/taskcluster/kinds/fetch/benchmarks.yml +@@ -15,5 +15,22 @@ + fetch: + type: static-url + url: https://github.com/mozilla/perf-automation/releases/download/V1/web-tooling-benchmark-b2ac25c897c9.zip + sha256: 93b0b51df0cec3ca9bfa0bdf81d782306dcf18532e39b3ff3180409125daaff1 + size: 5444135 ++ ++# A collection of benchmarks for use in PGO profiling runs. Currently it is ++# just JetStream3. ++# ++# Keep this in sync with the version used in performance testing by updating: ++# 1. `testing/raptor/raptor/tests/benchmarks/jetstream3-desktop.toml` ++# 2. `testing/raptor/raptor/tests/benchmarks/jetstream3-mobile.toml` ++pgo-extended-corpus: ++ description: JetStream3 benchmark suite ++ fetch: ++ type: static-url ++ url: https://github.com/WebKit/JetStream/archive/a3f5c45465f5271bed385321a0587bd4202682d6.tar.gz ++ sha256: 0af66b94bfbc2eb67cbe6c30bbafd13d7789f8f8623d308783194934601b5fdd ++ size: 194426956 ++ artifact-name: pgo-extended-corpus.tar.zst ++ strip-components: 1 ++ add-prefix: pgo-extended-corpus/JetStream/ +diff --git a/taskcluster/kinds/generate-profile/kind.yml b/taskcluster/kinds/generate-profile/kind.yml +--- a/taskcluster/kinds/generate-profile/kind.yml ++++ b/taskcluster/kinds/generate-profile/kind.yml +@@ -3,10 +3,11 @@ + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + --- + loader: taskgraph.loader.transform:loader + + kind-dependencies: ++ - fetch + - toolchain + - instrumented-build + + transforms: + - gecko_taskgraph.transforms.build_attrs:transforms +@@ -22,10 +23,13 @@ + treeherder: + symbol: Bpgo(run) + kind: build + tier: 1 + use-python: default ++ fetches: ++ fetch: ++ - pgo-extended-corpus + + tasks: + linux64-shippable/opt: + description: "Linux64 Profile Generation" + shipping-phase: build +diff --git a/taskcluster/scripts/misc/run-profileserver-macos.sh b/taskcluster/scripts/misc/run-profileserver-macos.sh +--- a/taskcluster/scripts/misc/run-profileserver-macos.sh ++++ b/taskcluster/scripts/misc/run-profileserver-macos.sh +@@ -13,8 +13,8 @@ + export LLVM_PROFDATA=$MOZ_FETCHES_DIR/clang/bin/llvm-profdata + + set -v + + ./mach python python/mozbuild/mozbuild/action/install.py $MOZ_FETCHES_DIR/target.dmg $MOZ_FETCHES_DIR +-./mach python build/pgo/profileserver.py --binary $MOZ_FETCHES_DIR/*.app/Contents/MacOS/firefox ++./mach python build/pgo/profileserver.py --binary $MOZ_FETCHES_DIR/*.app/Contents/MacOS/firefox --extended-corpus $MOZ_FETCHES_DIR/pgo-extended-corpus/ + + tar -Jcvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log +diff --git a/taskcluster/scripts/misc/run-profileserver.sh b/taskcluster/scripts/misc/run-profileserver.sh +--- a/taskcluster/scripts/misc/run-profileserver.sh ++++ b/taskcluster/scripts/misc/run-profileserver.sh +@@ -35,8 +35,8 @@ + # Move our fetched firefox into objdir/dist so the jarlog entries will match + # the paths when the final PGO stage packages the build. + mkdir -p $PGO_RUNDIR + mkdir -p $UPLOAD_PATH + mv $MOZ_FETCHES_DIR/firefox $PGO_RUNDIR +-./mach python build/pgo/profileserver.py --binary $PGO_RUNDIR/firefox/firefox ++./mach python build/pgo/profileserver.py --binary $PGO_RUNDIR/firefox/firefox --extended-corpus $MOZ_FETCHES_DIR/pgo-extended-corpus/ + + tar -acvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log +diff --git a/testing/mozharness/scripts/android_emulator_pgo.py b/testing/mozharness/scripts/android_emulator_pgo.py +--- a/testing/mozharness/scripts/android_emulator_pgo.py ++++ b/testing/mozharness/scripts/android_emulator_pgo.py +@@ -22,10 +22,11 @@ + from mozharness.mozilla.testing.testbase import TestingMixin, testing_config_options + + PAGES = [ + "js-input/webkit/PerformanceTests/Speedometer/index.html", + "js-input/webkit/PerformanceTests/Speedometer3/index.html?startAutomatically=true", ++ # TODO: Add support for the pgo-extended-corpus to get JetStream3 running here. + "blueprint/sample.html", + "blueprint/forms.html", + "blueprint/grid.html", + "blueprint/elements.html", + "js-input/3d-thingy.html", +diff --git a/testing/raptor/raptor/tests/benchmarks/jetstream3-desktop.toml b/testing/raptor/raptor/tests/benchmarks/jetstream3-desktop.toml +--- a/testing/raptor/raptor/tests/benchmarks/jetstream3-desktop.toml ++++ b/testing/raptor/raptor/tests/benchmarks/jetstream3-desktop.toml +@@ -14,10 +14,12 @@ + test_url = "http://:/" + type = "benchmark" + unit = "score" + support_class = "jetstream3.py" + repository = "https://github.com/webkit/jetstream" ++# Keep this in sync with the version used in PGO instrumentation by updating ++# `taskcluster/kinds/fetch/benchmarks.yml`. + repository_revision = "a3f5c45465f5271bed385321a0587bd4202682d6" + test_script = "jetstream3.js" + + ["jetstream3"] + suite_name = "JetStream3.0" +diff --git a/testing/raptor/raptor/tests/benchmarks/jetstream3-mobile.toml b/testing/raptor/raptor/tests/benchmarks/jetstream3-mobile.toml +--- a/testing/raptor/raptor/tests/benchmarks/jetstream3-mobile.toml ++++ b/testing/raptor/raptor/tests/benchmarks/jetstream3-mobile.toml +@@ -19,10 +19,12 @@ + test_url = "http://:/" + type = "benchmark" + unit = "score" + support_class = "jetstream3.py" + repository = "https://github.com/webkit/jetstream" ++# Keep this in sync with the version used in PGO instrumentation by updating ++# `taskcluster/kinds/fetch/benchmarks.yml`. + repository_revision = "a3f5c45465f5271bed385321a0587bd4202682d6" + test_script = "jetstream3.js" + + ["jetstream3"] + suite_name = "JetStream3.0" + diff --git a/src/external-patches/firefox/ff150_2_pgo_patch_for_bug-2011620.patch b/src/external-patches/firefox/ff150_2_pgo_patch_for_bug-2011620.patch new file mode 100644 index 000000000..da9579a02 --- /dev/null +++ b/src/external-patches/firefox/ff150_2_pgo_patch_for_bug-2011620.patch @@ -0,0 +1,409 @@ +diff --git a/build/pgo/index.html b/build/pgo/index.html +--- a/build/pgo/index.html ++++ b/build/pgo/index.html +@@ -10,10 +10,11 @@ + "blueprint/forms.html", + "blueprint/grid.html", + "blueprint/sample.html", + "js-input/3d-thingy.html", + "js-input/crypto-otp.html", ++ "js-input/normalizer_bench.html", + "js-input/sunspider/3d-cube.html", + "js-input/sunspider/3d-morph.html", + "js-input/sunspider/3d-raytrace.html", + "js-input/sunspider/access-binary-trees.html", + "js-input/sunspider/access-fannkuch.html", +diff --git a/build/pgo/js-input/normalizer_bench.html b/build/pgo/js-input/normalizer_bench.html +new file mode 100644 +--- /dev/null ++++ b/build/pgo/js-input/normalizer_bench.html +@@ -0,0 +1,358 @@ ++ ++ ++ ++ ++Normalizer bench ++ ++

Normalizer Bench

++
++
S
++
Short: NFD fits in 32 UTF-16 code units. French and German are adjusted to take a substring that contains a non-ASCII character. (Long input contains the same information in each language instead of having a fixed UTF-16 length.)
++
L
++
Latin1.
++
U
++
Forced UTF-16 form for Latin1 languages. (One non-Latin1 character added to the string.)
++
W
++
Forced write: In the UTF-16 case, a singleton is prepended to force the normalizer to start writing from the start. In the Latin1 case, a character with a compatibility decomposition is prepended, since there are no singletons in Latin1. This means the effect is seen only in the K forms.
++
C
++
Forced copy: In the UTF-16 case, a singleton is appended to force the normalizer to make a copy even when normalizing from NFC to a C form or from NFD to a D form. In the Latin1 case, a character with a compatibility decomposition is appended, since there are no singletons in Latin1. This means the effect is seen only in the K form corresponding to the input C or D form.
++
++ ++

Bench not started.

++ ++ ++ ++ ++
InputNFCNFKCNFDNFKD
Bench not run.
++ ++ ++ +diff --git a/testing/mozharness/scripts/android_emulator_pgo.py b/testing/mozharness/scripts/android_emulator_pgo.py +--- a/testing/mozharness/scripts/android_emulator_pgo.py ++++ b/testing/mozharness/scripts/android_emulator_pgo.py +@@ -28,10 +28,11 @@ + "blueprint/forms.html", + "blueprint/grid.html", + "blueprint/elements.html", + "js-input/3d-thingy.html", + "js-input/crypto-otp.html", ++ "js-input/normalizer_bench.html", + "js-input/sunspider/3d-cube.html", + "js-input/sunspider/3d-morph.html", + "js-input/sunspider/3d-raytrace.html", + "js-input/sunspider/access-binary-trees.html", + "js-input/sunspider/access-fannkuch.html", +diff --git a/toolkit/content/license.html b/toolkit/content/license.html +--- a/toolkit/content/license.html ++++ b/toolkit/content/license.html +@@ -5786,10 +5786,11 @@ +
  • third_party/rust/yoke-derive
  • +
  • third_party/rust/zerofrom
  • +
  • third_party/rust/zerofrom-derive
  • +
  • third_party/rust/zerovec
  • +
  • third_party/rust/zerovec-derive
  • ++
  • build/pgo/js-input/normalizer_bench.html
  • + + + +
    +             UNICODE LICENSE V3
    +
    diff --git a/src/external-patches/firefox/ff150_3_pgo_patch_for_bug-2014422.patch b/src/external-patches/firefox/ff150_3_pgo_patch_for_bug-2014422.patch
    new file mode 100644
    index 000000000..99add604c
    --- /dev/null
    +++ b/src/external-patches/firefox/ff150_3_pgo_patch_for_bug-2014422.patch
    @@ -0,0 +1,868 @@
    +diff --git a/build/pgo/index.html b/build/pgo/index.html
    +--- a/build/pgo/index.html
    ++++ b/build/pgo/index.html
    +@@ -49,10 +49,11 @@
    +     "blueprint/forms.html",
    +     "blueprint/grid.html",
    +     "blueprint/sample.html",
    +     "js-input/3d-thingy.html",
    +     "js-input/crypto-otp.html",
    ++    "js-input/collator_bench.html",
    +     "js-input/normalizer_bench.html",
    +     "js-input/sunspider/3d-cube.html",
    +     "js-input/sunspider/3d-morph.html",
    +     "js-input/sunspider/3d-raytrace.html",
    +     "js-input/sunspider/access-binary-trees.html",
    +diff --git a/build/pgo/js-input/collator_bench.html b/build/pgo/js-input/collator_bench.html
    +new file mode 100644
    +--- /dev/null
    ++++ b/build/pgo/js-input/collator_bench.html
    +@@ -0,0 +1,817 @@
    ++
    ++
    ++
    ++
    ++Collator bench
    ++
    ++

    Collator Bench

    ++ ++

    Bench not started.

    ++ ++ ++ ++ ++
    WorkloadTime
    Bench not run.
    ++ ++ ++ ++ +diff --git a/testing/mozharness/scripts/android_emulator_pgo.py b/testing/mozharness/scripts/android_emulator_pgo.py +--- a/testing/mozharness/scripts/android_emulator_pgo.py ++++ b/testing/mozharness/scripts/android_emulator_pgo.py +@@ -29,10 +29,11 @@ + "blueprint/forms.html", + "blueprint/grid.html", + "blueprint/elements.html", + "js-input/3d-thingy.html", + "js-input/crypto-otp.html", ++ "js-input/collator_bench.html", + "js-input/normalizer_bench.html", + "js-input/sunspider/3d-cube.html", + "js-input/sunspider/3d-morph.html", + "js-input/sunspider/3d-raytrace.html", + "js-input/sunspider/access-binary-trees.html", +diff --git a/toolkit/content/license.html b/toolkit/content/license.html +--- a/toolkit/content/license.html ++++ b/toolkit/content/license.html +@@ -5788,10 +5788,11 @@ +
  • third_party/rust/zerofrom
  • +
  • third_party/rust/zerofrom-derive
  • +
  • third_party/rust/zerovec
  • +
  • third_party/rust/zerovec-derive
  • +
  • build/pgo/js-input/normalizer_bench.html
  • ++
  • build/pgo/js-input/collator_bench.html
  • + + + +
    +             UNICODE LICENSE V3
    +
    diff --git a/src/external-patches/manifest.json b/src/external-patches/manifest.json
    index 91c2934ab..ff81da911 100644
    --- a/src/external-patches/manifest.json
    +++ b/src/external-patches/manifest.json
    @@ -40,5 +40,20 @@
         "type": "phabricator",
         "id": "D291714",
         "name": "gh-12979 Clip dirty_rect to device_size"
    +  },
    +  {
    +    "type": "phabricator",
    +    "id": "D256645",
    +    "name": "FF150 1 PGO patch for bug-1962418"
    +  },
    +  {
    +    "type": "phabricator",
    +    "id": "D279829",
    +    "name": "FF150 2 PGO patch for bug-2011620"
    +  },
    +  {
    +    "type": "phabricator",
    +    "id": "D281762",
    +    "name": "FF150 3 PGO patch for bug-2014422"
       }
     ]
    diff --git a/src/zen/common/sys/ZenActorsManager.sys.mjs b/src/zen/common/sys/ZenActorsManager.sys.mjs
    index 6595d55ee..3f1404557 100644
    --- a/src/zen/common/sys/ZenActorsManager.sys.mjs
    +++ b/src/zen/common/sys/ZenActorsManager.sys.mjs
    @@ -54,7 +54,7 @@ let JSWINDOWACTORS = {
           },
         },
         allFrames: true,
    -    matches: ["*://*/*"],
    +    remoteTypes: ["web", "file"],
         enablePreference: "zen.glance.enabled",
       },
     };