102872860c7ab710800251aac7814bb5bb1168f9: Bug 1438688, part 6 - Compile XPT information to C++ at build time. r=glandium,njn
Andrew McCreight <continuation@gmail.com> - Mon, 12 Mar 2018 10:30:35 -0700 - rev 456383
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 6 - Compile XPT information to C++ at build time. r=glandium,njn This patch handles the actual generation of the static data structures used to represent XPT information. XPT files are generated in the same way as they are now, but they are used only as an intermediate representation to speed up incremental compilation rather than something used by Firefox itself. Instead of linking XPTs into a single big XPT file at packaging time, they are linked into a single big C++ file at build time, that defines the various static consts in XPTHeader. In xpt.py, every data structure that can get written to disk gets an additional code_gen() method that returns a representation of that data structure as C++ source code. CodeGenData aggregates this information together, handling deduplication and the final source code generation. The ctors are needed for XPTConstValue to statically initialize the different union cases without resorting to designated initializers, which are part of C99, not C++. Designated initializers appear to be supported in C++ code by Clang and GCC, but not MSVC. The ctors must be constexpr to ensure they are actually statically initialized so they can be shared between Firefox processes. I also removed an unnecessary "union" in XPTConstDescriptor. Together, these patches reduce the amount of memory reported by xpti-working-set from about 860,000 bytes to about 200,000 bytes. The remaining memory is used for xptiInterface and xptiTypelibGuts (which are thin wrappers around the XPT interfaces and header) and hash tables to speed up looking up interfaces by name or IID. That could potentially be eliminated from dynamic allocations in follow up work. These patches did not affect memory reporting because XPT arenas are still used by the remaining XPTI data structures. MozReview-Commit-ID: Jvi9ByCPa6H
f1dd107a1ad42d8bb46574e5f23965316991c836: Bug 1438688, part 5 - Merge XPTInterfaceDirectoryEntry and XPTInterfaceDescriptor. r=njn
Andrew McCreight <continuation@gmail.com> - Mon, 12 Mar 2018 13:36:15 -0700 - rev 456382
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 5 - Merge XPTInterfaceDirectoryEntry and XPTInterfaceDescriptor. r=njn With fully linked XPT data, there is exactly one directory entry per descriptor, plus one per unresolved interface. There are 1200 of the former and 40 of the latter. By merging them, we save a 32 bit int per directory entry, at the cost of 11 bytes per unresolved interface. This will make VerifyAndAddEntryIfNew slightly slower because it has to do an nsID equality check rather than a null check, but I can't imagine that will matter. My main goal for this patch is to reduce the size of the executable, to avoid a regression with my static XPT information patches, but it should reduce memory a little bit, too. MozReview-Commit-ID: L35YdOuAyF4
fe00ed08356dd3dab2f7dac4b7a000bcc7df953e: Bug 1438688, part 4 - Hoist arrays to XPTHeader. r=njn
Andrew McCreight <continuation@gmail.com> - Wed, 28 Feb 2018 15:12:07 -0800 - rev 456381
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 4 - Hoist arrays to XPTHeader. r=njn To allow XPT information to be shared between processes, it needs to not contain any pointers, because they cause relocations. I've eliminated pointers by hoisting all of the variable length data structures to XPTHeader, into a single array for each type of data. These data structures now use an index into these arrays to find their first element. Strings are similar, but they are mashed into a single giant string, including embedded null terminators. Modifying the accessor methods to support this is easy, because there is only a single global instance of each of these arrays in XPTHeader. MozReview-Commit-ID: 5rgwaEBvDYl
af6c0673ec6ffc38d30d95ea42caa7001cd19ef4: Bug 1438688, part 3 - Remove XPT files from the packaging process. r=glandium
Andrew McCreight <continuation@gmail.com> - Mon, 05 Mar 2018 14:27:29 -0800 - rev 456380
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 3 - Remove XPT files from the packaging process. r=glandium Now that XPT files are not loaded from files at runtime, code for packaging XPT files can be removed. This means that a couple of test XPIDL interfaces will get shipped in builds to users that weren't before, but I don't think that matters much. This also puts XPT files into the local objdir for the XPIDL makefile, instead of dist/bin, because they are no longer part of the distribution. MozReview-Commit-ID: 7gWj8KWUun3
1f3b60346b7750df21c3a93a2eef0d801d77e421: Bug 1438688, part 2b - Eliminate XPTHeader data structure. r=njn
Andrew McCreight <continuation@gmail.com> - Tue, 27 Mar 2018 14:04:01 -0700 - rev 456379
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 2b - Eliminate XPTHeader data structure. r=njn Now that there is only one XPTHeader, we can devolve the fields in it to avoid some indirection. The biggest part here is getting rid of the mHeader field on xptiTypelibGuts. The array is [] instead of * to avoid a relocation, by ensuring that XPTHeader::kInterfaceDirectory as well as the data it points to cannot be changed. MozReview-Commit-ID: AzvNTNZKkfi
e3b0f068f61e4b352072c1246609ad5c50930587: Bug 1438688, part 2 - Load XPT information from a static variable instead of a file. r=njn
Andrew McCreight <continuation@gmail.com> - Wed, 28 Feb 2018 12:51:39 -0800 - rev 456378
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 2 - Load XPT information from a static variable instead of a file. r=njn This patch removes C++ code related to reading in XPT information from files. (Code related to packaging XPT files will be removed in the next patch.) This includes code in the manifest parser, in addition to the actual code for parsing files. XPT information is now loaded directly from a single static data structure, XPTHeader::kHeader, which will be automatically generated at compile time from .idl files (via .xpt files). Note that the script to do that is not added until part 6 of this patch series, so linking will fail on parts 2 through 5. I inlined XPTInterfaceInfoManager::RegisterXPTHeader into the ctor, because that is the only caller. It feels like the lock there should not be needed any more, but I left it alone for now. The forward declaration of XPTArena in xptiprivate.h is needed because it was being bootlegged via xpt_xdr.h. Some of the data structures in reflect/xptinfo/ (which wrap the xpt_struct.h data structures) are still allocated using XPTArena. Hopefully we can get rid of that in followup work. I also deleted a lot of comments in xpt_struct.h that talk about the on-disk format. I also deleted checking of the major version number, because that should not matter when the XPT information is baked into the executable. MozReview-Commit-ID: 6NJdaCWRBhU
4f8ea03dbe4d83513bde0e4422da2a47f35bbd67: Bug 1438688, part 1 - Add methods for accessing arrays in xpt_struct.h. r=njn
Andrew McCreight <continuation@gmail.com> - Wed, 28 Feb 2018 10:07:45 -0800 - rev 456377
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1438688, part 1 - Add methods for accessing arrays in xpt_struct.h. r=njn This lets us hide later changes to how these arrays are stored. There should be no behavioral change. Some methods in xpt_struct.h are declared inline at the end of the header due to the order that classes are declared in the header. MozReview-Commit-ID: KAxUKn3sDOD
d0ae155862180c2655c0c84e1c5421d586cda67d: Merge mozilla-central to autoland
Dorel Luca <dluca@mozilla.com> - Tue, 03 Apr 2018 07:22:33 +0300 - rev 456376
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Merge mozilla-central to autoland
87840a3dd71583805be28dd07f9aedaa90d32142: Bug 1449629 - Install Python 3.5 in debian-base; r=glandium
Gregory Szorc <gps@mozilla.com> - Mon, 02 Apr 2018 16:58:21 -0700 - rev 456375
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1449629 - Install Python 3.5 in debian-base; r=glandium We want Python 3.5+ to be available everywhere so various processes can start using it. The debian-base Dockerfile is shared by Debian 7 and 9 images. Debian 9 ships with Python 3.5 and after the previous commit, we have a Python 3.5 package for Debian 7. So we simply install the "python3.5" package to get Python on all the Debian images. MozReview-Commit-ID: 9ZmoSxtHWTZ
4b89260566da163425f88bcb90aa91375934f2bb: Bug 1449629 - Install Python 3.5 in Debian 7 base image; r=glandium
Gregory Szorc <gps@mozilla.com> - Mon, 02 Apr 2018 19:27:12 -0700 - rev 456374
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1449629 - Install Python 3.5 in Debian 7 base image; r=glandium Debian 7 ships Python 3.2 by default. That's too old for our upcoming build requirement of Python 3.5. This commit adds a Python 3.5 package for wheezy that backports the Python 3.5 from a much later Debian version. The patch was inspired by the existing patch for Python 2.7. However, it needed additional work. The changes and reasons should all be documented in the changelog file as part of the package diff we apply. I'm a bit disappointed we had to disable PGO. But it was reliably segfaulting during the build. I didn't feel like going down that rabbit hole. MozReview-Commit-ID: ABpHW1KYFQP
abb14d1d2f0cf6a205b1592301cfd8059614f53b: Bug 1449629 - Use -L when downloading OpenSSL; r=glandium
Gregory Szorc <gps@mozilla.com> - Mon, 02 Apr 2018 19:22:07 -0700 - rev 456373
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1449629 - Use -L when downloading OpenSSL; r=glandium The URL is now being redirected to https://www.openssl.org/source/old/1.1.0/openssl-1.1.0g.tar.gz. Let's add a -L so we follow redirects automatically. MozReview-Commit-ID: AuZ98jGidzl
9ca671c7ec5bb860d67fdfe2dafdc0a6daef48f9: Bug 1446202 - 2. Don't pass pointer events to datetime inputs; r=jchen
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 23:26:11 -0400 - rev 456372
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1446202 - 2. Don't pass pointer events to datetime inputs; r=jchen Like the way we treat select fields, don't pass pointer events to date/time input fields either. MozReview-Commit-ID: Eucfbu6MizX
ae4d46495f5e78721e9cd68dc46e11b13592b875: Bug 1446202 - 1. Return correct locale string to Gecko; r=droeh
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 23:25:27 -0400 - rev 456371
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1446202 - 1. Return correct locale string to Gecko; r=droeh Locale.toString() doesn't return the correct locale format that Gecko expects, so reformat the locale string before returning. (for example, Locale.toString() returns "en_US_POSIX#Latn" whereas Gecko expects "en-Latn-US-POSIX"). The incorrect locale format was preventing intl code (and the datetime box) from initializing. MozReview-Commit-ID: JmDYkDj31pL
35f5e13e1098d838580b83f63bc3a52547ebd213: servo: Merge #20447 - NCSU Canvas Rendering Project Initial Steps (from Brody-Eastwood:master); r=jdm
Brody Eastwood <baeastwo@ncsu.edu> - Mon, 02 Apr 2018 22:24:34 -0400 - rev 456370
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
servo: Merge #20447 - NCSU Canvas Rendering Project Initial Steps (from Brody-Eastwood:master); r=jdm <!-- Please describe your changes on the following line: --> Implements the initial steps from: https://github.com/servo/servo/wiki/Canvas-rendering-project --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [X] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Source-Repo: https://github.com/servo/servo Source-Revision: 9cd60c8e78af7b80e7578612ae442de26d1a325b
eab2985673a56ee09f5da6ae62b43a1dfc7e737d: Bug 1441279 - 6. Register accessible caret observers across docshell tree; r=bz
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 17:13:46 -0400 - rev 456369
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1441279 - 6. Register accessible caret observers across docshell tree; r=bz AccessibleCaretManager uses scroll and reflow observers to detect when to update the position of carets. However, it currently only registers the observers on the leaf docshell, so only changes in the innermost iframe are detected; that is, it fails to update caret position when an ancestor iframe is scrolled. This patch makes it register observers on all ancestor docshells so that changes in ancestor iframes are detected as well. MozReview-Commit-ID: bwiSjj8936
f32e3961dbfbfeff43a90f5f27e6efc6ad5a2043: Bug 1441279 - 5. Use BasicSelectionActionDelegate in GeckoView by default; r=snorp
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 17:13:46 -0400 - rev 456368
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1441279 - 5. Use BasicSelectionActionDelegate in GeckoView by default; r=snorp Use BasicSelectionActionDelegate for GeckoView sessions by default, if there is no existing delegate. MozReview-Commit-ID: 1lrEav4esKh
cf58dd36b5e49fe1cb6a76066d59d20214458af0: Bug 1441279 - 4. Add BasicSelectionActionDelegate; r=snorp
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 17:13:46 -0400 - rev 456367
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1441279 - 4. Add BasicSelectionActionDelegate; r=snorp Add a standard implementation of SelectionActionDelegate that uses Android action mode for displaying selection actions. MozReview-Commit-ID: Iv497bXDzMh
76c9a983c51a62f82d6c0c8d3722582c51077978: Bug 1441279 - 3. Add selection action handler in GeckoSession; r=esawin
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 17:13:45 -0400 - rev 456366
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1441279 - 3. Add selection action handler in GeckoSession; r=esawin Add a handler for selection action delegate in GeckoSession that calls the callback methods. MozReview-Commit-ID: C2mMHHheTJT
f5bf795f762327bb840113e0ab4e95fef6d6282d: Bug 1441279 - 2. Add selection action JS modules; r=esawin,snorp
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 17:13:45 -0400 - rev 456365
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1441279 - 2. Add selection action JS modules; r=esawin,snorp Add JS modules for listening to accessible caret events, and relaying those events to Java. MozReview-Commit-ID: JPLTMzK7Nzn
376e69bc9be618de463653e9de5b984d34809ab0: Bug 1441279 - 1. Add SelectionActionDelegate interface; r=esawin,snorp
Jim Chen <nchen@mozilla.com> - Mon, 02 Apr 2018 17:13:45 -0400 - rev 456364
Push 151 by fmarier@mozilla.com at Thu, 05 Apr 2018 22:59:31 +0000
Bug 1441279 - 1. Add SelectionActionDelegate interface; r=esawin,snorp Add a SelectionActionDelegate interface for handling text selection. MozReview-Commit-ID: I37Hm6nphJx
(0) -300000 -100000 -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 tip