2168 Commits

Author SHA1 Message Date
Nika Layzell
f07fc1f61f Bug 1687391 - Avoid using a spinlock in ThreadSafeWeakReference, r=glandium,mccr8,Gankra,sg
This new approach to weak references is roughly modeled after the approach used
by Rust's Arc<T>, and uses an atomic compare-and-swap loop to perform weak to
strong reference upgrades. This approach ends up moving the strong reference
count out of the tracked object and into the weak reference object, as the
strong reference count atomic needs to outlife the object itself.

Rust's Arc Weak::upgrade implementation:
d98d2f57d9/library/alloc/src/sync.rs (L1806-L1837)

Differential Revision: https://phabricator.services.mozilla.com/D102245
2021-02-03 17:00:04 +00:00
Bogdan Tara
369c9ff89b Backed out changeset cf95a79e64f6 (bug 1687391) for bustges complaining about ThreadSafeWeakPtr CLOSED TREE 2021-02-03 18:39:22 +02:00
Nika Layzell
33d14ac4a6 Bug 1687391 - Avoid using a spinlock in ThreadSafeWeakReference, r=glandium,mccr8,Gankra,sg
This new approach to weak references is roughly modeled after the approach used
by Rust's Arc<T>, and uses an atomic compare-and-swap loop to perform weak to
strong reference upgrades. This approach ends up moving the strong reference
count out of the tracked object and into the weak reference object, as the
strong reference count atomic needs to outlife the object itself.

Rust's Arc Weak::upgrade implementation:
d98d2f57d9/library/alloc/src/sync.rs (L1806-L1837)

Differential Revision: https://phabricator.services.mozilla.com/D102245
2021-02-03 16:16:44 +00:00
Simon Giesecke
9c23bfdb2e Bug 1685677 - Extract functions from CheckTemporaryStorageLimits and rename it to CleanupTemporaryStorage. r=dom-workers-and-storage-reviewers,janv
Extracts parts of CheckTemporaryStorageLimits into the following new private
member functions of QuotaManager:
* LockedGetOriginInfosExceedingGroupLimit
* LockedGetOriginInfosExceedingGlobalLimit
* GetOriginInfosExceedingLimits
* ClearOrigins

Differential Revision: https://phabricator.services.mozilla.com/D101145
2021-02-02 17:46:40 +00:00
Csoregi Natalia
74e4cf16bf Backed out 5 changesets (bug 1689967, bug 1685677) for bustage on TestFlatten.cpp. CLOSED TREE
Backed out changeset 129b45a961fb (bug 1689967)
Backed out changeset d354b3d5312c (bug 1685677)
Backed out changeset 3c1b1f51f19c (bug 1685677)
Backed out changeset cc4f20677a7e (bug 1685677)
Backed out changeset bcbba85964cb (bug 1685677)
2021-02-02 17:05:23 +02:00
Simon Giesecke
e4a5513e58 Bug 1685677 - Extract functions from CheckTemporaryStorageLimits and rename it to CleanupTemporaryStorage. r=dom-workers-and-storage-reviewers,janv
Extracts parts of CheckTemporaryStorageLimits into the following new private
member functions of QuotaManager:
* LockedGetOriginInfosExceedingGroupLimit
* LockedGetOriginInfosExceedingGlobalLimit
* GetOriginInfosExceedingLimits
* ClearOrigins

Differential Revision: https://phabricator.services.mozilla.com/D101145
2021-02-02 12:53:44 +00:00
smolnar
d18d54a300 Backed out 4 changesets (bug 1685677) for causing build bustage in TestFlatten. CLOSED TREE DONTBUILD
Backed out changeset 0110eb26213b (bug 1685677)
Backed out changeset e3223c398959 (bug 1685677)
Backed out changeset d1fbaf6882a3 (bug 1685677)
Backed out changeset e1e26422161e (bug 1685677)
2021-02-02 14:46:30 +02:00
Simon Giesecke
0da4951ba0 Bug 1685677 - Extract functions from CheckTemporaryStorageLimits and rename it to CleanupTemporaryStorage. r=dom-workers-and-storage-reviewers,janv
Extracts parts of CheckTemporaryStorageLimits into the following new private
member functions of QuotaManager:
* LockedGetOriginInfosExceedingGroupLimit
* LockedGetOriginInfosExceedingGlobalLimit
* GetOriginInfosExceedingLimits
* ClearOrigins

Differential Revision: https://phabricator.services.mozilla.com/D101145
2021-02-02 10:10:21 +00:00
Butkovits Atila
cc5cb272ff Backed out 2 changesets (bug 1685677) for causing xpcshell failure. CLOSED TREE
Backed out changeset 26e9adf102c8 (bug 1685677)
Backed out changeset ed3a62552625 (bug 1685677)
2021-02-01 22:54:39 +02:00
Simon Giesecke
f78d2e7d7e Bug 1685677 - Extract functions from CheckTemporaryStorageLimits and rename it to CleanupTemporaryStorage. r=dom-workers-and-storage-reviewers,janv
Extracts parts of CheckTemporaryStorageLimits into the following new private
member functions of QuotaManager:
* LockedGetOriginInfosExceedingGroupLimit
* LockedGetOriginInfosExceedingGlobalLimit
* GetOriginInfosExceedingLimits
* ClearOrigins

Differential Revision: https://phabricator.services.mozilla.com/D101145
2021-02-01 14:42:15 +00:00
Jan Varga
165dbaf2e5 Bug 1689802 - Fix construction of MovingNotNull from NotNull; r=sg
Depends on D103556

Differential Revision: https://phabricator.services.mozilla.com/D103632
2021-02-01 13:52:31 +00:00
smolnar
0fc1e1e521 Backed out 4 changesets (bug 1685677) for causing xpcshell failures in test_storagePressure. CLOSED TREE
Backed out changeset 263d593f8609 (bug 1685677)
Backed out changeset 81a737afce4f (bug 1685677)
Backed out changeset ea958694bd17 (bug 1685677)
Backed out changeset 121e93b3787f (bug 1685677)
2021-02-01 16:38:01 +02:00
Simon Giesecke
1134a78170 Bug 1685677 - Extract functions from CheckTemporaryStorageLimits and rename it to CleanupTemporaryStorage. r=dom-workers-and-storage-reviewers,janv
Extracts parts of CheckTemporaryStorageLimits into the following new private
member functions of QuotaManager:
* LockedGetOriginInfosExceedingGroupLimit
* LockedGetOriginInfosExceedingGlobalLimit
* GetOriginInfosExceedingLimits
* ClearOrigins

Differential Revision: https://phabricator.services.mozilla.com/D101145
2021-02-01 13:37:30 +00:00
Mike Hommey
990995c428 Bug 1689281 - Remove MFBT_DATA for kBase10MaximalLength. r=nika
It was added in bug 614188. 8 years have passed, and it doesn't seem
necessary anymore (if it ever was).

Differential Revision: https://phabricator.services.mozilla.com/D103265
2021-01-28 16:50:14 +00:00
Mike Hommey
2b96dd066d Bug 1686831 - Allow double-conversion's ToFixed to handle ±DBL_MAX. r=nika
While at this point PrintfTarget doesn't use double-conversion, add a
test that it can (and thus will) handle the largest double output possible
with the default %f precision.

Differential Revision: https://phabricator.services.mozilla.com/D103431
2021-01-29 16:54:03 +00:00
Mike Hommey
504ef77af2 Bug 1686831 - Handle trailing zero removal in double-conversion. r=nika,jwalden,Gankra
Bug 608915 switched nsString::AppendFloat to double-conversion, while
handling trailing zero removal on its own. This can be made more
effectively when doing so in double-conversion itself, support for which
was merged upstream in https://github.com/google/double-conversion/pull/149.

This makes the used_exponential_notation outparam unnecessary.

Differential Revision: https://phabricator.services.mozilla.com/D102698
2021-01-29 04:25:53 +00:00
Mike Hommey
cc35b21767 Bug 1686831 - Update double-conversion to upstream revision bf46072. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D103134
2021-01-29 04:25:27 +00:00
Tooru Fujisawa
78aa883d23 Bug 1687428 - Part 28: Store TaggedParserAtomIndex in ParserAtomsTable. r=nbp
As a preparation to remove `index_` field from ParserAtomEntry,
ParserAtomsTable should maintain a map from ParserAtomEntry pointer to
TaggedParserAtomIndex.

Differential Revision: https://phabricator.services.mozilla.com/D102559
2021-01-29 19:43:02 +00:00
Csoregi Natalia
8db3ebb5da Backed out 9 changesets (bug 1686831) for sanitizer failures on nsTSubstring.cpp. CLOSED TREE
Backed out changeset 0e03d508c8d4 (bug 1686831)
Backed out changeset cf6dd6eab427 (bug 1686831)
Backed out changeset 308000f1e14b (bug 1686831)
Backed out changeset c4d470be0184 (bug 1686831)
Backed out changeset 9751918b1ccb (bug 1686831)
Backed out changeset dd9b7e71dcfb (bug 1686831)
Backed out changeset 486a184530a7 (bug 1686831)
Backed out changeset b64d3e89bf68 (bug 1686831)
Backed out changeset dcc6396e455a (bug 1686831)
2021-01-28 09:55:28 +02:00
Mike Hommey
411ab98ac3 Bug 1686831 - Handle trailing zero removal in double-conversion. r=nika,jwalden,Gankra
Bug 608915 switched nsString::AppendFloat to double-conversion, while
handling trailing zero removal on its own. This can be made more
effectively when doing so in double-conversion itself, support for which
was merged upstream in https://github.com/google/double-conversion/pull/149.

This makes the used_exponential_notation outparam unnecessary.

Differential Revision: https://phabricator.services.mozilla.com/D102698
2021-01-27 01:06:34 +00:00
Mike Hommey
f1201eb9e4 Bug 1686831 - Update double-conversion to upstream revision bf46072. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D103134
2021-01-28 05:01:47 +00:00
Jan de Mooij
8a7633e993 Bug 1687441 part 7 - Add NumberEqualsInt64 and NumberIsInt64 to MFBT. r=sg
Tests based on the Int32 tests, with changes/tests for very large/small values.

Differential Revision: https://phabricator.services.mozilla.com/D102724
2021-01-27 15:52:29 +00:00
Jon Coppeard
692d8936cd Bug 1686219 - Add BitSet::SetAll and ResetAll methods r=heycam
These set or clear every bit, taking care not to set trailing unused bits at the end of storage.

Differential Revision: https://phabricator.services.mozilla.com/D101775
2021-01-20 10:03:53 +00:00
Ryan VanderMeulen
0eb8fd796c Bug 1682604 - Update lz4 to 1.9.3. r=sg
Differential Revision: https://phabricator.services.mozilla.com/D99816
2021-01-19 14:13:47 +00:00
Simon Giesecke
55236f5ccb Bug 1685679 - Add do_Init function to allow assignment to InitializedOnce variables. r=janv
Differential Revision: https://phabricator.services.mozilla.com/D101143
2021-01-15 11:23:41 +00:00
Ryan VanderMeulen
691f671c7b Bug 1656894 - Update xxHash to version 0.8.0. r=dthayer
Differential Revision: https://phabricator.services.mozilla.com/D85767
2021-01-12 16:20:32 +00:00
Kartik Gautam
7ae6aea145 Bug 1684173 - Add newline character at end of files when missing r=sylvestre,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D100484
2021-01-07 08:53:08 +00:00
Masatoshi Kimura
fa4cb37973 Bug 1684110 - Stop using some 'A'-functions in mfbt/. r=dmajor
Depends on D100464

Differential Revision: https://phabricator.services.mozilla.com/D100465
2021-01-04 14:40:48 +00:00
Cosmin Sabou
2978aa00a3 Backed out changeset dbed1cdf588f (bug 1684173) for mochitest plain and devtools failures. a=backout DONTBUILD 2020-12-28 00:43:51 +02:00
Kartik Gautam
775cdec032 Bug 1684173 - Add newline character at end of files when missing r=sylvestre
Depends on D100443

Differential Revision: https://phabricator.services.mozilla.com/D100484
2020-12-27 11:43:41 +00:00
Simon Giesecke
7326b3cd81 Bug 1410760 - Fix comment on NotNull<UniquePtr<T>>. r=gerald DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D100322
2020-12-22 11:11:21 +00:00
Ting-Yu Lin
fd531e4c1a Bug 1683227 - Add a note to Maybe::valueOr() about a suboptimal usage. r=sg DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D100071
2020-12-21 18:32:26 +00:00
Alexis Beingessner
70c9b7ef2c Bug 1681546 - rename MOZ_ATOMIC_BITFIELDS methods to Load/Store. r=valentin,necko-reviewers
I was running into issues where these names would conflict with the type's own Get/Set methods
and these names have the added benefit of indicating a bit more that atomic stuff is going on.

Differential Revision: https://phabricator.services.mozilla.com/D99268
2020-12-09 18:14:55 +00:00
Simon Giesecke
8c5c02b43d Bug 1680724 - Add a utility function that converts a T* to a Maybe<T&>. r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D98783
2020-12-08 17:49:22 +00:00
Chris Fronk
a7c75776e8 Bug 1432988 - Add hash for pair types. r=botond
Add HashFunctions for std::pair and CompactPair to mfbt

Differential Revision: https://phabricator.services.mozilla.com/D97865
2020-12-04 21:57:03 +00:00
André Bargull
24afd99138 Bug 1679611 - Part 2: Add test for BufferList::RangeLength. r=sfink
Add tests to cover the cases when the start iterator is in different segments
and within segments at different positions.

