Commit Graph

2527 Commits

Author SHA1 Message Date
Christian Holler (:decoder)
700e5b34bc Bug 1875252 - Add MOZ_ASSERT_DEBUG_OR_FUZZING and use for Range/RangedPtr. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D198940
2024-02-06 21:31:19 +00:00
Emilio Cobos Álvarez
4c3cd32102 Bug 1878108 - Annotate FunctionRef constructor with MOZ_LIFETIME_BOUND. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D200433
2024-02-06 13:00:40 +00:00
Emilio Cobos Álvarez
e445a2bc43 Bug 1878108 - Replace custom MOZ_LIFETIME_BOUND with built-in. r=nika,glandium
The built-in version is better as it also allows annotating particular
parameters (it not only applies to method declarations).

Differential Revision: https://phabricator.services.mozilla.com/D200432
2024-02-06 13:00:39 +00:00
pstanciu
1200f7991d Backed out 2 changesets (bug 1878108) for causing sm bustages in Attributes.h. CLOSED TREE
Backed out changeset 05e2d2bc1260 (bug 1878108)
Backed out changeset bb356c39c0e2 (bug 1878108)
2024-02-06 13:11:26 +02:00
Emilio Cobos Álvarez
b5234811b5 Bug 1878108 - Annotate FunctionRef constructor with MOZ_LIFETIME_BOUND. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D200433
2024-02-06 08:51:51 +00:00
Emilio Cobos Álvarez
02f7ec8f63 Bug 1878108 - Replace custom MOZ_LIFETIME_BOUND with built-in. r=nika,glandium
The built-in version is better as it also allows annotating particular
parameters (it not only applies to method declarations).

Differential Revision: https://phabricator.services.mozilla.com/D200432
2024-02-06 08:51:50 +00:00
Emilio Cobos Álvarez
f67e589a85 Bug 1877672 - Make FunctionRef a MOZ_TEMPORARY_CLASS. r=nika
This prevents it from being used in the foot-gunny way described in
comment 0.

This in turn allows us to add a constructor for temporary callables.

Turns out we only had test usages of non-temporary FunctionRefs, so this
is much simpler than the initial approach I considered.

Fix the tests to keep compiling, and add a test for the new constructor.

Differential Revision: https://phabricator.services.mozilla.com/D200157
2024-02-02 19:21:20 +00:00
Jan Varga
9cb0b76439 Bug 1873140 - Avoid using invalid enum values during EnumSet iteration; r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D197824
2024-02-02 09:43:10 +00:00
Jan Varga
ee30d0fa58 Bug 1873140 - Align internal methods to use UpperCamelCase in EnumSet implementation; r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D197781
2024-02-02 09:43:10 +00:00
Jan Varga
8518e80c4a Bug 1873140 - Align index data types in EnumSet implementation; r=glandium
size_t is already correctly used in many places, only ConstIterator uses
uint32_t for position tracking. It would be better to align these data types
and use size_t everywhere.

Differential Revision: https://phabricator.services.mozilla.com/D197774
2024-02-02 09:43:10 +00:00
maazis
e59c20c0ea Bug 1860247 - Poison.cpp: do not use 'else' after 'return'. r=sylvestre
Differential Revision: https://phabricator.services.mozilla.com/D198695
2024-01-31 12:19:32 +00:00
Kelsey Gilbert
2bc302ee20 Bug 1873769 - Add TempPtrToSetter(UniquePtr<T>*) -> T**-ish for safe out-ptr RAII. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D198087
2024-01-26 21:05:30 +00:00
Mathew Hodson
1a67b423e3 Bug 1874533 - Fix build warning for noreturn function on Windows r=glandium
warning: function declared 'noreturn' should not return
[-Winvalid-noreturn]

Differential Revision: https://phabricator.services.mozilla.com/D198485
2024-01-18 11:48:49 +00:00
Mike Hommey
6e1293b5f7 Bug 1718516 - Fix AddToHash of 64-bits numbers on 32-bits platforms. r=nika,anba
Differential Revision: https://phabricator.services.mozilla.com/D197302
2024-01-09 01:48:31 +00:00
Jed Davis
7cb8ed130b Bug 1873131 - Add some assertions to UniqueFileHandle. r=nika,tsmith
Differential Revision: https://phabricator.services.mozilla.com/D197748
2024-01-06 02:54:20 +00:00
Tom Marble
4742739586 Bug 1859908 - convert .ini manifests to .toml: batch 20 marionette.ini r=jmaher,webdriver-reviewers,necko-reviewers,application-update-reviewers,search-reviewers,sessionstore-reviewers,places-reviewers,dom-storage-reviewers,bytesized,kershaw,whimboo,dao,jesup,Standard8
Differential Revision: https://phabricator.services.mozilla.com/D197206
2024-01-02 15:31:51 +00:00
Benjamin Peterson
fbd03780ee Bug 1866606 - Remove MozTaggedMemoryIsSupported. r=jld
MozTaggedMemoryIsSupported doesn't work under ASAN because it tries to prctl the
nullptr page. It should be harmless to simply call prctl and ignore the error.

