mozilla-pgo.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sun, 21 Apr 2024 06:46:25 +0200
branchfirefox124
changeset 1202 28ebbea625bd
parent 1190 2a24a948b5cf
permissions -rw-r--r--
124.0.2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# User Wolfgang Rosenauer <wr@rosenauer.org>
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
     3
# Parent  9959fe2a13a39cbeb98ca1bef2e21caba16717bd
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
     5
Index: firefox-115.0/build/moz.configure/lto-pgo.configure
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
     6
===================================================================
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
     7
--- firefox-115.0.orig/build/moz.configure/lto-pgo.configure
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
     8
+++ firefox-115.0/build/moz.configure/lto-pgo.configure
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
     9
@@ -251,8 +251,8 @@ def lto(
1169
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    10
             cflags.append("-flto")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    11
             ldflags.append("-flto")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    12
         else:
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    13
-            cflags.append("-flto=thin")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    14
-            ldflags.append("-flto=thin")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    15
+            cflags.append("-flto")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    16
+            ldflags.append("-flto")
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    18
         if target.os == "Android" and "cross" in values:
1169
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    19
             # Work around https://github.com/rust-lang/rust/issues/90088
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    20
@@ -268,7 +268,7 @@ def lto(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    21
         if "full" in values:
1169
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    22
             cflags.append("-flto")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    23
         else:
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    24
-            cflags.append("-flto=thin")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    25
+            cflags.append("-flto")
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    26
         # With clang-cl, -flto can only be used with -c or -fuse-ld=lld.
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    27
         # AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld.
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
    28
         cflags.append("-fuse-ld=lld")
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    29
Index: firefox-115.0/build/pgo/profileserver.py
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    30
===================================================================
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    31
--- firefox-115.0.orig/build/pgo/profileserver.py
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    32
+++ firefox-115.0/build/pgo/profileserver.py
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    33
@@ -11,7 +11,7 @@ import subprocess
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
 import sys
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
 
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
 import mozcrash
1183
e69790650e3c Firefox 109.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1173
diff changeset
    37
-from mozbuild.base import BinaryNotFoundException, MozbuildObject
e69790650e3c Firefox 109.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1173
diff changeset
    38
+from mozbuild.base import BinaryNotFoundException, MozbuildObject, BuildEnvironmentNotFoundException
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
 from mozfile import TemporaryDirectory
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
 from mozhttpd import MozHttpd
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
 from mozprofile import FirefoxProfile, Preferences
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    42
@@ -87,9 +87,22 @@ if __name__ == "__main__":
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
     locations = ServerLocations()
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
     locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
 
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
-    old_profraw_files = glob.glob("*.profraw")
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
-    for f in old_profraw_files:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
-        os.remove(f)
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
+    using_gcc = False
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
+    try:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    51
+        if build.config_environment.substs.get('CC_TYPE') == 'gcc':
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
+            using_gcc = True
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
+    except BuildEnvironmentNotFoundException:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
+        pass
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
+
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
+    if using_gcc:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
+        for dirpath, _, filenames in os.walk('.'):
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
+            for f in filenames:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    59
+                if f.endswith('.gcda'):
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
+                    os.remove(os.path.join(dirpath, f))
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    61
+    else:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    62
+        old_profraw_files = glob.glob('*.profraw')
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    63
+        for f in old_profraw_files:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    64
+            os.remove(f)
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    65
 
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    66
     with TemporaryDirectory() as profilePath:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    67
         # TODO: refactor this into mozprofile
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    68
@@ -213,6 +226,10 @@ if __name__ == "__main__":
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    69
             print("Firefox exited successfully, but produced a crashreport")
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
             sys.exit(1)
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    71
 
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    72
+        print('Copying profile data....')
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    73
+        os.system('pwd');
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    74
+        os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;');
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    75
+
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    76
         llvm_profdata = env.get("LLVM_PROFDATA")
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    77
         if llvm_profdata:
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    78
             profraw_files = glob.glob("*.profraw")
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    79
Index: firefox-115.0/build/unix/mozconfig.unix
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    80
===================================================================
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    81
--- firefox-115.0.orig/build/unix/mozconfig.unix
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    82
+++ firefox-115.0/build/unix/mozconfig.unix
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    83
@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    84
     CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    85
     CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    86
 
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    87
+    if [ -n "$MOZ_PGO" ]; then
1184
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    88
+       if [ -z "$USE_ARTIFACT" ]; then
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    89
+           ac_add_options --enable-lto
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    90
+       fi
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    91
+       export AR="$topsrcdir/gcc/bin/gcc-ar"
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    92
+       export NM="$topsrcdir/gcc/bin/gcc-nm"
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    93
+       export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    94
+    fi
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    95
+
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    96
     # We want to make sure we use binutils and other binaries in the tooltool
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    97
     # package.
1184
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
    98
     mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$MOZ_FETCHES_DIR/binutils/bin:$PATH"
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
    99
Index: firefox-115.0/extensions/spellcheck/src/moz.build
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   100
===================================================================
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   101
--- firefox-115.0.orig/extensions/spellcheck/src/moz.build
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   102
+++ firefox-115.0/extensions/spellcheck/src/moz.build
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   103
@@ -28,3 +28,5 @@ EXPORTS.mozilla += [
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   104
     "mozInlineSpellChecker.h",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   105
     "mozSpellChecker.h",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   106
 ]
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   107
+
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   108
+CXXFLAGS += ['-fno-devirtualize']
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   109
Index: firefox-115.0/toolkit/components/terminator/nsTerminator.cpp
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   110
===================================================================
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   111
--- firefox-115.0.orig/toolkit/components/terminator/nsTerminator.cpp
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   112
+++ firefox-115.0/toolkit/components/terminator/nsTerminator.cpp
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
   113
@@ -460,6 +460,11 @@ void nsTerminator::StartWatchdog() {
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   114
   }
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   115
 #endif
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   116
 
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   117
+  // Disable watchdog for PGO train builds - writting profile information at
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   118
+  // exit may take time and it is better to make build hang rather than
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   119
+  // silently produce poorly performing binary.
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   120
+  crashAfterMS = INT32_MAX;
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   121
+
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   122
   UniquePtr<Options> options(new Options());
1173
56ecd2ae6e61 Firefox 99(.0.1)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1170
diff changeset
   123
   // crashAfterTicks is guaranteed to be > 0 as
56ecd2ae6e61 Firefox 99(.0.1)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1170
diff changeset
   124
   // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS