gecko-dev/mfbt
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
..
double-conversion Bug 1686831 - Allow double-conversion's ToFixed to handle ±DBL_MAX. r=nika 2021-01-29 16:54:03 +00:00
lz4 Bug 1682604 - Update lz4 to 1.9.3. r=sg 2021-01-19 14:13:47 +00:00
tests Bug 1687391 - Avoid using a spinlock in ThreadSafeWeakReference, r=glandium,mccr8,Gankra,sg 2021-02-03 17:00:04 +00:00
Algorithm.h Bug 1677092: add `constexpr` `AnyOf`. r=sg 2020-11-17 08:30:12 +00:00
Alignment.h Bug 1325771 - mfbt: Reorder parameters for MOZ_ALIGNED_DECL r=jwalden 2020-06-03 18:31:06 +00:00
AllocPolicy.h
AlreadyAddRefed.h
Array.h Bug 1653335 - Replace MakeSpan uses by constructor calls. r=froydnj 2020-08-07 07:49:47 +00:00
ArrayUtils.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
Assertions.cpp Bug 1646171 - Fix vsnprintf complaint in Assertions.cpp r=froydnj 2020-06-16 21:26:16 +00:00
Assertions.h Bug 1652914 - Part 2: Remove unused MOZ_STATIC_ASSERT macro. r=jwalden 2020-07-17 02:48:36 +00:00
AtomicBitfields.h Bug 1681546 - rename MOZ_ATOMIC_BITFIELDS methods to Load/Store. r=valentin,necko-reviewers 2020-12-09 18:14:55 +00:00
Atomics.h
Attributes.h Bug 1651323 - Add MOZ_LIFETIME_BOUND attribute. r=andi 2020-07-10 12:16:13 +00:00
BinarySearch.h
BitSet.h Bug 1686219 - Add BitSet::SetAll and ResetAll methods r=heycam 2021-01-20 10:03:53 +00:00
BloomFilter.h
Buffer.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
BufferList.h Bug 1679611 - Part 2: Add test for BufferList::RangeLength. r=sfink 2020-12-02 18:48:22 +00:00
Casting.h
ChaosMode.cpp
ChaosMode.h
Char16.h
CheckedInt.h
CompactPair.h Bug 1432988 - Add hash for pair types. r=botond 2020-12-04 21:57:03 +00:00
Compiler.h
Compression.cpp Bug 1653335 - Remove uses of MakeSpan in return statements. r=froydnj 2020-08-07 07:42:50 +00:00
Compression.h Bug 1677284 - Move PackingStrategy::Variant implementation to separate header file. r=emilio 2020-11-23 15:49:14 +00:00
DbgMacro.h Bug 1653335 - Replace MakeSpan uses by constructor calls. r=froydnj 2020-08-07 07:49:47 +00:00
DebugOnly.h Bug 1664844 - Add DebugOnly::inspect member function. r=jwalden 2020-09-18 06:33:12 +00:00
DefineEnum.h
DoublyLinkedList.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
EndianUtils.h Bug 1519636 - Reformat recent changes to the Google coding style r=andi 2020-07-04 09:38:43 +00:00
EnumSet.h Bug 1657455 - Give EnumSet an assignment operator r=sg 2020-08-06 20:40:37 +00:00
EnumTypeTraits.h Bug 1656034 - Add UnderlyingValue() to mfbt. - r=froydnj 2020-07-31 23:04:44 +00:00
EnumeratedArray.h
EnumeratedRange.h
FStream.h
FastBernoulliTrial.h
FloatingPoint.cpp
FloatingPoint.h Bug 1687441 part 7 - Add NumberEqualsInt64 and NumberIsInt64 to MFBT. r=sg 2021-01-27 15:52:29 +00:00
FunctionRef.h Bug 1624495 - Support move only arguments such as UniquePtr in FunctionRef. r=botond 2020-05-21 01:56:57 +00:00
FunctionTypeTraits.h
HashFunctions.cpp
HashFunctions.h Bug 1433142 - Add support for hashing enum values. r=jwalden 2020-05-27 23:44:51 +00:00
HashTable.h Bug 1687428 - Part 28: Store TaggedParserAtomIndex in ParserAtomsTable. r=nbp 2021-01-29 19:43:02 +00:00
HelperMacros.h
InitializedOnce.h Bug 1685679 - Add do_Init function to allow assignment to InitializedOnce variables. r=janv 2021-01-15 11:23:41 +00:00
IntegerPrintfMacros.h
IntegerRange.h Bug 1645429 - Use std::reverse_iterator instead of mozilla::ReverseIterator where possible. r=froydnj 2020-06-16 10:14:01 +00:00
IntegerTypeTraits.h
JSONWriter.cpp
JSONWriter.h Bug 1657033 - Use Span<const char> in JSONWriter - r=froydnj 2020-09-14 02:33:20 +00:00
JsRust.h
Latin1.h
Likely.h
LinkedList.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
MacroArgs.h Bug 1666219 - Introduce QM_TRY_INSPECT to avoid unwrapping Result objects where not necessary. r=dom-workers-and-storage-reviewers,janv 2020-09-29 10:57:14 +00:00
MacroForEach.h
MathAlgorithms.h
Maybe.h Bug 1683227 - Add a note to Maybe::valueOr() about a suboptimal usage. r=sg DONTBUILD 2020-12-21 18:32:26 +00:00
MaybeOneOf.h
MemoryChecking.h
MemoryReporting.h
NonDereferenceable.h
NotNull.h Bug 1685677 - Extract functions from CheckTemporaryStorageLimits and rename it to CleanupTemporaryStorage. r=dom-workers-and-storage-reviewers,janv 2021-02-02 17:46:40 +00:00
Opaque.h
OperatorNewExtensions.h
PairHash.h Bug 1432988 - Add hash for pair types. r=botond 2020-12-04 21:57:03 +00:00
Path.h
PodOperations.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
Poison.cpp Bug 1506910 - Initialize the poison page with a static initializer. r=glandium,decoder 2020-10-28 20:38:42 +00:00
Poison.h Bug 1506910 - Initialize the poison page with a static initializer. r=glandium,decoder 2020-10-28 20:38:42 +00:00
RandomNum.cpp
RandomNum.h
Range.h Bug 1656545 - Range cannot support nullptr with non-zero length. r=froydnj 2020-08-20 00:33:52 +00:00
RangedArray.h Bug 1652561 - Remote Win32k calls in nsLookAndFeel::GetFontImpl() r=emilio,geckoview-reviewers,agi,froydnj 2020-07-31 16:21:44 +00:00
RangedPtr.h Bug 1607940 - Stand up webgl.out-of-process:true path. r=handyman,nika,froydnj 2020-07-21 22:56:52 +00:00
ReentrancyGuard.h Bug 1223932 - delete guard object uses from the tree; r=jwalden 2020-07-30 14:22:38 +00:00
RefCountType.h
RefCounted.h Bug 1687391 - Avoid using a spinlock in ThreadSafeWeakReference, r=glandium,mccr8,Gankra,sg 2021-02-03 17:00:04 +00:00
RefPtr.h Bug 1676357 - Avoid including Layers.h in header files. r=botond 2020-11-23 16:09:05 +00:00
Result.h Bug 1677284 - Move PackingStrategy::Variant implementation to separate header file. r=emilio 2020-11-23 15:49:14 +00:00
ResultExtensions.h Bug 1665850 - Switch JS to use non-reference errors with mozilla::Result. r=jandem 2020-09-21 13:14:10 +00:00
ResultVariant.h Bug 1677284 - Move PackingStrategy::Variant implementation to separate header file. r=emilio 2020-11-23 15:49:14 +00:00
ReverseIterator.h Bug 1646391 - Simplify ReverseIterator. r=froydnj 2020-06-18 07:49:16 +00:00
RollingMean.h
SHA1.cpp
SHA1.h
SPSCQueue.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
STYLE
Saturate.h
ScopeExit.h Bug 1223932 - delete guard object uses from the tree; r=jwalden 2020-07-30 14:22:38 +00:00
Scoped.h Bug 1223932 - delete guard object uses from the tree; r=jwalden 2020-07-30 14:22:38 +00:00
SegmentedVector.h
SharedLibrary.h
SmallPointerArray.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
Span.h Bug 1678062 - Remove unnecessary includes. r=andi 2020-11-23 16:12:02 +00:00
SplayTree.h
Sprintf.h
StaticAnalysisFunctions.h
TaggedAnonymousMemory.cpp
TaggedAnonymousMemory.h
Tainting.h Bug 1658755 - Create MOZ_FIND_AND_VALIDATE Tainting validation macro; r=tjr,sg 2020-11-19 22:45:10 +00:00
TemplateLib.h
TextUtils.h
ThreadLocal.h Bug 1666216 - Enable ScopedLogExtraInfo logging. r=dom-workers-and-storage-reviewers,janv 2020-09-30 08:24:18 +00:00
ThreadSafeWeakPtr.h Bug 1687391 - Avoid using a spinlock in ThreadSafeWeakReference, r=glandium,mccr8,Gankra,sg 2021-02-03 17:00:04 +00:00
ToString.h
TsanOptions.h no bug - TSan library excludes miss libdconfsettings. r=Gankro 2020-10-14 19:35:24 +00:00
Tuple.h
TypeTraits.h
TypedEnumBits.h
Types.h
UniquePtr.h Bug 1677409 - MOZ_ASSERT(not null) in UniquePtr::operator* - r=sg 2020-11-16 20:11:24 +00:00
UniquePtrExtensions.cpp
UniquePtrExtensions.h Bug 1519636 - Reformat recent changes to the Google coding style r=andi 2020-07-04 09:38:43 +00:00
Unused.cpp
Unused.h
Utf8.cpp
Utf8.h
Variant.h Bug 1500811 - Variant::as()&&, match()&& - r=sg 2020-12-02 00:17:46 +00:00
Vector.h Bug 1665462 - Add moving Vector::appendAll(Vector&&) overload. r=jwalden 2020-10-29 19:41:43 +00:00
WeakPtr.h Bug 1672072 - P12. Add constructor for WeakPtr(RefPtr). r=sg 2020-11-13 04:21:17 +00:00
WindowsVersion.h Bug 1684110 - Stop using some 'A'-functions in mfbt/. r=dmajor 2021-01-04 14:40:48 +00:00
WrappingOperations.h
XorShift128PlusRNG.h
fallible.h Bug 1668421 - Fix a commeint in fallible.h r=glandium 2020-10-05 00:50:31 +00:00
moz.build Bug 1682604 - Update lz4 to 1.9.3. r=sg 2021-01-19 14:13:47 +00:00