Depends on D195064

Differential Revision: https://phabricator.services.mozilla.com/D195065
2023-12-23 03:36:53 +00:00
Benjamin Peterson
54b88de235 Bug 1866606 - Support TaggedAnonymousMemory on all Linux r=jld
Change ANDROID ifdefs to XP_LINUX and allow PR_SET_VMA in the sandbox.

Differential Revision: https://phabricator.services.mozilla.com/D195064
2023-12-23 03:36:52 +00:00
Ray Kraesig
149e60c039 Bug 1869053 - [2/5] eliminate all implicit conversions between RefPtr and AgileReference r=handyman,win-reviewers
Remove all of the code in `RefPtr` and `AgileReference` that allowed
for implicitly converting between the two in via constructors or the
assignment operator.

Replace these with a slightly-less-convenient-but-substantially-more-
explicit `Resolve` function family.

(This also eliminates the dependency that `class RefPtr` had on
`class AgileReference`.)

Differential Revision: https://phabricator.services.mozilla.com/D196365
2023-12-21 19:46:54 +00:00
Sandor Molnar
a1bf4a20be Backed out 5 changesets (bug 1869053) for causing build bustages. CLOSED TREE
Backed out changeset 0a1ec143adbc (bug 1869053)
Backed out changeset 687e7683752c (bug 1869053)
Backed out changeset 59d9b136a3f2 (bug 1869053)
Backed out changeset 6ab85972356d (bug 1869053)
Backed out changeset 6addaa9e88be (bug 1869053)
2023-12-20 19:42:52 +02:00
Ray Kraesig
3665ce2e0b Bug 1869053 - [2/5] eliminate all implicit conversions between RefPtr and AgileReference r=handyman,win-reviewers
Remove all of the code in `RefPtr` and `AgileReference` that allowed
for implicitly converting between the two in via constructors or the
assignment operator.

Replace these with a slightly-less-convenient-but-substantially-more-
explicit `Resolve` function family.

(This also eliminates the dependency that `class RefPtr` had on
`class AgileReference`.)

Differential Revision: https://phabricator.services.mozilla.com/D196365
2023-12-20 17:06:21 +00:00
serge-sans-paille
870a5f2055 Bug 1869497 - Introduce MOZ_NAKED to centralize all attributes we expect from naked r=glandium,win-reviewers,mhowell
In the fx codebase, we tend to use __attribute__((naked)) for plain
assembly functions with a C interface. Instrumenting these functions can
mess up this assembly, so we conservatively also want to prevent
instrumentation.

Differential Revision: https://phabricator.services.mozilla.com/D196154
2023-12-15 09:26:48 +00:00
Jon Coppeard
b9ade095dd Bug 1869256 - Add move assignment operator for SegmentedVector r=mccr8
The patch implements the move assigment operator in terms of the move
constructor. This fulfills the requirements for std::swap to compile.

Differential Revision: https://phabricator.services.mozilla.com/D196035
2023-12-11 17:06:08 +00:00
Norisz Fay
af9c87c3e9 Backed out changeset d404928e57cf (bug 1869256) for causing SM bustages on TestSegmentedVector.cpp CLOSED TREE 2023-12-11 18:39:48 +02:00
Jon Coppeard
4f208d4ee5 Bug 1869256 - Add move assignment operator for SegmentedVector r=mccr8
The patch implements the move assigment operator in terms of the move
constructor. This fulfills the requirements for std::swap to compile.

Differential Revision: https://phabricator.services.mozilla.com/D196035
2023-12-11 16:01:35 +00:00
Yannis Juglaret
865f64bb14 Bug 1866562 - Make MSVC-style architecture constants consistent in mingwclang builds. r=tjr
This patch makes mingwclang builds compile with -include _mingw.h. This
makes MSVC-style constants defined from the start of C++ files rather
than at the point where they start including files that depend on
_mingw.h. Thus, mingwclang builds will behave more closely to regular
builds, potentially avoiding future backouts for mingwclang build
failures and/or successful but incorrect mingwclang builds.

Differential Revision: https://phabricator.services.mozilla.com/D195662
2023-12-11 11:01:34 +00:00
Paul Bone
4f15ab146d Bug 1864828 - pt 1. Move operators to create literals with units into mfbt/ r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D194950
2023-12-11 11:01:33 +00:00
Sylvestre Ledru
ef35fa7374 Bug 1519636 - Reformat recent changes to the Google coding style r=emilio,media-playback-reviewers,padenot
clang-format version 17.0.6 (taskcluster-QueHFUviQeyM8Y7r_d7MQQ)

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D195397
2023-12-04 10:09:36 +00:00
Iulian Moraru
d6a3f6a6bd Backed out 2 changesets (bug 1864828) for causing build bustages on TestJemalloc.cpp. CLOSED TREE
Backed out changeset c1b4a8307702 (bug 1864828)
Backed out changeset ba88f119b1fc (bug 1864828)
2023-11-30 07:19:04 +02:00
Paul Bone
e1f95a2d2b Bug 1864828 - pt 1. Move operators to create literals with units into mfbt/ r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D194950
2023-11-30 01:17:55 +00:00
Gabriele Svelto
bf06bd8102 Bug 1866716 - Fixup for WasiAtomic.h CLOSED TREE
Differential Revision: https://phabricator.services.mozilla.com/D194875
2023-11-28 14:00:34 +00:00
Gabriele Svelto
2b83d1392f Bug 1866716 - Remove unneeded headers from Atomics.h r=glandium,profiler-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D194722
2023-11-28 13:14:49 +00:00
Paul Adenot
643afe2840 Bug 1814600 - Annotate abort calls as __attribute__((nomerge)) to get clearer line number when crashing on assertion failure. r=gsvelto,yjuglaret
Differential Revision: https://phabricator.services.mozilla.com/D168960
2023-11-10 13:54:54 +00:00
Tooru Fujisawa
3cea1dc675 Bug 1850723 - Make mozilla::Result constructor take another result with convertible value. r=emilio,glandium
Differential Revision: https://phabricator.services.mozilla.com/D191538
2023-11-03 08:13:19 +00:00
Tooru Fujisawa
42681ab6e5 Bug 1850710 - Add PackingStrategy::ZeroIsEmptyError for mozilla::Result. r=emilio,glandium
In order to use mozilla::Result with integral, pointer, or enum, without
consuming extra space or introducing extra instruction, reserve 0 as error value
in the underlying representation.

Differential Revision: https://phabricator.services.mozilla.com/D191537
2023-11-03 08:13:18 +00:00
Sandor Molnar
e8f8acdf36 Backed out 4 changesets (bug 1850710, bug 1850723, bug 1489008) for causing failures on mfbt/tests/TestResult.cpp
Backed out changeset 7398cacb1ad3 (bug 1850723)
Backed out changeset 3ecdc29f9faf (bug 1850710)
Backed out changeset 0be8a44ae0b0 (bug 1489008)
Backed out changeset e1545a8ce2d8 (bug 1489008)
2023-11-03 06:00:46 +02:00
Tooru Fujisawa
6eecb51843 Bug 1850723 - Make mozilla::Result constructor take another result with convertible value. r=emilio,glandium
Differential Revision: https://phabricator.services.mozilla.com/D191538
2023-11-03 02:14:16 +00:00
Tooru Fujisawa
b2945c75bf Bug 1850710 - Add PackingStrategy::ZeroIsEmptyError for mozilla::Result. r=emilio,glandium
In order to use mozilla::Result with integral, pointer, or enum, without
consuming extra space or introducing extra instruction, reserve 0 as error value
in the underlying representation.

Differential Revision: https://phabricator.services.mozilla.com/D191537
2023-11-03 02:14:16 +00:00
Jed Davis
850869a8df Bug 1595453 - Allow serializing zero-length ByteBufs. r=nika
If someone tried to serialize a zero-size ByteBuf, it could add a
zero-length segment to the `BufferList` and cause an assertion failure
later when trying to send the message.  This patch makes it a no-op (and
frees the supplied buffer, because the BufferList becomes its owner).

We previously asserted against adding zero-*capacity* segments (likely
also zero size, but possibly not) with WriteBytesZeroCopy, but only on
debug builds, and it was likely happening on release builds despite
that.  That case is now allowed.

Also, error handling for `BufferList::WriteBytesZeroCopy` has been
improved.  (This doesn't affect `Pickle` because it's using infallible
allocation, and no other instances of `BufferList` seem to use
`WriteBytesZeroCopy` at this time.)

Differential Revision: https://phabricator.services.mozilla.com/D192531
2023-11-02 18:05:31 +00:00
Tooru Fujisawa
93738a7432 Bug 1860451 - Add documentation for the hash inequality in HashPolicy::match. r=mgaudet DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D191591
2023-10-31 20:41:17 +00:00
Andreas Pehrson
76a7426f90 Bug 1844181 - Add memory synchronization to SPSCQueue's thread id reset methods. r=decoder,padenot,handyman
Without this, the necessary synchronization must be provided externally.

This fixes the memory order in the following case of changing producer thread:
- Thread A does SPSCQueue::Enqueue
  - non-atomic write into the ring buffer, at memory location X
  - mWriteIndex.load(relaxed)
  - mWriteIndex.store(release)
- Producer thread is switched to B, no external memory order synchronization is
  provided, but thread B is guaranteed to run after thread A has finished its
  Enqueue task.
- Thread B does SPSCQueue::Enqueue
  - mWriteIndex.load(relaxed)
  - mWriteIndex.store(release)
- Thread C does SPSCQueue::Dequeue
  - mWriteIndex.load(acquire)
  - non-atomic read from the ring buffer, at memory location X

In this scenario, there is no memory synchronization between threads A and B,
and therefore the non-atomic read on C is a data race, and flagged as such by
TSAN.

A similar scenario can be applied to changing the consumer thread, if first A
enqueues, then B dequeues, then C dequeues. However, since Dequeue doesn't
necessarily (MoveOrCopy) do non-atomic writes to the ring buffer, and more
importantly, since Enqueue doesn't do non-atomic reads from the ring buffer,
this is less of a problem.

Differential Revision: https://phabricator.services.mozilla.com/D190084
2023-10-09 13:02:58 +00:00
Daniel Holbert
aab09ae7db Bug 1856746: Extend already_AddRefed documentation to mention a case where it makes sense as a function parameter. r=nika
DONTBUILD because comment-only

Differential Revision: https://phabricator.services.mozilla.com/D189987
2023-10-04 18:49:03 +00:00
Yannis Juglaret
b24022bb02 Bug 1777960 - Patch msctf.dll to prevent a crash with ZoneAlarm Anti-Keylogger. r=gstoll,win-reviewers
Starting with Windows 11 22H2, Microsoft has made internal changes in
msctf.dll. The TF_Notify function, also known as CtfImmNotify from
imm32.dll, uses a new convention for its third argument. These changes
are incompatible with current versions of ZoneAlarm Anti-Keylogger,
resulting in crashes in our main process.

This patch converts messages forwarded by ZoneAlarm Anti-Keylogger to
the new convention. If we detect the product and an incompatible version
of msctf.dll, then we hook TF_Notify and detect any message using the
old convention, and convert it to the new convention.

Differential Revision: https://phabricator.services.mozilla.com/D189518
2023-10-03 15:24:47 +00:00
Jan Varga
c458754592 Bug 1855134 - Move existing MOZ_TRY macros to a dedicated header file; r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D189226
2023-09-28 20:46:07 +00:00
Nika Layzell
9411a9ed15 Bug 1851045 - Part 4: Add a NeverDestroyed helper type to MFBT for static local members, r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D189248
2023-09-27 19:14:16 +00:00
Mike Hommey
194571f479 Bug 1854305 - Don't enable thread safety annotations before clang 11. r=nika
Arbitrary capability names weren't allowed until clang 11, and while we
could probably make things somehow work with earlier versions of clang,
it's not that interesting, as long as we keep the thread safety analysis
running with newer versions of clang on our CI (which we obviously do).

Differential Revision: https://phabricator.services.mozilla.com/D188791
2023-09-21 20:42:33 +00:00
Masatoshi Kimura
84f3eeec16 Bug 1844908 - Remove unused Windows version check functions. r=handyman
Differential Revision: https://phabricator.services.mozilla.com/D184309
2023-08-22 19:11:41 +00:00
Emilio Cobos Álvarez
9b5ea61bed Bug 1849386 - Use consistent pointer hashing. r=nika,xpcom-reviewers
* DefaultHasher<T*> used HashGeneric<size_t>
 * nsPtrHashKey<T> used HashGeneric<T*>
 * nsRefPtrHashKey<T> used NS_PTR_TO_UINT32 >> 2

Make sure to always use HashGeneric<T*> for these.

Remove unused / redundant hash keys.

Differential Revision: https://phabricator.services.mozilla.com/D186553
2023-08-18 22:35:40 +00:00
Steve Fink
35da906445 Bug 1838827 - HashTable::reserve() should always report an error on failure r=jandem
Differential Revision: https://phabricator.services.mozilla.com/D185191
2023-08-03 19:16:02 +00:00
Mike Hommey
4a05ff7242 Bug 1844484 - Override the symbol used by compilers in vtables for pure virtual methods. r=firefox-build-system-reviewers,ahochheiden
In bug 1839743, we made the build system prefer packed relative
relocations to elfhack when both the system libc and linker support
them. Unfortunately, while that covers most of the benefits from
elfhack, it doesn't cover bug 651892.

To cover it, we make every C++ executable contain its own copy of
the symbol, so that all relocations related to it become relative.

And because this is actually (slightly) beneficial on macos, and because
it's also an advantage to have our own abort called rather than the
system's, we apply the same to all platforms.

Differential Revision: https://phabricator.services.mozilla.com/D184068
2023-08-02 06:12:51 +00:00