753f3591930d7a1ef1cd2a8e4cbe9e0f6b57d901: Bug 1415766. P1 - we never pass anything other than NS_SEEK_SET to Seek(). r=bechen,gerald
JW Wang <jwwang@mozilla.com> - Thu, 02 Nov 2017 14:26:24 +0800 - rev 444178
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1415766. P1 - we never pass anything other than NS_SEEK_SET to Seek(). r=bechen,gerald MozReview-Commit-ID: AgvapCwwSpr
05002ad2b8f98d392a10811ce12f332ce2258210: Bug 1415397 - use Span<> to replace low level pointer arithmetic in ReadFromCache(). r=bechen,gerald
JW Wang <jwwang@mozilla.com> - Thu, 02 Nov 2017 11:36:56 +0800 - rev 444177
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1415397 - use Span<> to replace low level pointer arithmetic in ReadFromCache(). r=bechen,gerald MozReview-Commit-ID: HH6KXtMfSIJ
8a306a5bc1da4a6c1ff7d3cd695b95bdfdccc0f4: Bug 1413427 - Part5 - Fix cross origin test failure. r=bz,jgraham
James Cheng <jacheng@mozilla.com> - Fri, 03 Nov 2017 17:57:52 +0800 - rev 444176
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1413427 - Part5 - Fix cross origin test failure. r=bz,jgraham Bug 1322517 will make the EME APIs only run on secure context. This bug will try to make WPT test run with https. According to the spec https://www.w3.org/TR/secure-contexts/#is-url-trustworthy I got "TypeError: navigator.requestMediaKeySystemAccess is not a function" by the original code. So I need this patch to make the test work as expected. MozReview-Commit-ID: Gp23IcscXHE
6039726995022771be1e7a853fcc238f9fbac829: Bug 1413427 - Part4 - Rename the content of the .ini file and update the MANIFEST.JSON files by command. r=jgraham
James Cheng <jacheng@mozilla.com> - Fri, 03 Nov 2017 21:17:29 +0800 - rev 444175
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1413427 - Part4 - Rename the content of the .ini file and update the MANIFEST.JSON files by command. r=jgraham MozReview-Commit-ID: It2X2FG8iS1
294ccf3ffc059ff6a206291715bcaa363a0cee0d: Bug 1413427 - Part3 - Change the file extension from .html.ini to .https.html.ini. r=jgraham
James Cheng <jacheng@mozilla.com> - Fri, 03 Nov 2017 21:20:25 +0800 - rev 444174
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1413427 - Part3 - Change the file extension from .html.ini to .https.html.ini. r=jgraham MozReview-Commit-ID: LnJkmoyTYX5
047b40ad4a46d25e5b985e47dde46cbeb52260aa: Bug 1413427 - Part2 - Change the file extension from .html to .https.html. r=jgraham
James Cheng <jacheng@mozilla.com> - Fri, 03 Nov 2017 21:23:35 +0800 - rev 444173
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1413427 - Part2 - Change the file extension from .html to .https.html. r=jgraham MozReview-Commit-ID: IfLOOM85WyL
c7c230ee775e023a243f2a80601b0f7b4d80188e: Bug 1413427 - Part1 - Make Mochitest runs EME with https. r=cpearce,kikuo
James Cheng <jacheng@mozilla.com> - Fri, 03 Nov 2017 12:30:58 +0800 - rev 444172
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1413427 - Part1 - Make Mochitest runs EME with https. r=cpearce,kikuo MozReview-Commit-ID: 8EfJTXdQkZG
bfa36a25eaf674064cf16bdcd8ef4eb049359591: Bug 1415454 - Replace log2 lookup table with FloorLog2. r=njn
Mike Hommey <mh+mozilla@glandium.org> - Wed, 08 Nov 2017 16:20:40 +0900 - rev 444171
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1415454 - Replace log2 lookup table with FloorLog2. r=njn FloorLog2 expands to, essentially, a compiler builtin/intrinsic, that, in turn, expands to a single machine instruction on tier 1 and other platforms. On platforms where that's not the case, we can expect the compiler to generate fast code anyways. So overall, this is all better than manually using a log2 lookup table. Also replace a manual power-of-two check with mozilla::IsPowerOfTwo, which does the same test.
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 444170
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444169
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444168
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444167
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444166
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444165
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444164
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444163
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444162
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444161
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444160
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +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 444159
Push 1618 by Callek@gmail.com at Thu, 11 Jan 2018 17:45:48 +0000
Bug 1415707 - Remove about:accounts redirector. r=markh MozReview-Commit-ID: JslMt32G1AS
(0) -300000 -100000 -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 +100000 tip