Also assert that `mSegment <= aTarget.mSegment`, so it's more easy to see
that `aTarget` mustn't point to an earlier segment.

Depends on D98340

Differential Revision: https://phabricator.services.mozilla.com/D98462
2020-12-02 18:48:22 +00:00
André Bargull
d0ba81b597 Bug 1679611 - Part 1: Use next segment as the starting point. r=sfink
Differential Revision: https://phabricator.services.mozilla.com/D98340
2020-12-02 17:23:07 +00:00
Gerald Squelart
0e7e45ed66 Bug 1500811 - Variant::as()&&, match()&& - r=sg
`as<...>()` on an rvalue variant returns the contained value as rvalue-reference.
`match()` on an rvalue variant forwards the contained value as rvalue-reference.
So now the contained values can be efficiently moved-from.

There are also equivalents for `const&&`, which should be rare.

For `match(2+ matchers)`, the static_assert for same return types has been moved to `Impl::matchN`. Also, it doesn't rely on `FunctionTypeTraits` anymore, which has the added benefit of allowing `auto` in individual matchers.

Differential Revision: https://phabricator.services.mozilla.com/D98050
2020-12-02 00:17:46 +00:00
Gerald Squelart
32c0d65819 Bug 1500811 - Maybe::operator*()&&, ref()&&, value()&& - r=sg,sfink
There are also equivalents for `const&&`, which should be rare.

The small change in `LiveSavedFrameCache::insert` was necessary because `*lookup.framePtr()` now returns an rvalue-ref (as it should).

Differential Revision: https://phabricator.services.mozilla.com/D98049
2020-12-02 00:14:41 +00:00
Mike Hommey
14c1084f72 Bug 1679938 - Don't recurse the build into mfbt for projects that don't need it. r=firefox-build-system-reviewers,mhentges
While all toolkit and js-based projects make use of mfbt, some others,
like tools/crashreporter and tools/update-packaging, don't.

So instead of including mfbt from the top-level directory, include it
from the relevant project top-level mozbuilds.

This allows to remove the dependency on mfbt files in the hash for the
minidump-stackwalk and mar-tools toolchains.

Differential Revision: https://phabricator.services.mozilla.com/D98378
2020-12-01 23:52:03 +00:00
Andrew McCreight
37d53cb0c1 Bug 1680042 - Fix "detroyed" typos. DONTBUILD r=necko-reviewers,geckoview-reviewers,aklotz
Differential Revision: https://phabricator.services.mozilla.com/D98341
2020-12-01 17:35:54 +00:00
Simon Giesecke
dd80614fa0 Bug 1678062 - Remove unnecessary includes. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D97467

Depends on D96561
2020-11-23 16:12:02 +00:00
Simon Giesecke
73d4d57082 Bug 1676357 - Avoid including Layers.h in header files. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D96538

Depends on D96537
2020-11-23 16:09:05 +00:00
Simon Giesecke
971b645fe3 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
Simon Giesecke
8953086494 Bug 1677284 - Move PackingStrategy::Variant implementation to separate header file. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D97075
2020-11-23 15:49:14 +00:00
Simon Giesecke
290b2047d2 Bug 1677284 - Avoid using PackingStrategy::Variant fallback for CPUUsageWatcherError. r=nika,emilio
This also adds an UnusedZeroEnum template to Result.h, which can be used
for specializing UnusedZero for scoped enum types.

Differential Revision: https://phabricator.services.mozilla.com/D97074
2020-11-23 15:49:02 +00:00
Simon Giesecke
a1064e29d7 Bug 1677284 - Use std::aligned_storage_t instead of mozilla::AlignedStorage2 in PackingStrategy::NullIsOk implementation. r=emilio
sizeof(mozilla::AlignedStorage2<T>) is always at least sizeof(uint64_t), which
is bad when T is bool, e.g.

Differential Revision: https://phabricator.services.mozilla.com/D97072
2020-11-23 15:48:53 +00:00
june wilde
27dea98f3f Bug 1658755 - Create MOZ_FIND_AND_VALIDATE Tainting validation macro; r=tjr,sg
Differential Revision: https://phabricator.services.mozilla.com/D90955
2020-11-19 22:45:10 +00:00
Sylvestre Ledru
bebb9f9181 Bug 1519636 - Reformat with clang-format-11 to the Google coding style r=andi,sg,geckoview-reviewers,snorp
It is bringing some minor changes

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D90795
2020-11-18 09:05:59 +00:00
Bogdan Tara
4f5f25592a Backed out changeset 49e43292c047 (bug 1658755) for HashFunctions.h failures CLOSED TREE 2020-11-17 21:50:00 +02:00