b8acdda178182e9dec084f84af572294d6d58ac6: Bug 1415454 - Remove the unused arena_bin_t* argument to arena_t::AllocRun. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Fri, 03 Nov 2017 15:54:20 +0900 - rev 390926
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415454 - Remove the unused arena_bin_t* argument to arena_t::AllocRun. r=njn
f64defe0d11edb2a76bb6cca295a7fd864542501: Bug 1415454 - Inline MallocBinEasy and MallocBinHard. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Fri, 03 Nov 2017 15:48:40 +0900 - rev 390925
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415454 - Inline MallocBinEasy and MallocBinHard. r=njn They are both only used once, are trivial wrappers, and even repeat the same assertions.
78acf48d63c3dacd8885ba93cdf5f1b2efccafe5: Bug 1403881 - Add credit card update doorhanger. r=lchang
steveck-chung <schung@mozilla.com> - Tue, 07 Nov 2017 16:50:35 +0800 - rev 390924
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1403881 - Add credit card update doorhanger. r=lchang MozReview-Commit-ID: BUd70UyLC9c
a4392df95024d106fb3472b746c96e31224cdee4: Bug 1414168 - Rename arena_run_t fields. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Fri, 03 Nov 2017 15:23:44 +0900 - rev 390923
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Rename arena_run_t fields. r=njn
182b840c89560a0d4a53bcd5bc337749e92fdd23: Bug 1414168 - Move bin initialization to a method of the arena_bin_t class. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Wed, 08 Nov 2017 15:53:24 +0900 - rev 390922
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Move bin initialization to a method of the arena_bin_t class. r=njn
11bc33786fd378b717fc4ea358c12e6f96320432: Bug 1414168 - Change how run sizes are calculated. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Wed, 08 Nov 2017 14:04:10 +0900 - rev 390921
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Change how run sizes are calculated. r=njn There are multiple flaws to the current code: - The loop calculating the right parameters for a given run size is repeated. - The loop trying different run sizes doesn't actually work to fulfil the overhead constraint: while it stops when the constraint is fulfilled, the values that are kept are those from the previous iteration, which may well be well over the constraint. In practice, the latter resulted in a few surprising results: - most size classes had an overhead slightly over the constraint (1.562%), which, while not terribly bad, doesn't match the set expectations. - some size classes ended up with relatively good overheads only because of the additional constraint that run sizes had to be larger than the run size of smaller size classes. Without this constraint, some size classes would end up with overheads well over 2% just because that happens to be the last overhead value before reaching below the 1.5% constraint. Furthermore, for higher-level fragmentation concerns, smaller run sizes are better than larger run sizes, and in many cases, smaller run sizes can yield the same (or even sometimes, better) overhead as larger run sizes. For example, the current code choses 8KiB for runs of size 112, but using 4KiB runs would actually yield the same number of regions, and the same overhead. We thus change the calculation to: - not force runs to be smaller than those of smaller classes. - avoid the code repetition. - actually enforce its overhead constraint, but make it 1.6%. - for especially small size classes, relax the overhead constraint to 2.4%. This leads to an uneven set of run sizes: size class before after 4 4 KiB 4 KiB 8 4 KiB 4 KiB 16 4 KiB 4 KiB 32 4 KiB 4 KiB 48 4 KiB 4 KiB 64 4 KiB 4 KiB 80 4 KiB 4 KiB 96 4 KiB 4 KiB 112 8 KiB 4 KiB 128 8 KiB 8 KiB 144 8 KiB 4 KiB 160 8 KiB 8 KiB 176 8 KiB 4 KiB 192 12 KiB 4 KiB 208 12 KiB 8 KiB 224 12 KiB 4 KiB 240 12 KiB 4 KiB 256 16 KiB 16 KiB 272 16 KiB 4 KiB 288 16 KiB 4 KiB 304 16 KiB 12 KiB 320 20 KiB 12 KiB 336 20 KiB 4 KiB 352 20 KiB 8 KiB 368 20 KiB 4 KiB 384 24 KiB 8 KiB 400 24 KiB 20 KiB 416 24 KiB 16 KiB 432 24 KiB 12 KiB 448 28 KiB 4 KiB 464 28 KiB 16 KiB 480 28 KiB 8 KiB 496 28 KiB 20 KiB 512 32 KiB 32 KiB 1024 64 KiB 64 KiB 2048 132 KiB 128 KiB * Note: before is before this change only, not before the set of changes from this bug; before that, the run size for 96 could be 8 KiB in some configurations. In most cases, the overhead hasn't changed, with a few exceptions: - Improvements: size class before after 208 1.823% 0.977% 304 1.660% 1.042% 320 1.562% 1.042% 400 0.716% 0.391% 464 1.283% 0.879% 480 1.228% 0.391% 496 1.395% 0.703% - Regressions: 352 0.312% 1.172% 416 0.130% 0.977% 2048 1.515% 1.562% For the regressions, the values are either still well within the constraint or very close to the previous value, that I don't feel like it's worth trying to avoid them, with the risk of making things worse for other size classes.
29a122463ffcc549f3ccccbc5779ea13ca68abfe: Bug 1414168 - Base run offset calculations on the fixed header size, excluding regs_mask. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Wed, 08 Nov 2017 10:08:37 +0900 - rev 390920
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Base run offset calculations on the fixed header size, excluding regs_mask. r=njn On 64-bit platforms, sizeof(arena_run_t) includes a padding at the end of the struct to align to 64-bit, since the last field, regs_mask, is 32-bit, and its offset can be a multiple of 64-bit depending on the configuration. But we're doing size calculations for a dynamically-sized regs_mask based on sizeof(arena_run_t), completely ignoring that padding. Instead, we use the offset of regs_mask as a base for the calculation. Practically speaking, this doesn't change much with the current set of values, but could affect the overheads when we squeeze run sizes more.
ef39a9dff092be182a51b0050e03c871e3bffdc2: Bug 1414168 - Avoid padding near the beginning of arena_run_t. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Wed, 08 Nov 2017 09:56:08 +0900 - rev 390919
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Avoid padding near the beginning of arena_run_t. r=njn This makes the run header larger than necessary, which happens to make the current arena_bin_run_calc_size pick 8KiB runs for size class 96 when MOZ_DIAGNOSTIC_ASSERT_ENABLED is set. This change makes it pick 4KiB runs, making MOZ_DIAGNOSTIC_ASSERT_ENABLED builds use the same set of run sizes as non-MOZ_DIAGNOSTIC_ASSERT_ENABLED builds.
076b6f406f2c43e0c04f40d72b522cd0cca231e4: Bug 1414168 - Change and move the relaxed calculation rule for small size classes. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Tue, 07 Nov 2017 14:36:07 +0900 - rev 390918
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Change and move the relaxed calculation rule for small size classes. r=njn First and foremost, the code and corresponding comment weren't in agreement on what's going on. The code checks: RUN_MAX_OVRHD * (bin->mSizeClass << 3) <= RUN_MAX_OVRHD_RELAX which is equivalent to: (bin->mSizeClass << 3) <= RUN_MAX_OVRHD_RELAX / RUN_MAX_OVRHD replacing constants: (bin->mSizeClass << 3) <= 0x1800 / 0x3d The left hand side is just bin->mSizeClass * 8, and the right hand side is about 100, so this can be roughly summarized as: bin->mSizeClass <= 12 The comment says the overhead constraint is relaxed for runs with a per-region overhead greater than RUN_MAX_OVRHD / (mSizeClass << (3+RUN_BFP)). Which, on itself, doesn't make sense, because it translates to 61 / (mSizeClass * 32768), which, even for a size class of 1 would mean less than 0.2%, and this value would be even smaller for bigger classes. The comment would make more sense with RUN_MAX_OVRHD_RELAX, but would still not match what the code was doing. So we change how the relaxed rule works, as per the comment in the new code, and make it happen after the standard run overhead constraint has been checked.
bd35bf43d67daa82877249cb9943dce3c6993c53: Bug 1414168 - Demystify the last test in the main arena_bin_run_size_calc loop. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Tue, 07 Nov 2017 08:55:37 +0900 - rev 390917
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Demystify the last test in the main arena_bin_run_size_calc loop. r=njn The description above the RUN_* constant definitions talks about binary fixed point math, which is one way to look at the problem, but a clearer one is to look at it as comparing ratios in a way that doesn't use divisions. So, starting from the current expression: (try_reg0_offset << RUN_BFP) <= RUN_MAX_OVRHD * try_run_size This can be rewritten as try_reg0_offset * (1 << RUN_BFP) <= RUN_MAX_OVRHD * try_run_size Dividing both sides with ((1 << RUN_BFP) * try_run_size), and simplifying, gives us: try_reg0_offset / try_run_size <= RUN_MAX_OVRHD / (1 << RUN_BFP) Replacing the constants: try_reg0_offset / try_run_size <= 0x3d / (1 << 12) or try_reg0_offset / try_run_size <= 61 / 4096 61 / 4096 is roughly 1.5%. So what the check really intends to do is check that the overhead is below 1.5%. So we introduce a helper class and a user-defined literal that makes the test more self-descriptive, while producing identical machine code. This is a lot of code to add, but I think it's one of those cases where abstraction can help make the code clearer.
5ab2a7bd031f3060cb57b072349fbc8e7178547a: Bug 1414168 - Split the condition for the main arena_bin_run_size_calc loop into pieces. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Tue, 07 Nov 2017 07:42:21 +0900 - rev 390916
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1414168 - Split the condition for the main arena_bin_run_size_calc loop into pieces. r=njn This is, practically speaking, a no-op, and will hopefully help make the following changes clearer.
7ae07e7920fec8d066b757acfc112746a2ab7c1c: Bug 1415707 - Remove about:accounts redirector. r=markh
Edouard Oger <eoger@fastmail.com> - Wed, 08 Nov 2017 18:23:55 -0500 - rev 390915
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415707 - Remove about:accounts redirector. r=markh MozReview-Commit-ID: JslMt32G1AS
27403a9dec13a8d6c37b764782db51ca81ce9436: Bug 1415225 - Add a couple of mochitests for event-regions overrides. r=botond
Kartikaya Gupta <kgupta@mozilla.com> - Wed, 08 Nov 2017 20:47:19 -0500 - rev 390914
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415225 - Add a couple of mochitests for event-regions overrides. r=botond These two tests exercise the codepaths where an event regions override is set on (a) the root layer of a layer tree and (b) on an in-process subdocument. I verified that case (b) was failing with webrender enabled without the patchset and passes now. MozReview-Commit-ID: GMwk5iQstj
9e671058653199248a401a379f787fef0ccced89: Bug 1415225 - Small early-exit optimization. r=botond
Kartikaya Gupta <kgupta@mozilla.com> - Wed, 08 Nov 2017 20:47:19 -0500 - rev 390913
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415225 - Small early-exit optimization. r=botond MozReview-Commit-ID: 8h1kYevQUtT
8cfef302b7102e2953f61020a26c26313cebc4e4: Bug 1415225 - Move the EventRegionsOverride field to be on RefLayers only. r=botond
Kartikaya Gupta <kgupta@mozilla.com> - Wed, 08 Nov 2017 20:47:19 -0500 - rev 390912
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415225 - Move the EventRegionsOverride field to be on RefLayers only. r=botond We now set EventRegionsOverride flags on ref layers only, so there's no need to have the APIs to set it on container layers in general. MozReview-Commit-ID: EX57VvaZv8A
8ae80d7421d5b01d9e6ef8a7ce1c62a2f0b71149: Bug 1415225 - Stop setting the EventRegionsOverride flag on root layers. r=botond,mattwoodrow
Kartikaya Gupta <kgupta@mozilla.com> - Wed, 08 Nov 2017 20:47:18 -0500 - rev 390911
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415225 - Stop setting the EventRegionsOverride flag on root layers. r=botond,mattwoodrow As with the previous patch, instead of setting the override on the root layer, we set the flag on the nsDisplayListBuilder before building the display list, and the flag automatically forces all event regions display items to use their dispatch-to-content region instead of any other regions. Both the WebRender and non-WebRender codepaths were setting the override flag on their root layers and don't need to any more. MozReview-Commit-ID: KQV3w2nvlgs
5f14fc545115a089e128579f7a37189d6cb99d61: Bug 1415225 - Stop setting the EventRegionsOverride flag on in-process subdocument layers. r=botond
Kartikaya Gupta <kgupta@mozilla.com> - Wed, 08 Nov 2017 20:47:18 -0500 - rev 390910
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415225 - Stop setting the EventRegionsOverride flag on in-process subdocument layers. r=botond The mechanics of this change is fairly straightforward - instead of setting the override on the layer corresponding to the in-process subdocument, we just set the flag on the display list builder; that flag is already checked when building the layer event regions for descendant nsIFrames. As a side-effect, we also don't need to force a layer for in-process subdocuments just because they have document-level APZ-aware listeners. One of reasons we were doing so before was so that we would have a layer to stash the override flags on but now we don't need that any more. Note that out-of-process subdocuments are not affected; for those cases the nsSubDocumentFrame delegates BuildDisplayList to RenderFrameParent/nsDisplayRemote, which will still set the overrides on the RefLayer that is created. MozReview-Commit-ID: GTy9BmVVZ9q
4704645d4e81505c680c0238b72ff552c39a6b85: Bug 1415225 - Remove dead code. r=jrmuizel
Kartikaya Gupta <kgupta@mozilla.com> - Wed, 08 Nov 2017 20:47:18 -0500 - rev 390909
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1415225 - Remove dead code. r=jrmuizel This code has been unused since the removal of layers-full WR codepaths. MozReview-Commit-ID: EAhRrZXLKKr
4b0b68c54b54431d9a91b15968b0c76deff6cc33: Bug 1413480 - Check mCDM in ChromiumCDMChild::RecvXXX before dereferencing it. r=cpearce,kikuo
James Cheng <jacheng@mozilla.com> - Wed, 08 Nov 2017 15:44:34 +0800 - rev 390908
Push 97145 by dluca@mozilla.com at Thu, 09 Nov 2017 14:03:53 +0000
Bug 1413480 - Check mCDM in ChromiumCDMChild::RecvXXX before dereferencing it. r=cpearce,kikuo MozReview-Commit-ID: Dp4FOtZ8Yok
37a03f25e750e71f1006aa56fd67b049a0e72057: Bug 1319203: Also rename "entry trampoline" to "slow entry trampoline" in wasm tests; r=me
Benjamin Bouvier <benj@benj.me> - Thu, 09 Nov 2017 13:47:07 +0100 - rev 390907
Push 97144 by bbouvier@mozilla.com at Thu, 09 Nov 2017 12:48:15 +0000
Bug 1319203: Also rename "entry trampoline" to "slow entry trampoline" in wasm tests; r=me
(0) -300000 -100000 -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 +100000 tip