Difference between revisions of "PGO Related Bugs/Patches"
(→468285) |
|||
Line 31: | Line 31: | ||
== 468285 == | == 468285 == | ||
=== Patch 1 === | === Patch 1 === | ||
+ | This patch will stop the deletion of the profiled data. | ||
+ | <pre> | ||
+ | diff --git a/Makefile.in b/Makefile.in | ||
+ | --- a/Makefile.in | ||
+ | +++ b/Makefile.in | ||
+ | @@ -44,17 +44,21 @@ include $(DEPTH)/config/autoconf.mk | ||
+ | |||
+ | include $(topsrcdir)/config/config.mk | ||
+ | |||
+ | default alldep all:: | ||
+ | $(RM) -rf $(DIST)/sdk | ||
+ | $(RM) -rf $(DIST)/include | ||
+ | $(RM) -rf $(DIST)/private | ||
+ | $(RM) -rf $(DIST)/public | ||
+ | +# Do not clear this directory if second pass on profiledbuild | ||
+ | +ifndef MOZ_PROFILE_USE | ||
+ | $(RM) -rf $(DIST)/bin/components | ||
+ | +endif | ||
+ | + | ||
+ | $(RM) -rf _tests | ||
+ | |||
+ | TIERS += base | ||
+ | |||
+ | # | ||
+ | # tier "base" - basic setup | ||
+ | # | ||
+ | tier_base_dirs = \ | ||
+ | |||
+ | </pre> | ||
=== Patch 2 === | === Patch 2 === | ||
+ | This patch will merge any profile data into its corresponding program database. | ||
+ | <pre> | ||
+ | diff --git a/build/win32/pgomerge.py b/build/win32/pgomerge.py | ||
+ | --- a/build/win32/pgomerge.py | ||
+ | +++ b/build/win32/pgomerge.py | ||
+ | @@ -17,24 +17,26 @@ def MergePGOFiles(basename, pgddir, pgcd | ||
+ | containing basename!N.pgc files, which is probably dist/bin. | ||
+ | Calls pgomgr to merge each pgc file into the pgd, then deletes | ||
+ | the pgc files.""" | ||
+ | if not os.path.isdir(pgddir) or not os.path.isdir(pgcdir): | ||
+ | return | ||
+ | pgdfile = os.path.abspath(os.path.join(pgddir, basename + ".pgd")) | ||
+ | if not os.path.isfile(pgdfile): | ||
+ | return | ||
+ | - for file in os.listdir(pgcdir): | ||
+ | - if file.startswith(basename) and file.endswith(".pgc"): | ||
+ | - try: | ||
+ | - pgcfile = os.path.normpath(os.path.join(pgcdir, file)) | ||
+ | - subprocess.call(['pgomgr', '-merge', | ||
+ | - pgcfile, | ||
+ | - pgdfile]) | ||
+ | - os.remove(pgcfile) | ||
+ | - except OSError: | ||
+ | - pass | ||
+ | + for root, dirs, files in os.walk(pgcdir): | ||
+ | + for dir in dirs: | ||
+ | + for file in os.listdir(dir): | ||
+ | + if file.startswith(basename) and file.endswith(".pgc"): | ||
+ | + try: | ||
+ | + pgcfile = os.path.normpath(os.path.join(pgcdir, file)) | ||
+ | + subprocess.call(['pgomgr', '-merge', | ||
+ | + pgcfile, | ||
+ | + pgdfile]) | ||
+ | + os.remove(pgcfile) | ||
+ | + except OSError: | ||
+ | + pass | ||
+ | |||
+ | if __name__ == '__main__': | ||
+ | if len(sys.argv) != 3: | ||
+ | print >>sys.stderr, "Usage: pgomerge.py <binary basename> <dist/bin>" | ||
+ | sys.exit(1) | ||
+ | MergePGOFiles(sys.argv[1], os.getcwd(), sys.argv[2]) | ||
+ | |||
+ | </pre> |
Latest revision as of 14:00, 9 December 2008
Contents
465592
This patch disables the lcms (local color management system) from being optimized if it is not linked into the xul libraray.
diff --git a/modules/lcms/src/Makefile.in b/modules/lcms/src/Makefile.in --- a/modules/lcms/src/Makefile.in +++ b/modules/lcms/src/Makefile.in @@ -57,16 +57,21 @@ endif ifeq (,$(filter-out WINNT WINCE OS2,$(OS_ARCH))) DEFINES += -DLCMS_DLL=1 -DLCMS_DLL_BUILD=1 else VISIBILITY_FLAGS = endif endif +#Disable PGO for this module in non-libxul builds, where it breaks. +ifndef MOZ_ENABLE_LIBXUL +NO_PROFILE_GUIDED_OPTIMIZE = 1 +endif + # LCMS is on the critical path, so force it O2 on all platforms MODULE_OPTIMIZE_FLAGS=-O2 REQUIRES = $(LCMS_REQUIRES) \ $(NULL) CSRCS = cmscnvrt.c cmserr.c cmsgamma.c cmsgmt.c cmsintrp.c cmsio1.c \ cmslut.c cmsmatsh.c cmsmtrx.c cmspack.c cmspcs.c cmswtpnt.c \
468285
Patch 1
This patch will stop the deletion of the profiled data.
diff --git a/Makefile.in b/Makefile.in --- a/Makefile.in +++ b/Makefile.in @@ -44,17 +44,21 @@ include $(DEPTH)/config/autoconf.mk include $(topsrcdir)/config/config.mk default alldep all:: $(RM) -rf $(DIST)/sdk $(RM) -rf $(DIST)/include $(RM) -rf $(DIST)/private $(RM) -rf $(DIST)/public +# Do not clear this directory if second pass on profiledbuild +ifndef MOZ_PROFILE_USE $(RM) -rf $(DIST)/bin/components +endif + $(RM) -rf _tests TIERS += base # # tier "base" - basic setup # tier_base_dirs = \
Patch 2
This patch will merge any profile data into its corresponding program database.
diff --git a/build/win32/pgomerge.py b/build/win32/pgomerge.py --- a/build/win32/pgomerge.py +++ b/build/win32/pgomerge.py @@ -17,24 +17,26 @@ def MergePGOFiles(basename, pgddir, pgcd containing basename!N.pgc files, which is probably dist/bin. Calls pgomgr to merge each pgc file into the pgd, then deletes the pgc files.""" if not os.path.isdir(pgddir) or not os.path.isdir(pgcdir): return pgdfile = os.path.abspath(os.path.join(pgddir, basename + ".pgd")) if not os.path.isfile(pgdfile): return - for file in os.listdir(pgcdir): - if file.startswith(basename) and file.endswith(".pgc"): - try: - pgcfile = os.path.normpath(os.path.join(pgcdir, file)) - subprocess.call(['pgomgr', '-merge', - pgcfile, - pgdfile]) - os.remove(pgcfile) - except OSError: - pass + for root, dirs, files in os.walk(pgcdir): + for dir in dirs: + for file in os.listdir(dir): + if file.startswith(basename) and file.endswith(".pgc"): + try: + pgcfile = os.path.normpath(os.path.join(pgcdir, file)) + subprocess.call(['pgomgr', '-merge', + pgcfile, + pgdfile]) + os.remove(pgcfile) + except OSError: + pass if __name__ == '__main__': if len(sys.argv) != 3: print >>sys.stderr, "Usage: pgomerge.py <binary basename> <dist/bin>" sys.exit(1) MergePGOFiles(sys.argv[1], os.getcwd(), sys.argv[2])