Граф коммитов

1791 Коммитов

Автор SHA1 Сообщение Дата
Mike Hommey b60c5c12e4 Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj
Ideally, we'd want the function to stay in Assertions.cpp, but that's
only part of MFBT proper, and that doesn't have access to WalkTheStack
like MOZ_CRASH has from being in Assertion.h, when included from Gecko
code. Moving WalkTheStack to mozglue, putting it close together with
MozStackWalk would be prefered, but that causes problems linking MFBT
tests (which don't have access to mozglue), and other things.

Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to
Assertions.h is much simpler. Since it's essentially the same as
MOZ_CRASH, except it allows non-literal strings, we can make it inlined,
and leave it to the compiler to drop the filename argument when it's not
used.

Differential Revision: https://phabricator.services.mozilla.com/D11718

--HG--
extra : moz-landing-system : lando
2018-11-14 22:35:23 +00:00
Dorel Luca 00c7bf05f9 Backed out 4 changesets (bug 1496503) for Valgrind bustage. CLOSED TREE
Backed out changeset 033a89b3e00d (bug 1496503)
Backed out changeset a0f255b660ce (bug 1496503)
Backed out changeset 963d8ac1cfee (bug 1496503)
Backed out changeset 43e44f8439ec (bug 1496503)
2018-11-14 19:00:29 +02:00
Coroiu Cristina 4a2f58dbb0 Merge mozilla-central to autoland a=merge on a CLOSED TREE 2018-11-14 11:58:07 +02:00
Mike Hommey 6345b0d7d9 Bug 1496503 - Change the rust panic hook to delegate to Gecko's crash code. r=froydnj
The current rust panic hook keeps a string for the crash reporter, and
goes on calling the default rust panic hook, which prints out a crash
stack...  when RUST_BOOTSTRAP is set *and* when that works. Notably, on
both mac and Windows, it only really works for local builds, but fails
for debug builds from automation, although on automation itself, we also
do stackwalk from crash minidumps, which alleviates the problem.
Artifact debug builds are affected, though.

More importantly, C++ calls to e.g. MOZ_CRASH have a similar but
different behavior, in that they dump a stack trace on debug builds, by
default (with exceptions, see below for one). The format of those stack
traces is understood by the various fix*stack*py scripts under
tools/rb/, that are used by the various test harnesses both on
automation and locally.

Additionally, the current rust panic hook, as it calls the default rust
panic hook, ends up calling abort() on non-Windows platforms, which ends
up being verbosely redirected to mozalloc_abort per
https://dxr.mozilla.org/mozilla-central/rev/237e4c0633fda8e227b2ab3ab57e417c980a2811/memory/mozalloc/mozalloc_abort.cpp#79
which then calls MOZ_CRASH. Theoretically, /that/ would also print a
stack trace, but doesn't because currently the stack trace printing code
lives in libxul, and MOZ_CRASH only calls it when compiled from
libxul-code, which mozalloc_abort is not part of.

With this change, we make the rust panic handler call back into
MOZ_CRASH directly. This has multiple advantages:
- This is more consistent cross-platforms (Windows is not special
anymore).
- This is more consistent between C++ and rust (stack traces all look
the same, and can all be post-processed by fix*stack*py if need be)
- This is more consistent in behavior, where debug builds will show
those stack traces without caring about environment variables.
- It demangles C++ symbols in rust-initiated stack traces (for some
reason that didn't happen with the rust panic handler)

A few downsides:
- the loss of demangling for some rust symbols.
- the loss of addresses in the stacks, although they're not entirely
useful
- extra empty lines.

The first should be fixable later one. The latter two are arguably
something that should be consistent across C++ and rust, and should be
changed if necessary, independently of this patch.

Depends on D11719

Differential Revision: https://phabricator.services.mozilla.com/D11720

--HG--
extra : moz-landing-system : lando
2018-11-14 08:46:51 +00:00
Mike Hommey 2265a4a2b9 Bug 1496503 - Use MOZ_CrashOOL in MOZ_CrashPrintf. r=froydnj
Because we don't really need all this repetition.

Depends on D11718

Differential Revision: https://phabricator.services.mozilla.com/D11719

--HG--
extra : moz-landing-system : lando
2018-11-14 08:47:21 +00:00
Mike Hommey 9ccfce71d6 Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj
Ideally, we'd want the function to stay in Assertions.cpp, but that's
only part of MFBT proper, and that doesn't have access to WalkTheStack
like MOZ_CRASH has from being in Assertion.h, when included from Gecko
code. Moving WalkTheStack to mozglue, putting it close together with
MozStackWalk would be prefered, but that causes problems linking MFBT
tests (which don't have access to mozglue), and other things.

Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to
Assertions.h is much simpler. Since it's essentially the same as
MOZ_CRASH, except it allows non-literal strings, we can make it inlined,
and leave it to the compiler to drop the filename argument when it's not
used.

Differential Revision: https://phabricator.services.mozilla.com/D11718

--HG--
extra : moz-landing-system : lando
2018-11-14 08:47:44 +00:00
Coroiu Cristina d0047119b0 Backed out 4 changesets (bug 1496503) for xpcshell failures at toolkit/crashreporter/test/unit/test_crash_rust_panic.js on a CLOSED TREE
Backed out changeset cfeee3d5ed6a (bug 1496503)
Backed out changeset 164a5a49fd25 (bug 1496503)
Backed out changeset d0b6c1fc149d (bug 1496503)
Backed out changeset bfb4ee856c71 (bug 1496503)
2018-11-14 09:00:06 +02:00
Mike Hommey 661cef9f2b Bug 1496503 - Use MOZ_CrashOOL in MOZ_CrashPrintf. r=froydnj
Because we don't really need all this repetition.

Depends on D11718

Differential Revision: https://phabricator.services.mozilla.com/D11719

--HG--
extra : moz-landing-system : lando
2018-11-13 23:47:23 +00:00
Mike Hommey 5934f74cf3 Bug 1496503 - Move MOZ_CrashOOL to Assertions.h. r=froydnj
Ideally, we'd want the function to stay in Assertions.cpp, but that's
only part of MFBT proper, and that doesn't have access to WalkTheStack
like MOZ_CRASH has from being in Assertion.h, when included from Gecko
code. Moving WalkTheStack to mozglue, putting it close together with
MozStackWalk would be prefered, but that causes problems linking MFBT
tests (which don't have access to mozglue), and other things.

Overall, this was too deep a rabbit hole, and moving MOZ_CrashOOL to
Assertions.h is much simpler. Since it's essentially the same as
MOZ_CRASH, except it allows non-literal strings, we can make it inlined,
and leave it to the compiler to drop the filename argument when it's not
used.

Differential Revision: https://phabricator.services.mozilla.com/D11718

--HG--
extra : moz-landing-system : lando
2018-11-13 23:47:36 +00:00
David Major a5d9b4e73a Bug 1506763: Mark [Enumerated]Array constructors as constexpr. r=froydnj
--HG--
extra : rebase_source : e3f7905aaf84335ca4e17208fcbfbee2ac62901d
2018-11-13 12:34:45 -05:00
Jeff Walden f2196f8c8f Bug 1503086 - Initialize all SourceBufferHolders with a fallible function that in all cases assumes ownership of given-ownership data. r=tcampbell, r=bz, r=mrbkap on some finicky worker code lightly touched here
--HG--
extra : rebase_source : 94b1a13dc03a7f1a5d07a2c665fdc0cde162d411
2018-10-23 12:27:16 -07:00
Brian Hackett cbe146ecec Bug 1503639 Part 1 - Handle unrecorded waits internally, r=lsmyth.
--HG--
extra : rebase_source : 1871f242021d0bd84a096f9e12e8d48c1063ef49
2018-10-31 10:17:05 -10:00
Steve Fink b5b78d5525 Bug 1321014 - Respect MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS for the purpose of identifying GC types and pointers, r=jonco
--HG--
extra : topic : hazard
extra : rebase_source : bdaf0ae60a6b45c9d44294aa9c2bc31a8811bdbd
extra : source : c7b32ffa822e353b5479b6224194e3cdfd135e65
2018-07-20 18:36:20 -07:00
Brian Hackett bae5179cfb Bug 1502207 Part 2 - Fix useUse new atomic access API in Gecko, r=froydnj.
--HG--
extra : rebase_source : 2b9b5bb77fb53cd9f028912b4ba54136c9066447
2018-10-25 11:42:18 -10:00
Brian Hackett 55571f2bbf Bug 1502207 Part 1 - Specify the address of atomic values when recording ordered atomic accesses, r=froydnj.
--HG--
extra : rebase_source : 3260b427eeac3cc44d6e74df1a6da366da85aeda
2018-10-25 11:41:04 -10:00
Chris Martin 6f57bf69b4 Bug 1402282 - Move CSPRNG logic to common area r=froydnj
The logic in JSMath for generating cryptographically-secure
pseudorandom numbers without NSS is independently useful, and so
it's been moved to a common area.

It will eventually be used for generated random arena ids.

Differential Revision: https://phabricator.services.mozilla.com/D8597

--HG--
extra : moz-landing-system : lando
2018-10-25 18:00:15 +00:00
Gerald Squelart 964e9708ac Bug 1054115 - Maybe::map and apply now take the function through a forwarding reference - r=froydnj
No need to specify the return type in C++14, this save some less-readable
decltype&declval work.

And we make sure to std::forward the function object before invoking it, to
preserve its const and l/rvalue qualifiers.

Differential Revision: https://phabricator.services.mozilla.com/D9780

--HG--
extra : moz-landing-system : lando
2018-10-25 17:20:02 +00:00
Noemi Erli 06a8cd8e3c Backed out changeset bee1c344cb47 (bug 1491909) for failures in browser/components/extensions/test/xpcshell/test_ext_geckoProfiler_control.js 2018-10-24 04:23:13 +03:00
Cosmin Sabou de8cde8599 Backed out changeset b283e9a224e0 (bug 1402282) build bustages on RandomNum.cpp. 2018-10-24 03:00:42 +03:00
Cosmin Sabou 035c4c098e Bug 1402282 - Move CSPRNG logic to common area r=froydnj
--HG--
extra : rebase_source : a273743c193ebfb054105949068578a4a57cf3a0
2018-10-24 02:49:33 +03:00
Denis Palmeiro fc930ad16f Bug 1491909 - Add an AllocPolicy to mozilla::JSONWriter r=jwalden,mstange
JSONWriter currently calls new and delete indirectly through mozilla::MakeUnique to allocate a buffer.  Becuase of this, the methods of this class cannot be invoked within Spidermonkey due to https://searchfox.org/mozilla-central/source/config/check_vanilla_allocations.py#6-14.  Therefore, JSONWriter needs an AllocPolicy template parameter so that the allocation and deallocation routines can be changed to match the JS AllocPolicy when invoked within SpiderMonkey.

Differential Revision: https://phabricator.services.mozilla.com/D7279

--HG--
extra : moz-landing-system : lando
2018-10-23 20:46:31 +00:00
Brian Hackett 3c4231fd5b Bug 1488808 Part 10 - Notify the record/replay system when a message pump thread blocks after diverging from the recording, r=froydnj.
--HG--
extra : rebase_source : c82088f0903b618caee3b0366a8c681ff6f445a1
2018-10-17 10:05:02 -06:00
Steve Fink 2fbae0eae1 Backed out changeset c7b32ffa822e (bug 1321014) on a CLOSED TREE
--HG--
extra : amend_source : 1a8f1a344d56d70673ec9977c62847ebb147f4ca
2018-10-16 14:35:48 -07:00
Steve Fink 0db11faae6 Bug 1321014 - Respect MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS for the purpose of identifying GC types and pointers, r=jonco
--HG--
extra : rebase_source : 91efd92b5febca961c2edaeb12ef37770936ee79
2018-07-20 18:36:20 -07:00
Jeff Walden 73790f54e4 Bug 1493441 - Allow ScriptSource to store UTF-8 script data in addition to UTF-16 script data (but don't create any UTF-8-backed ScriptSources yet). r=tcampbell 2018-09-29 17:28:31 -04:00
Botond Ballo 63264c57f4 Bug 1498767 - Add missing MFBT tests to testing/cppunittest.py. r=froydnj
Also add a comment to mfbt/tests/moz.build to remind people that tests
need to be added to testing/cppunittest.py.

Differential Revision: https://phabricator.services.mozilla.com/D8664

--HG--
extra : moz-landing-system : lando
2018-10-13 21:54:27 +00:00
twsmith ca53c9933c Bug 1494207 - Add MOZ_CRASH_WRITE_ADDR to avoid ILL with UBSan. r=nfroyd 2018-10-04 14:52:16 -07:00
Jed Davis 08bc6b93f0 Bug 1493045 - Assert thread-safety when destroying WeakPtr r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D7353

--HG--
extra : moz-landing-system : lando
2018-10-03 16:41:10 +00:00
Botond Ballo 9492fcbd94 Bug 1494671 - Make the CompositorHitTestInfo globals constexpr. r=froydnj
Depends on D7323

Differential Revision: https://phabricator.services.mozilla.com/D7324

--HG--
extra : moz-landing-system : lando
2018-10-01 20:09:10 +00:00
Botond Ballo 10780a46ba Bug 1494671 - Make MOZ_AssertAssignmentTest() constexpr. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D7323

--HG--
extra : moz-landing-system : lando
2018-10-01 19:53:06 +00:00
Daniel Zielas adc55f89c0 Bug 1420996 - EnumSet enhancement. r=botond,Waldo
--HG--
extra : rebase_source : 0beee78e60e1432bfceeb04219efc62730f14475
extra : histedit_source : fdc75700e78e5e5a8b0f40a83192a9c0a0f24b85
2018-09-25 20:47:38 +02:00
Margareta Eliza Balazs ffe6eaf2f0 Merge inbound to mozilla-central. a=merge 2018-09-25 12:42:09 +03:00
Mike Hommey 0121cc3b9f Backout changeset b31288fb959a (bug 1443265). r=froydnj
Because it never actually had an effect until clang 7, where it reveals
the tree is not ready for it. See details in bug 1492743.
2018-09-25 10:54:07 +09:00
Mike Hommey b487ebbc58 Bug 1493093 - Allow to relax MOZ_NON_TEMPORARY_CLASS for some specific constructors r=andi
Differential Revision: https://phabricator.services.mozilla.com/D6566

--HG--
extra : moz-landing-system : lando
2018-09-24 22:47:12 +00:00
Andrew McCreight c7a5590610 Bug 1493781 - Add a comment to IsBaseOf indicating that it is reflexive r=froydnj
IsBaseOf<A, A> holds despite the fact that a class is not actually a
base class of itself.

Differential Revision: https://phabricator.services.mozilla.com/D6694

--HG--
extra : moz-landing-system : lando
2018-09-24 19:58:16 +00:00
Nathan Froyd bc5c879186 Bug 1486400 - add task dispatch/run delays for ChaosMode; r=jesup 2018-09-19 12:02:09 -04:00
Noemi Erli e6319bab61 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-09-14 01:18:29 +03:00
Xidorn Quan 3da37fa945 Bug 1490956 - Add WrapUnique for UniquePtr. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D5756

--HG--
extra : moz-landing-system : lando
2018-09-13 13:29:13 +00:00
Dylan Roeh b18b70dfcf Bug 1489257 - Backed out 3 changesets (bug 1441059, bug 1478171) for causing bug 1489257. r=me
Backed out changeset f7bd4f224f9a (bug 1441059)
Backed out changeset e66e6bd82e3f (bug 1441059)
Backed out changeset 94cfd6113ca7 (bug 1478171)
2018-09-13 12:27:23 -05:00
Aaron Klotz 66fac2de25 Bug 1489317: Part 1 - Add forward declaration for mscom::AgileReference to RefPtr; r=froydnj
I'd like to add a constructor and operator= to RefPtr for mscom::AgileReference.
This patch is simply the forward declarations to allow for that.

Differential Revision: https://phabricator.services.mozilla.com/D5317

--HG--
extra : moz-landing-system : lando
2018-09-12 18:55:30 +00:00
Cosmin Sabou ee876fb168 Backed out 4 changesets (bug 1489317) for causing multiple windows tests timeouts. CLOSED TREE
Backed out changeset e35a9b02675b (bug 1489317)
Backed out changeset 7528056ab631 (bug 1489317)
Backed out changeset d5d432fd2433 (bug 1489317)
Backed out changeset fddf77dc2f9d (bug 1489317)
2018-09-11 09:22:37 +03:00
Aaron Klotz 08dd5256f5 Bug 1489317: Part 1 - Add forward delcaration for mscom::AgileReference to RefPtr; r=froydnj
I'd like to add a constructor and operator= to RefPtr for mscom::AgileReference.
This patch is simply the forward declarations to allow for that.

Differential Revision: https://phabricator.services.mozilla.com/D5317

--HG--
extra : source : 2787fb454f40584ad146c61fd9b375c419efe803
2018-09-10 22:58:16 +00:00
Ciure Andrei 7a6f7c263a Backed out 4 changesets (bug 1489317) for windows test failures CLOSED TREE
Backed out changeset 07b44bee061c (bug 1489317)
Backed out changeset b340f5acb7b5 (bug 1489317)
Backed out changeset 62b404e59c32 (bug 1489317)
Backed out changeset 2787fb454f40 (bug 1489317)
2018-09-11 04:22:44 +03:00
Aaron Klotz e8230a1d6b Bug 1489317: Part 1 - Add forward delcaration for mscom::AgileReference to RefPtr; r=froydnj
I'd like to add a constructor and operator= to RefPtr for mscom::AgileReference.
This patch is simply the forward declarations to allow for that.

Differential Revision: https://phabricator.services.mozilla.com/D5317

--HG--
extra : moz-landing-system : lando
2018-09-10 22:58:16 +00:00
Ciure Andrei 66949099e9 Backed out 4 changesets (bug 1489317) for causing Windows test failures CLOSED TREE
Backed out changeset 8cf95604ce94 (bug 1489317)
Backed out changeset 9d444f92b939 (bug 1489317)
Backed out changeset e0535e0450c8 (bug 1489317)
Backed out changeset 0f8554d82b32 (bug 1489317)
2018-09-11 00:50:10 +03:00
Aaron Klotz d8aecf7193 Bug 1489317: Part 1 - Add forward delcaration for mscom::AgileReference to RefPtr; r=froydnj
I'd like to add a constructor and operator= to RefPtr for mscom::AgileReference.
This patch is simply the forward declarations to allow for that.

Differential Revision: https://phabricator.services.mozilla.com/D5317

--HG--
extra : moz-landing-system : lando
2018-09-10 20:02:39 +00:00
Daniel Varga 1539df295b Merge mozilla-inbound to mozilla-central a=merge 2018-09-08 06:53:43 +03:00
Emilio Cobos Álvarez c9c6290890 Bug 1489453 - EnumSet shouldn't take 32 bits if not needed. r=froydnj
This is the only reason I haven't used it before for things like
StyleSheet::State.

Change the underlying type to be the underlying enum representation by default,
but allow to override it if wanted.

Assertions should catch misuses.

Differential Revision: https://phabricator.services.mozilla.com/D5248

--HG--
extra : moz-landing-system : lando
2018-09-07 14:40:02 +00:00
Valentin Gosu c4da49a35f Bug 908413 - Make dom::MimeType a template to make it usable with nsCString r=hsivonen
Differential Revision: https://phabricator.services.mozilla.com/D5094

--HG--
extra : moz-landing-system : lando
2018-09-07 05:41:29 +00:00
Mike Hommey 88314c2170 Bug 1488631 - Remove annotations that the clang plugin doesn't handle. r=andi
As per bug 1487622, annotations have side effects on codegen, one of
which changes a leak signature that the wpt harness doesn't match
against its whitelist anymore.

Interestingly, while looking at the issue, I found multiple moz_*
annotations that weren't actually looked for by the clang plugin,
making them useless. Even more interestingly, removing them changes
codegen in such a way that the leak signature mentioned above is not
altered anymore.

Differential Revision: https://phabricator.services.mozilla.com/D5000
2018-09-08 06:49:48 +09:00
Brian Hackett 4a3bf67bb5 Bug 1488260 Part 1 - Consolidate per-thread event and assertion streams, NOT REVIEWED YET.
--HG--
extra : rebase_source : c7a36db81ff22f3edcbdea6d7625facf291e44ee
2018-09-03 08:08:45 -10:00
Nathan Froyd 1e249c5e16 Bug 1486882 - make TestPoisonArea work with aarch64 windows; r=Waldo
We already have the AArch64 return instruction; we just need to check
for the Windows-specific preprocessor conditional.
2018-08-29 14:47:49 -04:00
Tiberius Oros 2ee9341d01 Merge inbound to mozilla-central. a=merge 2018-08-24 12:43:45 +03:00
Kris Maglione 61d9aacb68 Bug 1484373: Part 2a - Add Tuple ForEach helper function. r=froydnj
It's currently fairly difficult to perform some operation on each member of a
tuple. This is a particular issue in the context of adding a cycle collection
helper, where we need to perform traverse and unlink operations on each member
of a tuple, and don't have a way to do so without several layers of templates.

This patch adds a ForEach function which will call a function on each element
of the tuple. This would typically be used with a lambda function with a
single `auto&` argument.

--HG--
extra : rebase_source : 577f7c823ab7ee8d1fdedfbd26393c1f1664b965
2018-08-19 17:42:59 -07:00
Robert Helmer 3091853572 Bug 1421501 - WebIDL and DOM for PrioEncoder r=edgar,hsivonen
MozReview-Commit-ID: L8htRm3J1mZ

--HG--
extra : rebase_source : bba7f747583412677db1811400b86f1a335ef688
2018-06-20 17:21:17 -07:00
Cosmin Sabou 0bd06ad763 Backed out 7 changesets (bug 1421501) for causing build bustages. CLOSED TREE
Backed out changeset 492f05d220b1 (bug 1421501)
Backed out changeset 844232d77d0d (bug 1421501)
Backed out changeset 3affc66728b0 (bug 1421501)
Backed out changeset 4d7c3c02ce8d (bug 1421501)
Backed out changeset e27d93ac79a0 (bug 1421501)
Backed out changeset a6c9888b5179 (bug 1421501)
Backed out changeset f7f9e47f0608 (bug 1421501)
2018-08-23 22:46:07 +03:00
Robert Helmer fff0e34b0f Bug 1421501 - WebIDL and DOM for PrioEncoder r=edgar,hsivonen
MozReview-Commit-ID: L8htRm3J1mZ

--HG--
extra : rebase_source : 5fd5317ef8891f1f7659161904e53d2e085d5c5b
2018-06-20 17:21:17 -07:00
Gurzau Raul ac1914ecba Backed out 6 changesets (bug 1421501) for bustages on security/nss/lib/freebl/mpi/mp_comba.c on a CLOSED TREE
Backed out changeset cae4910806c7 (bug 1421501)
Backed out changeset 600a005d3613 (bug 1421501)
Backed out changeset 7381597721d2 (bug 1421501)
Backed out changeset 1ee0d35a041f (bug 1421501)
Backed out changeset 772dea1abb7f (bug 1421501)
Backed out changeset c119767aec7b (bug 1421501)
2018-08-23 17:13:42 +03:00
Robert Helmer b8233d3ae3 Bug 1421501 - WebIDL and DOM for PrioEncoder r=edgar,hsivonen
MozReview-Commit-ID: L8htRm3J1mZ

--HG--
extra : rebase_source : ca9ccac75cd575be12d18c71ae60dbffb7c529fa
2018-06-20 17:21:17 -07:00
Nathan Froyd 8b18d41782 Bug 1480578 - update double-conversion to bring in ARM/AArch64 Windows support; r=Waldo 2018-08-22 21:01:24 -04:00
Nicholas Nethercote de3b7e3af9 Bug 1483182 - Do report OOM failures in HashTable::reserve(). r=luke
This fixes a typo.

--HG--
extra : rebase_source : bc5d5eaa187797aa1167790c2bddd2db2110bf01
2018-08-21 19:07:20 +10:00
Nicholas Nethercote d4f517f3e2 Bug 1483182 - Don't allocate in HashTable::lookupOrAdd(). r=luke
Currently lookupOrAdd() will allocate if the table has no storage. But it
doesn't report an error if the allocation fails, which can cause problems.

This patch changes things so that lookupOrAdd() doesn't allocate when the table
has no storage. Instead, it returns an AddPtr that is not *valid* (its mTable
is empty) but it is *live*, and can be used in add(), whereupon the allocation
will occur.

The patch also makes Ptr::isValid() and AddPtr::isValid() non-public, because
the valid vs. live distinction is non-obvious and best kept hidden within the
classes.

--HG--
extra : rebase_source : 95d58725d92cc83332e27a61f98fa61185440e26
2018-08-21 13:49:17 +10:00
Masatoshi Kimura 9e71125487 Bug 1306642 - Backed out changeset 5bd8445b019f as final NSPR fix has landed. r=dmajor
--HG--
extra : rebase_source : fc93d796f8fe4415d3897f307de9b13c9ebefcad
2018-08-16 19:06:42 +09:00
Margareta Eliza Balazs 4ec111d31e Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-08-16 12:34:45 +03:00
Nicholas Nethercote 2b8aa56d1e Bug 1483062 - Trivial comment fixes. r=me
--HG--
extra : rebase_source : 81beeb90397bc6dbfac21b3e0adccaf63978f437
2018-08-16 09:45:44 +10:00
Nicholas Nethercote 70253e2770 Bug 1483062 - Inline and remove HashTable::{over,under}loaded(). r=luke
Because they each only have a single call site, and the "too many items
removed?" test is already encapsulated within rehashIfOverloaded().

--HG--
extra : rebase_source : f6550c483477c2839764e7f657b542c24c82b1e8
2018-08-16 09:10:17 +10:00
Nicholas Nethercote 14551e3f43 Bug 1483062 - Merge HashTable::wouldBeUnderloaded() into underloaded(). r=luke
--HG--
extra : rebase_source : ed0ecbc871048b416452a7612991bcff98c91a06
2018-08-15 11:11:13 +10:00
Nicholas Nethercote 1c305db7ce Bug 1483062 - Inline and remove HashTable::overRemoved(). r=luke
--HG--
extra : rebase_source : c7dbdbe38bf0f44f27bda7f134bbf0d865149200
2018-08-15 11:10:56 +10:00
Nicholas Nethercote eb0a51a708 Bug 1483062 - Rename HashTable::rehashIfOverRemoved(). r=luke
infallibleRehashIfOverloaded() actually matches what it does.

Also, the patch removes the `overloaded()` test within the function, because
`rehashIfOverloaded()` has the same test.

--HG--
extra : rebase_source : 2799e623fbdd4b8bb82f8b83166752e02a0f9202
2018-08-14 11:56:55 +10:00
Nicholas Nethercote d12003b7e5 Bug 1483062 - Rename some HashTable methods. r=luke
Specifically:
- checkOverloaded  -> rehashIfOverloaded
- checkUnderloaded -> shrinkIfUnderloaded
- checkOverRemoved -> rehashIfOverRemoved

Because I've always found that the `check` prefix doesn't clearly explain that
the table might be changed,

And:
- shouldCompressTable -> overRemoved

Because that matches `overloaded` and `underloaded`.

--HG--
extra : rebase_source : 56e9edd012f4a400ac366895d05ea93fb09ec6b3
2018-08-14 11:19:39 +10:00
Nicholas Nethercote d378adb5b7 Bug 1483062 - Rename HashTable::findFreeEntry() as findNonLiveEntry(). r=luke
Because that's a more accurate description of what it does -- it finds free
*and* removed entries.

--HG--
extra : rebase_source : 72b049f44c61a7406d9691a9d9b6405dd696848c
2018-08-14 09:36:00 +10:00
Nicholas Nethercote 44dd70d7d6 Bug 1483062 - Remove HashTable::maybeCreateTable. r=luke
It's dead.

--HG--
extra : rebase_source : c1a6aca3340c09cbe5e9f3ac9a5ea1ae5901ea4e
2018-08-09 14:19:49 +10:00
Thomas Wisniewski 78af5fd2ae Bug 1454590 - Align overrideMIMEType with the XMLHttpRequest Standard. r=hsivonen
MozReview-Commit-ID: 5k34F96jRPX

--HG--
extra : rebase_source : 95944acc3123406dbf490f2fd1837b8decaa3e0b
2018-08-13 16:12:10 -04:00
Gerald Squelart 2d21b03a3b Bug 1482046 - mfbt: FunctionTypeTraits - r=froydnj
FunctionTypeTraits< function type > makes it easier to inspect a function's
return type, arity, and parameter types.
It works with free functions, struct/class methods, function objects like
non-generic lambdas and std::function.

Differential Revision: https://phabricator.services.mozilla.com/D2998

--HG--
extra : moz-landing-system : lando
2018-08-15 10:27:45 +00:00
Jeff Walden 65fc1cbcdc Make DecodeOneUtf8CodePoint* take |const EndIter& aEnd| to enforce immutability of the end iterator. No bug, r=me as trivial
--HG--
extra : rebase_source : 203441e69e49bcedcf9810a1e9504f72de1f3820
2018-08-09 21:04:23 -07:00
Nicholas Nethercote b9e071e2e8 Bug 1481998 - Make mozilla::Hash{Map,Set}'s entry storage allocation lazy. r=luke,sfink
Entry storage allocation now occurs on the first lookupForAdd()/put()/putNew().
This removes the need for init() and initialized(), and matches how
PLDHashTable/nsTHashtable work. It also removes the need for init() functions
in a lot of types that are built on top of mozilla::Hash{Map,Set}.

Pros:

- No need for init() calls and subsequent checks.

- No memory allocated for empty tables, which are not that uncommon.

Cons:

- An extra branch in lookup() and lookupForAdd(), but not in put()/putNew(),
  because the existing checkOverloaded() can handle it.

Specifics:

- Construction now can take a length parameter.

- init() is removed. Explicit length-setting, when necessary, now occurs in the
  constructors.

- initialized() is removed.

- capacity() now returns zero when the entry storage is absent.

- lookupForAdd() is no longer `const`, because it can instantiate the storage,
  which requires modifications.

- lookupForAdd() can now return an invalid AddPtr in two cases:

  - old: hashing failure (due to OOM in the hasher)

  - new: OOM while instantiating entry storage

  The existing failure handling paths for the old case work for the new case.

- clear(), finish(), and clearAndShrink() are replaced by clear(), compact(),
  and reserve(). The old compactIfUnderloaded() is also removed.

- Capacity computation code is now in its own functions, bestCapacity() and
  hashShift(). setTableSizeLog2() is removed.

- uint32_t is used throughout for capacities, instead of size_t, for
  consistency with other similar values.

- changeTableSize() now takes a capacity instead of a deltaLog2, and it can now
  handle !mTable.

Measurements:

- Total source code size is reduced by over 900 lines. Also, lots of existing
  lines got shorter (i.e. two checks were reduced to one).

- Executable size barely changed, down by 2 KiB on Linux64. The extra branches
  are compensated for by the lack of init() calls.

- Speed changed negligibly. The instruction count for Bench_Cpp_MozHash
  increased from 2.84 billion to 2.89 billion but any execution time change was
  well below noise.
2018-08-10 18:00:29 +10:00
Nicholas Nethercote a04c29f828 Bug 1481998 - Define lookup() in terms of readonlyThreadsafeLookup(). r=luke
The two functions are almost identical. This change minimizes duplication.

--HG--
extra : rebase_source : 08bb79d21084eec63702525ce6179e22686bec5c
2018-08-10 15:35:13 +10:00
Chris Peterson b227b37687 Bug 1481097 - mfbt: Assert we're compiling with gcc 6.1 or later. r=glandium
Firefox currently requires gcc 6.1 or later (as of bug 1444274).

MozReview-Commit-ID: CaJwpUgntxn

--HG--
extra : rebase_source : 302d8aa57696e2e96962c67e3497f76e882a472f
extra : source : 2a53a830f79424b2c41c8bdc4816ec24fa943ecc
2018-07-21 23:45:41 -07:00
Bryce Van Dyk 460c97cad4 Bug 1481005 - Explicitly delete dtor of AlignmentFinder::Alinger to avoid MSVC warning breaking debug builds. r=froydnj
Bug 1480624 added new code that results in a warning on MSVC debug builds. This
warning is treated as an error and makes such builds unhappy. The warning is
due to implicit deletion of a dtor, this changeset makes that deletion
explicit to avoid the fatal warning.

Differential Revision: https://phabricator.services.mozilla.com/D2865

--HG--
extra : moz-landing-system : lando
2018-08-07 17:58:39 +00:00
Nicholas Nethercote dcd7d4327c Bug 1481138 - Clarify that Hash{Map,Set}::putNew() can be used if elements have been removed. r=luke
Hash{Map,Set}::putNew() can be used on a table that has had elements removed,
despite some comments to the contrary.

This patch fixes those comments. It also clarifies when putNewInfallible() can
be used.

This patch also removes the !isRemoved() assertion in findFreeEntry(), which is
confusing -- !isLive() would be more precise, but also obvious from the
surrounding code.

MozReview-Commit-ID: q4qwKGBsHx

--HG--
extra : rebase_source : 94331879f9a1484159e030de93bd0ab222b54385
2018-08-06 12:01:28 +10:00
Nicholas Nethercote 46db021929 Bug 1481138 - Remove HashMap::lookupWithDefault(). r=luke
Because it's quite strange, badly named, not that useful, and barely used.

Also remove WeakMap::lookupWithDefault(), which is similar, but not used at
all.

MozReview-Commit-ID: IhIl4hQ73U1

--HG--
extra : rebase_source : 7da237a56391836ca5d056248f18bd5e2d8b1564
2018-08-06 09:45:38 +10:00
Nicholas Nethercote d9eb003725 Bug 1481138 - Remove the add() variant in HashTable and GCHashTable that uses a default value. r=luke
Because (a) it's kinda weird, and (b) only used in a single test, where it can
be easily replaced with a vanilla add().

MozReview-Commit-ID: L4RoxFb7yGG

--HG--
extra : rebase_source : 515a5ede5d417686907345ad9069c6a41669dd17
2018-08-06 09:10:05 +10:00
Masatoshi Kimura b2d2d974d3 Bug 1306642 - Temporarily allow warnings from MemoryChecking.h. r=dmajor
--HG--
extra : rebase_source : ff1502d89cf38b27b2cb28152f4ff33141b67374
2018-08-04 17:25:11 +09:00
Randell Jesup 85a1661cdc Bug 1474701: Fix shutdown profile-save (fix imbalance) and add JSONWriter assertions r=mstange,njn 2018-08-06 10:44:26 -04:00
Nicholas Nethercote e39fda4c40 Bug 1480668 - Remove js::CStringHashPolicy. r=luke
It's identical to mozilla::CStringHasher.

Also fix a comment at the top of HashTable.h about CStringHasher.

--HG--
extra : rebase_source : 92176c4f6ea8041f309764b4ce0271a494853a7b
2018-08-06 07:55:50 +10:00
Nicholas Nethercote 7b988956cc Bug 1480650 - Remove mozilla::HashTable::Stats. r=luke
I bet nobody has used them in years. The use of ad hoc profiling (printfs plus
post-processing with a tool like https://github.com/nnethercote/counts) is
generally a better approach.

Bug 1179657 did likewise for PLDHashTable.

--HG--
extra : rebase_source : 57ab26c62f2f1eff2eec827564a3c3ff0af12f01
2018-08-03 11:59:26 +10:00
Nicholas Nethercote 5c9b1f5c39 Bug 1480323 - Reorder methods in Hash{Set,Map}. r=luke
And add comments delimiting different operation groups. Together these changes
make Hash{Set,Map} much easier to navigate.

--HG--
extra : rebase_source : 21a7da92f898b318a24085b5f0885da85aa3afd1
2018-08-03 10:25:29 +10:00
Brian Hackett a1556089f7 Bug 1479058 Part 1 - Add NewTimeWarpTarget() API, r=mccr8.
--HG--
extra : rebase_source : 556161b281c21b19f972854b5c3b31e302d0dd26
2018-08-02 23:26:25 +00:00
Nathan Froyd dc2c367d40 Bug 1480581 - add an AArch64-specific case to EndianUtils.h; r=Waldo 2018-08-03 18:07:34 -04:00
Nathan Froyd c0949fc4e1 Bug 1480577 - add AArch64-specific cases for MathUtils.h bitscan functionality; r=Waldo 2018-08-03 18:07:34 -04:00
Nicholas Nethercote 097b276f5c Bug 1480660 - Remove ConstExprHash{UntilZero,String}(). r=froydnj
They were workarounds for bugs in GCC 4.9, which is no longer supported.

--HG--
extra : rebase_source : b793b4643e1e44199afdb8e8b35f930e02664be8
2018-08-03 14:47:41 +10:00
Nicholas Nethercote 088ecf7be1 Bug 1480361 - Introduce HashTable::LookupReason. r=luke
Again inspired by PLDHashTable, this makes things a bit clearer than passing 0
or sCollisionBit.

It also guarantees more strongly that we'll end up with appropriately
specialized code for the Add vs. NonAdd cases. (That guarantee isn't currently
needed because the compiler inlines things sufficiently anyway, but it can't
hurt.)

--HG--
extra : rebase_source : c2341d7df85f44a00bd1b52eac0e08ac63525196
2018-08-03 10:03:37 +10:00
Nicholas Nethercote 7cb8d52236 Bug 1480361 - Tweak handling of removed entries in HashTable::lookup(). r=luke
There are two improvements here.

- When we're just doing a lookup (i.e. aCollisionBit==0), we don't need to
  do any special handling of removed entries. (Inlining means that the removed
  entry code is entirely removed for lookups.)

- When we're doing an insertion (i.e. aCollisionBit==sCollisionBit), we now
  stop adding collision markings once we find a removed entry, because they're
  unnecessary after that point.

This change brings the code in alignment with PLDHashTable::SearchTable().

--HG--
extra : rebase_source : 8d6e3a88ac24d0e71a2576997face3bea971c71f
2018-08-03 10:03:31 +10:00
Nicholas Nethercote da4f2681a4 Bug 1478885 - Improve docs for mozilla::Hash{Set,Map}. r=luke
This patch does the following:

- Adds a bunch of useful high-level info at the top of the file, making the
  types easier to use for newcomers.

- Adds a comment to every Hash{Set,Map} method that lacked one.

- Tweaks lots of existing comments for clarity.

- Removes comments in Hash{Set,Map} referring to details within HashTable. That
  dependence is now covered in the top-level comment.

- Tweaks the signatures in hash policy classes to be more consistent.

--HG--
extra : rebase_source : ab9d6ae38b4b73e12151a228107ad3f3f12e36b3
2018-08-03 06:33:21 +10:00
Nicholas Nethercote 95ed5dcb6d Bug 1478879 - Define Range/Enum in terms of Iterator/ModIterator. r=luke
To reduce the code duplication.

--HG--
extra : rebase_source : fb14664f766fc51012e31e626b6313f10b69e9dc
2018-07-31 10:23:03 +10:00
Nicholas Nethercote aea3d9d133 Bug 1478879 - Introduce Iterator and ModIterator in HashTable.h. r=luke
These basically duplicate the existing Range and Enum classes, but use more
familiar terminology, similar to the iterators we have for
PLDHashTable/nsTHashtable:

- Hash{Set,Map}::all()  Hash{Set,Map}::iter()
- Enum constructor      Hash{Set,Map}::modIter()
- Range::front()        Iterator::get()
- Range::popFront()     Iterator::next()
- Range::empty()        Iterator::done()
- Enum::mutableFront()  ModIterator::getMutable()
- Enum::removeFront()   ModIterator::remove()
- Enum::rekeyFront()    ModIterator::rekey()

The next patch will reduce the amount of code duplication.

--HG--
extra : rebase_source : 5787756b144bbaea98f381d5a128cb42edb82c41
2018-07-27 12:17:37 +10:00
Nicholas Nethercote f97954cf65 Bug 1478879 - Remove zero-arg constructor for Range. r=luke
It's only used by InlineTable::Range, and can be avoided by using
mozilla::Maybe.

This also means Range::mTable can be changed from a pointer to a reference,
like Enum::mTable.

--HG--
extra : rebase_source : 35eb5b0bede361c2c765652e1e4c952f128702ef
2018-07-31 10:23:03 +10:00
Nicholas Nethercote 6141e31ef4 Bug 1479954 - Rename Hash{Set,Map}::sizeOf{In,Ex}cludingThis(). r=luke
In PLDHashTable the equivalent functions have a "Shallow" prefix, which makes
it clear that they don't measure things hanging off the table. This patch makes
mozilla::Hash{Set,Map} do likewise.

MozReview-Commit-ID: 3kwCJynhW7d

--HG--
extra : rebase_source : 9c03d11f376a9fd4cfd5cfcdc0c446c00633b210
2018-08-01 09:57:52 +10:00
Nicholas Nethercote e0dbe1b052 Bug 1478896 - Fix HashTable.h style. r=froydnj
This patch converts HashTable.h from SpiderMonkey style to Gecko style.

It was created by first running `./mach clang-format -p mfbt/HashTable.h` to
fix the whitespace, and then doing manual patch-ups, the most significant of
which were:

- Adding braces around single-statement if/else/for/while blocks.

- Renaming class members to `mFoo` form and arguments to `aFoo` form.

- Converting `typedef Old New` to `using New = Old` throughout.

MozReview-Commit-ID: LJ1emPyuAjK
2018-07-31 13:39:31 +10:00
Nicholas Nethercote 234016c13e Bug 1477626 - Document some differences between mozilla::HashTable and PLDHashTable. r=Waldo
MozReview-Commit-ID: DB0KUy99DDM

--HG--
extra : rebase_source : 4d14c47c48cb821f6c69654c1c5d90c48f217e48
2018-07-26 20:15:55 +10:00
Nicholas Nethercote b85493f609 Bug 1477626 - Move js::Hash{Set,Map} into MFBT. r=Waldo
The main change is that the patch copies js/public/HashTable.h to
mfbt/HashTable.h, and then changes it as follows.

- Changes `js` namespaces to `mozilla` (and removes some now-unnecessary
  `mozilla::` qualifiers).

- Changes the default AllocPolicy from the SpiderMonkey-specific
  `TempAllocPolicy` to the generic `MallocAllocPolicy`.

- Adds `#include "AllocPolicy.h"` (like mfbt/Vector.h).

- Changes `JS_DEBUG` use to `DEBUG`.

- Minor comment updates, as necessary.

js/public/HashTable.h is now tiny, holding just a few renamings of things from
the `mozilla` namespace into the `js` namespace to minimize churn elsewhere.
(Those renamings keep `TempAllocPolicy` as the default AllocPolicy for
js::Hash{Set,Map}.)

Also, various template specializations had to be moved from the `js` namespace
to the `mozilla` namespace to avoid compile errors.

MozReview-Commit-ID: GS9Qn9YeYDA

--HG--
rename : js/public/HashTable.h => mfbt/HashTable.h
2018-07-26 20:15:49 +10:00
Nicholas Nethercote 0f205a7ce0 Bug 1477626 - Move ScrambleHashCode() from js/src/Utility.h to mfbt/HashFunctions.h. r=Waldo
And use it in PLDHashTable.cpp.

MozReview-Commit-ID: BqwEkE0p5AG

--HG--
extra : rebase_source : bd9118e24b82add6ad1fdcb067a5f25b25e90201
2018-07-26 18:52:47 +10:00
Nicholas Nethercote 25a1140207 Bug 1477626 - Introduce mozilla::HashNumber and use it in various places. r=Waldo
Currently we have three ways of representing hash values.

- uint32_t: used in HashFunctions.h.

- PLDHashNumber: defined in PLDHashTable.{h,cpp}.

- js::HashNumber: defined in js/public/Utility.h.

Functions that create hash values with functions from HashFunctions.h use a mix
of these three types. It's a bit of a mess.

This patch introduces mozilla::HashNumber, and redefines PLDHashNumber and
js::HashNumber as synonyms. It also changes HashFunctions.h to use
mozilla::HashNumber throughout instead of uint32_t.

This leaves plenty of places that still use uint32_t that should use
mozilla::HashNumber or one of its synonyms, but I didn't want to tackle that
now.

The patch also:

- Does similar things for the constants defining the number of bits in each
  hash number type.

- Moves js::HashNumber from Utility.h to HashTable.h, which is a better spot
  for it. (This required changing the signature of ScrambleHashCode(); that's
  ok, it'll get moved by the next patch anyway.)

MozReview-Commit-ID: EdoWlCm7OUC

--HG--
extra : rebase_source : 5b92c0c3560eb56850cd8832f8ee514d25e3c16f
2018-07-26 18:52:46 +10:00
Jeff Walden 90533433e6 Bug 1478587 - Implement mozilla::Utf8AsUnsignedChars to centralize UTF-8-to-unsigned-chars casts and their justifications. r=froydnj
--HG--
extra : rebase_source : 98d7eb2e5bb183e39437fbfdbbee0f301ccb768a
2018-07-26 19:43:33 -07:00
shindli 774474fe26 Backed out 11 changesets (bug 1478892, bug 1478587) for build bustages in ../../../dist/bin/gdb-tests on a CLOSED TREE
Backed out changeset 185a4564afa5 (bug 1478892)
Backed out changeset c4b339472f4b (bug 1478587)
Backed out changeset 1a4669e53b46 (bug 1478587)
Backed out changeset aa8a0735f303 (bug 1478587)
Backed out changeset d1cd66e6d3c3 (bug 1478587)
Backed out changeset 63ccd68e1da3 (bug 1478587)
Backed out changeset 3a111fdc418d (bug 1478587)
Backed out changeset 756cbd89533a (bug 1478587)
Backed out changeset 9546bfc93c7a (bug 1478587)
Backed out changeset b335930f96b4 (bug 1478587)
Backed out changeset a47cd872a700 (bug 1478587)
2018-07-29 13:33:00 +03:00
Jeff Walden 03dd137c29 Bug 1478587 - Implement mozilla::Utf8AsUnsignedChars to centralize UTF-8-to-unsigned-chars casts and their justifications. r=froydnj
--HG--
extra : rebase_source : a24f75e7f1e3912b59d9cad31c9b20594e24f789
2018-07-26 19:43:33 -07:00
Jeff Gilbert 0e128a3868 Bug 1470985 - s/PodEqual/ArrayEqual/ from ArrayUtils.h. - r=waldo
We can't use memcmp to compare PODs, largely because of undefined
padding. The rest of the Pod* functions are fine though, since we're
replicating or zeroing PODs.

MozReview-Commit-ID: LSspAi8qCWw
2018-07-27 14:11:18 -07:00
Andreas Farre b5730bd2b0 Bug 1445659 - Make it possible to store RefPtr<T> in AutoCleanLinkedList. r=froydnj
Add a trait method that AutoCleanLinkedList delegates to for calling
delete on non-refcounted list elements.

--HG--
extra : histedit_source : 5e8b05f348d734d9045621d858caed946853fc02
2018-06-13 06:25:00 +03:00
Jeff Walden 6060208b38 Bug 1478170 - Specialize SourceUnits::findWindowStart for UTF-8. r=arai
--HG--
extra : rebase_source : 6a9558e7fbf640c17cbbfb0e70d93ad24b3029ed
2018-07-18 22:46:48 -07:00
Jeff Walden 83ae856536 Bug 1478170 - Implement SourceUnits::peekCodePoint for UTF-8. r=arai
--HG--
extra : rebase_source : 7d256802f430ba813588fe9535630f67a30fbd56
2018-07-25 14:51:26 -07:00
Dylan Roeh 5fa70ba038 Bug 1441059 - Add cycle collection implementations for Maybe. r=bz 2018-07-17 10:34:58 -05:00
Brian Hackett 312bb81dda Bug 1470795 Part 2 - Record/replay API changes for replay debugger, r=froydnj.
--HG--
extra : rebase_source : 798587fb1675a3a02a0ef3b7606577c5b63cc216
2018-07-22 11:56:47 +00:00
Brian Hackett 3f2c401055 Bug 1465287 Part 9 - Allow copying IPDL messages, r=froydnj.
--HG--
extra : rebase_source : 25d5c75b5a5b07b545646535bd8da7b9fd9562dc
2018-07-22 11:53:23 +00:00
Brian Hackett 413abd40b5 Bug 1465452 Part 6 - Don't record assertion crashing flag, r=froydnj.
--HG--
extra : rebase_source : 994a8c6c16e20b81e2e112ef15fc08190678c440
2018-07-21 14:31:21 +00:00
Brian Hackett 2a875c0ad7 Bug 1207696 Part 4h - Don't record chaos mode counters, r=froydnj.
--HG--
extra : rebase_source : e37e6d4f124654ab99ef35acef2feb4d4e11a050
2018-07-21 14:25:36 +00:00
Brian Hackett 19be0573fa Bug 1207696 Part 4a - Make recording optional in mozilla::RefCounted, r=ehsan.
--HG--
extra : rebase_source : 4bf53b557247ac82933f4da70cccddafa6c2c7b2
2018-07-21 14:21:39 +00:00
Brian Hackett be2b98186b Bug 1207696 Part 2b - Don't record activity in atomics unit tests, r=waldo.
--HG--
extra : rebase_source : 8fb15b2d0d73adf63ed3251f55c0cbbbcf0c9c18
2018-07-21 14:20:13 +00:00
Brian Hackett 47ccde0dda Bug 1207696 Part 2a - Atomics interface changes, r=waldo.
--HG--
extra : rebase_source : 39c1910c273357bdacbea7c15d9c49eccd2aeb2c
2018-07-21 14:17:16 +00:00
Brian Hackett 16cf11f43a Bug 1464903 Part 1 - Public record/replay API, r=froydnj.
--HG--
extra : rebase_source : 3841f170eac0e0916a667d541ab0ee20b1626f2e
2018-07-20 23:59:31 +00:00
Brian Hackett f6b8e6f81c Bug 1309552 - Specify buffer size when freeing data in AllocPolicy, r=waldo.
--HG--
extra : rebase_source : f4e2d9f8831cf41c19d592ce252e87161f32250b
2018-07-20 23:58:34 +00:00
Jeff Walden d243be25b1 Bug 1426909 - Abstract out mozilla::DecodeOneUtf8CodePoint for decoding a UTF-8 code point after having consumed a non-ASCII lead unit, with configurable error notification through optional user-provided functors. r=froydnj
--HG--
extra : rebase_source : 25836018b00b545a60969abccf40ce313d4da1af
2018-07-12 17:41:31 -07:00
Jeff Walden 9e8165ad5e Add support for char32_t to mozilla::IsIntegral. Found in the process of fixing another bug, no bug and r=me as so unbelievably trivial that it can't possibly deserve anything else
--HG--
extra : rebase_source : 457268f5749afbb84c50b86876df121c693a4e8f
2018-07-12 02:26:49 -07:00
Cameron McCormack 8a2341f976 Bug 1473771 - Part 2: Make LinkedList::Iterator work when element type inherits from multiple LinkedListElement<T>s. r=Waldo
MozReview-Commit-ID: 9dNTsSNyIYK

--HG--
extra : rebase_source : 60de5392ebf857d71e09a1bc7a68cc19edd66263
2018-07-06 10:56:08 +10:00
Cameron McCormack cf90987901 Bug 1473771 - Part 1: Make LinkedList<T>::sizeOfExcludingThis work when element type inherits from multiple LinkedListElement<T>s. r=Waldo
MozReview-Commit-ID: KtqGkRKs68f

--HG--
extra : rebase_source : a4946439813dab4867e80e370e884f851289b4b7
2018-07-06 10:10:09 +10:00
Jeff Walden 90507ffb7a Bug 1426909 - Introduce a new mfbt/Utf8.h header for UTF-8-related functionality, including a UTF-8 code unit type that is compatible with, but doesn't directly interconvert with, |char|. r=froydnj
--HG--
extra : rebase_source : 00760186060d7e72fac783af3fc5595a6057feca
2018-01-11 11:29:53 -07:00
Kris Maglione 2bbae5374b Bug 1470365: Part 1 - Add a compact, read-only, shared-memory string map class. r=erahm
This class implements a shared memory key-value store that fits into a single
memory mapped segment. All of the runtime data for its instances are stored in
the shared memory region, which means that memory overhead for each instance
in each process is only a few bytes.

Importantly, the key and value strings returned by this class are also
pointers into the shared memory region, which means that once an instance is
created, its memory cannot be unmapped until process shutdown.

For the uses I intend to put it to, this is a reasonable constraint. If we
need to use it for shorter-lived maps in the future, we can add an option to
return non-literal dependent strings that will be copied if they need to be
kept alive long term.

MozReview-Commit-ID: 5BwAaDsb7HS

--HG--
extra : rebase_source : b472fe628018f88a2c4d6b3de4b7143aeca55e14
extra : absorb_source : 5cdeb568cfd2b4a5a767191402e699e61e653b3b
2018-06-29 22:50:41 -07:00
Jacek Caban 03565d5406 Bug 1471177 - Use mingw-specific IFStream and OFStream implementation only when building againstd libstdc++. r=froydnj
MozReview-Commit-ID: 6aKGtK7B74z

--HG--
extra : rebase_source : 708e16c62c91aa482bffd6dbc74f6bfe944d4fec
2018-06-26 13:06:17 +02:00
Benjamin Peterson 1c04f1eba7 Bug 1470641 - Update already_AddRefed constructor comment. r=froydnj
RIP B2G.

--HG--
extra : rebase_source : 90de1c8ef7a273e87f869ad054a46aae23153a2f
2018-06-22 23:25:19 -07:00
Andi-Bogdan Postelnicu 4a5d0dd615 Bug 1453795 - MFTB - Initialize member fields in classes/ structures. r=waldo
--HG--
extra : rebase_source : e091acb3a9f60695b87ab9e3d348c5978680d2f8
2018-06-15 13:49:31 +03:00
Jeff Walden 5b41e725ee Bug 1469003 - Convert SegmentedVector to use a manually aligned |unsigned char| array for storage, using a clean C++11 idiom. r=froydnj
--HG--
extra : rebase_source : a456526a6596ce4e204d1f64a211c12cd9d41223
2018-06-18 11:55:41 -07:00
Jeff Walden df09db05b8 Bug 1465808 - Update double-conversion to latest upstream. rs=froydnj
--HG--
extra : rebase_source : 89aeedf516a89aa5d6189bdbde8d1466e59f01f6
2018-06-12 22:12:42 -07:00
Alessio Placitelli 1ecfce2746 Bug 1467759 - Escape all the property names in JSONWriter. r=froydnj
Scalar property names (e.g. IntProperty) are already escaped correctly.
This patch escapes the collection property names (e.g. StartObjectProperty)
as well (and adds test coverage for it).

MozReview-Commit-ID: 68kkjPb2ZN7

--HG--
extra : rebase_source : b42939ccebb71fc73914ff595803b2d6c7df2715
2018-06-08 19:50:25 +02:00
Jeff Walden 784f62bdc2 Bug 1466928 - Make mozilla::SmallPointerArray compatible with the C++ object model. r=froydnj
--HG--
extra : rebase_source : e803add704e25f981bd8609405fc6f2967f40b05
2018-06-07 03:53:54 -07:00
Jeff Walden c55625cdec Bug 1467336 - Implement mozilla::IsAscii to detect pure ASCII characters. r=froydnj
--HG--
extra : rebase_source : 1f6de2745234766d676178bdeafb9b82e48e51b5
2018-06-07 02:17:10 -07:00
Jeff Walden 701bad47cd Bug 1438212 - Implement mozilla::IsFloat32Representable using an algorithm that handles NaN correctly and doesn't sometimes invoke undefined behavior. r=froydnj
--HG--
extra : rebase_source : b4246ea818046b1e4100b90a3a371a866ea2b098
2018-06-06 16:03:47 -07:00
Jeff Walden 7bbef1fafc Bug 1465981 - Use memcpy instead of union-arm-punning (which has implementation-defined, desired behavior with gcc and presumably clang, and is not known to have problems on MSVC, but potentially could with other compilers) in BitwiseCast. r=froydnj
--HG--
extra : rebase_source : 686363576c84710ae0181afc32b05dee8b40a59b
2018-06-06 16:03:47 -07:00
André Bargull f7acf7bc9c Bug 1466909 - Use AddLvalueReference for UniquePtr's operator*(). r=froydnj
--HG--
extra : rebase_source : df072aca7e79ce534c3bc620a352adfc92fbf245
2018-06-07 07:27:22 -07:00
Eric Rahm 51f133db96 Bug 1467048 - Add a version of CorruptionCanary for statics. r=froydnj
This adds 'CorruptionCanaryForStatics', which as the name implies is suitable
for use in objects that are statically declared. It has a trivial destructor
which allows us to avoid the need for static constructors.

--HG--
extra : amend_source : 27f8eff9ead21fde9f5f5d17f16c322d2c995a27
2018-06-06 14:50:17 -07:00
arthur.iakab fd0ee7c9b8 Merge inbound to mozilla-central a=merge 2018-06-06 00:58:30 +03:00
Eric Rahm 572911732c Bug 1436768 - Add debug code to LazyLogModule. r=froydnj
--HG--
extra : rebase_source : bd70f788eb986b73eb70460337d5d7c3423c4e8a
extra : source : 82ef13b02416c8519178a7e8e08791b7b8dfcbdb
2018-05-09 11:16:27 -07:00
Miko Mynttinen 4c85ef17cc Bug 1465060 - Part 1: Fix warnings for std::move() use r=froydnj
MozReview-Commit-ID: HpdFXqQdIOO

--HG--
extra : rebase_source : 1e7eea4f2d4ec16ec0c559a8afb26976ddbf4d07
2018-06-01 17:59:07 +02:00
arthur.iakab 7e765f798b Backed out 2 changesets (bug 1465060) for build bustages on security/sandbox/linux/reporter/SandboxReporter.cpp
Backed out changeset 7c8905b6b226 (bug 1465060)
Backed out changeset 10446073eca8 (bug 1465060)
2018-06-03 19:25:41 +03:00
Miko Mynttinen 8d9dc85cd4 Bug 1465060 - Part 1: Fix warnings for std::move() use r=froydnj
MozReview-Commit-ID: HpdFXqQdIOO

--HG--
extra : rebase_source : 619d0e0ff63a2453c80f0c4d9beb906d43fa9b01
2018-06-01 17:59:07 +02:00
Emilio Cobos Álvarez 1e9c395548 Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj
Same approach as the other bug, mostly replacing automatically by removing
'using mozilla::Forward;' and then:

  s/mozilla::Forward/std::forward/
  s/Forward</std::forward</

The only file that required manual fixup was TestTreeTraversal.cpp, which had
a class called TestNodeForward with template parameters :)

MozReview-Commit-ID: A88qFG5AccP
2018-06-02 09:33:26 +02:00
Emilio Cobos Álvarez fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Henri Sivonen c3fcb6ab2c Bug 1466475 - Make mozilla::Span produce aligned bogus pointers per new Rust rules. r=froydnj
MozReview-Commit-ID: JFVSRu53Geh

--HG--
extra : rebase_source : a9436aef554b6e892195324744f135d2b65086d5
2018-06-04 12:59:46 +03:00
Daniel Stenberg 0506997177 bug 1464999 - make SplayTree.remove clear mRight and mLeft r=froydnj
... to allow a user to remove() an entry, update the values and
re-insert() it into a tree.

MozReview-Commit-ID: GrSY90Q3ugt

--HG--
extra : rebase_source : 9d8876064f9e3d5b9e4249936a4c999b74fcc9ad
2018-05-29 09:41:24 +02:00
Paul Adenot 515134e9a0 Bug 1454385 - Add a single producer single consumer lock and wait free queue to mfbt/. r=froydnj
MozReview-Commit-ID: 6Dq0GQtYgv2

--HG--
extra : rebase_source : 67bc4245a61c15738e3a6467a03b41e9e29af9ce
2018-04-13 17:14:05 +02:00
Csoregi Natalia acd92af57e Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-05-23 01:02:30 +03:00
Alex Gaynor 3511d14f46 Bug 1462912 - fixed BufferList::Extract to handle the case where the call consumes the entirety of the BufferList; r=froydnj
MozReview-Commit-ID: 1LWODn8JaNL

--HG--
extra : rebase_source : 29cea444a49eb5e2ade33214ff52d6419949337e
2018-05-22 13:04:59 -04:00
Kris Maglione d92e63a9a9 Bug 1463299: Add RefPtr::forget special case for ambiguous nsISupports casts. r=bz
When we use RefPtr with nsISupports sub-classes, it's usually because the type
cannot be unambiguously cast to nsISupports. We already have a ToSupports
generic function to resolve ambiguity in these cases, so we may as well use
it here.

MozReview-Commit-ID: FaHhPKAPn6j

--HG--
extra : rebase_source : dd8f3707bdebedfe559aed0caf2c3b0c49163735
extra : histedit_source : 9805787a169329b9c739dfa456cfe6a61a22b7d7
2018-05-21 17:23:10 -07:00
shindli 4ff26c26f4 Merge inbound to mozilla-central. a=merge 2018-05-22 00:29:52 +03:00
Nathan Froyd b29b040b36 Bug 1410186 - turn Maybe assertions into diagnostic assertions; r=bkelly
We out-of-line the relevant functions because assertions can generate
quite a bit of code, and we'd rather let the compiler determine if these
functions should be inlined now.
2018-05-21 10:03:59 -04:00
Bogdan Tara 2aa42f2cab Backed out changeset c82274a23aea (bug 1410186) on request by igoldan a=backout 2018-05-21 16:53:30 +03:00
Masatoshi Kimura 1c639cc220 Bug 1463011 - Constexpr-ify mozilla::NotNull r=njn
MozReview-Commit-ID: EyXmRskjtfU

--HG--
extra : rebase_source : bd86a8126d1f2098c436f5e61106857c8b068c04
2018-05-21 23:03:16 +09:00
Alex Gaynor a13531321e Bug 1456189 - Simplify BufferList::Extract to make the lifetimes clearer. r=froydnj 2018-05-18 18:59:00 -04:00
Gurzau Raul 841689c6d7 Backed out changeset 1d0aa0c581cf (bug 1456189) for bustage on selftest.py on a CLOSED TREE 2018-05-18 01:00:26 +03:00
Alex Gaynor bb3ec615d6 Bug 1456189 - Simplify BufferList::Extract to make the lifetimes clearer. r=froydnj 2018-05-17 17:16:43 -04:00
Tom Ritter 4c56c059bb Bug 1460645 Avoid the thread_local keyword for MinGW and instead use __thread r=froydnj
MozReview-Commit-ID: 5RPwQVatThs

--HG--
extra : rebase_source : 0ad9a69f51529c6a35dc76555e4cb5d37a087a28
2018-05-10 11:11:19 -05:00
Noemi Erli 5ffb086f4a Backed out changeset 98e368b5c4be (bug 1463035) for failures in tools/profiler/tests/chrome/test_profile_worker.html on a CLOSED TREE 2018-05-22 03:16:44 +03:00
Mike Hommey c51cee4730 Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r=jchen
For some reason, GNU as is not happy with the assembly generated after
bug 1238661 anymore on Debian armel.

OTOH, as mentioned in bug 1238661 comment 4, we actually don't need this
workaround anymore, so let's just kill it.

--HG--
extra : rebase_source : 6fd06832136d4f840c65f74b63f1c1bec48d525d
2018-05-21 12:04:22 +09:00
Nathan Froyd d0ba1c83de Bug 1410186 - turn Maybe assertions into diagnostic assertions; r=bkelly
We out-of-line the relevant functions because assertions can generate
quite a bit of code, and we'd rather let the compiler determine if these
functions should be inlined now.
2018-05-15 16:34:59 -04:00
Ryan VanderMeulen 1e5a06e4b0 Bug 1460316 - Update lz4 to version 1.8.2. r=froydnj 2018-05-09 12:16:28 -04:00
Aaron Klotz 84feb9c523 Bug 1460057: Update WindowsVersion with latest Windows 10 build numbers; r=froydnj 2018-05-07 17:24:51 -06:00
Gerald Squelart 9b8e47ab12 Bug 1448494 - NonDereferenceable<T> wraps a T* and prevents dereferencing ops - r=froydnj
NonDereferenceable denotes the intent that a pointer will (most likely) not be
dereferenced, but its numeric value may be used for e.g. logging purposes.

Dereferencing operations are explicitly disabled to avoid unintentional misuses.
Casting is still possible between related types (same as with raw pointers),
but pointers stay safely stored inside NonDereferenceable objects. These casts
do not trigger `clang++ -fsanitize=vptr` errors.

MozReview-Commit-ID: 5885pB7hSFR

--HG--
extra : rebase_source : 3c4011da64d84f1b19991742b76bafbffa90d590
2018-03-28 17:48:53 +11:00
Masatoshi Kimura 2b6d5d5d7e Bug 1442275 - Implement a path charset agnostic wrapper for PR_LoadLibraryWithFlags. r=froydnj
MozReview-Commit-ID: 5rjmcv4kz9x

--HG--
extra : rebase_source : b57c7e79ceaa2dc3d65f52ee8f665c640dd1f41c
2018-04-24 00:31:53 +09:00
Jon Coppeard edcb15ad07 Bug 1456875 - Add const iterators for LinkedList r=Waldo 2018-04-30 10:21:31 +01:00
Jeff Walden 04d21ccac0 Bug 1451248. r=jorendorff, r=bz
--HG--
extra : rebase_source : e26439a5954162bdaf332fbd63d623a3810e19e0
2018-04-25 19:40:09 -07:00
Alex Gaynor 3e8fd2dc07 Bug 1450232 - in IPC, check that lengths fit in the available data before allocating data; r=mccr8
There are three things we want to be true:

a) If the child sends a large value and the parent can't allocate enough space
   for it we use an infallible allocation so the parent dies with an OOM.
b) If a fuzzer generates (huge-length, small-data) we don't try to allocate
   huge-length bytes; knowing that the read will fail.
c) No fuzzer-specific branches in the core IPC serialization code.

Finally, this makes (huge-length, small-data) consistent with other cases where
the data is potentially truncated: ReadParam returns false.

MozReview-Commit-ID: 6nDKrw5z4pt

--HG--
extra : rebase_source : 58372d29139e9545a6ed2852c7243affeab6fdb7
2018-04-19 16:53:29 -04:00
Nathan Froyd 9362ad6e83 Bug 1454052 - make MakeScopeExit a MOZ_MUST_USE function; r=gerald
Otherwise, one can do thinkos like:

  MakeScopeExit(...);

and the scope exiting function will execute much earlier than the
intended:

  auto guard = MakeScopeExit(...);
2018-04-18 12:14:18 -04:00
Margareta Eliza Balazs dbef13782c Backed out 2 changesets (bug 1451278) for breaking windows pgo builds a=backout
Backed out changeset ac685df07bfc (bug 1451278)
Backed out changeset 5944ccd5060d (bug 1451278)
2018-04-16 21:41:03 +03:00
Nicholas Nethercote e1318b1d03 Bug 1451278 - Remove ConstExpr hash functions. r=froydnj
MozReview-Commit-ID: L6yRyt4DZRR

--HG--
extra : rebase_source : 2d56a50b1a99e66c397165b9b851e23ca66d97a0
2018-04-16 08:37:15 +10:00
Jeff Walden 821db93ccc Bug 1453456 - Replace nsCRT::IsAscii{Alpha,Digit} with mfbt/TextUtils.h versions. r=froydnj
--HG--
extra : rebase_source : b31986c0e6828be79442cfb0cf369eb80c232139
2018-04-12 20:19:30 -07:00
Jeff Walden 9ea9bcc2df Bug 1453456 - Add/use more ASCII alphanumeric testing/conversion functions from MFBT in SpiderMonkey code in various places. r=froydnj
--HG--
extra : rebase_source : b4e05102cce2ad5dabb973a3968f1112376da594
2018-04-10 11:42:54 -07:00
Tom Bannister 988d18881f Bug 1434710 - Replaced all instances of mozilla::IndexSequence, mozilla::MakeIndexSequence and mozilla::IndexSequenceFor with std::index_sequence, std::make_index_sequence and std::index_sequence_for and removed mfbt/IndexSequence.h. r=botond
MozReview-Commit-ID: 1Ema7TUNr5v

--HG--
extra : rebase_source : e5bb164dbe19993214e8c16f92b0a1f5d2ff3fa1
2018-04-09 21:12:13 +10:00
Sebastian Hengst 0819f35e51 Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
Masatoshi Kimura caada858fb Bug 1451722 - Constexpr-ify mozilla::Span more. r=hsivonen
MozReview-Commit-ID: B7sxH5BAdp6

--HG--
extra : rebase_source : 3e7bf5424478cdff6dfd1c25b9808a41cfb6e0d3
2018-04-05 21:55:00 +09:00
Tristan Bourvon a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Jeff Walden be8ccd5a6b Bug 1452619 - Implement mozilla::IsAsciiAlpha. r=froydnj
--HG--
extra : rebase_source : fd1e3284d293edad0bd96cc378eeeeb1bc2c8829
2018-04-09 12:02:43 -07:00
Nicholas Nethercote 374e333b76 Bug 1451658 - Add MOZ_STATIC_CLASS. r=mystor
MozReview-Commit-ID: HlbfoQypMcI

--HG--
extra : rebase_source : 3f91229f7190f04a9f512a6ac594674e05829039
2018-04-10 17:31:31 +10:00
Nathan Froyd cc035fe9e0 Bug 1444125 - don't poison Maybe on construction; r=gerald
This behavior is pretty heavy-handed and degrades performance.
2018-04-10 13:46:00 -04:00
Nathan Froyd e7e0eac6bc Bug 1444125 - work harder to generate good code for Maybe poisoning; r=gerald 2018-04-10 13:46:00 -04:00
Sylvestre Ledru 99f0e1b624 Bug 1447480 - Add support of MOZ_FALLTHROUGH_ASSERT without any argument r=hsivonen
MozReview-Commit-ID: 6xrdrggcVFR

--HG--
extra : rebase_source : f53d9a62e828d65469c42c79a468b5bea2e8b645
2018-04-05 11:42:23 +02:00
Jonathan Kew c66fb1e660 Bug 1451296 - Make enabling of font-variation-settings and font-optical-sizing properties dependent on adequate platform support at runtime. r=lsalzman 2018-04-05 18:53:56 +01:00
Masatoshi Kimura 3560ad5b6e Bug 1449094 - Implement constexpr mozilla::AllOf. r=froydnj
MozReview-Commit-ID: KvKY9CMqfww

--HG--
extra : rebase_source : 5e548884d3a331b5dc8704a690ccbd532ac2534a
2018-03-28 00:01:08 +09:00
Henri Sivonen 5f81ea7f50 Bug 1448591 - Make MakeStringSpan(nullptr) return an empty span. r=froydnj.
MozReview-Commit-ID: EyuLeWjEL7w

--HG--
extra : rebase_source : a40b671692db0e7faa7772654cb4b1ae75bd30a2
2018-03-24 21:36:00 +02:00
Bogdan Tara 8b1819017d Backed out changeset 577c20417552 (bug 1449094) for failing /builds/worker/workspace/build/src/mfbt/tests/TestAlgorithm.cpp CLOSED TREE 2018-03-30 01:54:04 +03:00
Masatoshi Kimura 316aea87d9 Bug 1449094 - Implement constexpr mozilla::AllOf. r=froydnj
MozReview-Commit-ID: KvKY9CMqfww

--HG--
extra : rebase_source : 15efd61da5b66d6bbb4655cf95936c5d36473a82
2018-03-28 00:01:08 +09:00
Emilio Cobos Álvarez 1f4687f9fc Bug 1448387: Use alignof() in HasFreeLSB. r=froydnj
This doesn't seem relevant for the differences between MOZ_ALIGNOF and alignof
mentioned in bug 1288016.

MozReview-Commit-ID: 8f9Ui7Aecfj
2018-03-23 19:09:42 +01:00
Jeff Walden 36462015eb Bug 1446592 - Update our local double_conversion to tip. Also remove one local patch as unnecessary as of MSVC 2010, hacking around prior versions' lack of <stdint.h> support. r=froydnj
--HG--
extra : rebase_source : ae21e264fc97373f42ea4a01189caed48e785e9c
2018-03-16 20:25:17 -07:00
Nicholas Nethercote cecefaa849 Bug 1443706 - Introduce ConstExprHashString(const char16_t*). r=jwalden
This is a `constexpr` alternative to HashString(const char16_t*). We can't make
HashString(const char16_t*) itself `constexpr` because HashUntilZero(const T*)
isn't in a form that older compilers (like GCC 4.9) allow to be made
`constexpr`. (The trick to satisfying those compilers is to use recursion
instead of iteration, to get the function into a single `return` statement.)

This requires making a bunch of other functions `constexpr` as well. It also
requires adding MOZ_{PUSH,POP}_DISABLE_INTEGRAL_CONSTANT_OVERFLOW_WARNING
macros to avoid some MSVC weirdness.

The introduction of RotateLeft5() partly undoes one of the patches from bug
1443342, but that's unavoidable.

This change will help with static allocation of static atoms (bug 1411469).

MozReview-Commit-ID: 7r3PnrQXb29
2018-03-08 10:27:14 +11:00
Jeff Walden 0eefeabe25 Bug 1445024 - Implement mozilla::WrappingSubtract. r=froydnj
--HG--
extra : rebase_source : 026268df1cb1cfc56873e61834ea90257645c508
2018-03-06 19:22:20 -08:00
Jeff Walden 83186da179 Bug 1445024 - Consolidate some WrappingOperations.h comments and implementation bits. r=froydnj
--HG--
extra : rebase_source : 7efdbb7fa034645f6699954810c52709e54e29fe
2018-03-12 12:56:39 -07:00
Jeff Walden 52d9907ee0 Bug 1445024 - Implement mozilla::WrappingAdd. r=froydnj
--HG--
extra : rebase_source : 3514c6487305e64ce19060cb05d39bc6eb2fd912
2018-03-06 19:21:58 -08:00
Narcis Beleuzu 298d1d55b5 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-03-13 12:36:54 +02:00
Emilio Cobos Álvarez 2125f0fbd4 Bug 1444416: Handle references in the "can run script" checker. r=mystor
MozReview-Commit-ID: 8F9HjiFqbGN

--HG--
extra : rebase_source : 03d49b9a605ff5eade81a814b0903f81d87720ab
2018-03-09 17:51:59 +01:00
Jeff Walden 15bf6fd876 Bug 1442967 - Boo, MSVC warns when a cast will truncate a numeric constant. Arguably a desirable warning generally, but here we specifically intend the cast to narrow, so disable the warning. r=me in a CLOSED TREE 2018-03-12 19:20:42 -07:00
Jeff Walden fc7dc7e60e Bug 1442967 - When doing a comparison against a 64-bit constant in code run only in 64-bit builds, but compiled in 32-bit builds, cast it to uintptr_t so that the comparison isn't clearly false in 32-bit builds. rs=froydnj by suggestion on IRC
--HG--
extra : rebase_source : 2be98a1a0c436664ea0fa3ef8be55a9fb71541af
2018-03-12 13:36:44 -07:00
Jeff Walden 1b063823be Bug 1442967 - Futz with a uintptr_t (as uint32_t) == uint64_t comparison to evade constantly-false compiler warnings in 32-bit builds. r=jorendorff 2018-03-09 21:59:08 -08:00
Nathan Froyd 1a68724fe3 Bug 1442304 - make already_AddRefed returnable in registers in non-DEBUG Unix builds; r=glandium,tjr
This change saves ~150k (!) of binary size on x86-64 Linux.
2018-03-07 14:27:28 -05:00
Jeff Walden 212527bdf1 Bug 1443342 - Remove XorShift128PlusRNG.h from integer-overflow sanitizer blacklisting. r=froydnj
--HG--
extra : rebase_source : 6ecedb849aa51cffc493017661025365ecdb1eb2
2018-03-06 09:33:52 -08:00
Jeff Walden ba5975180b Bug 1443342 - Opt one HashFunctions.h function out of integer-overflow sanitizing and don't blacklist HashFunctions.h. r=froydnj
--HG--
extra : rebase_source : a33b53362c1f9ce96df22a321990a45a224af9d6
2018-03-01 17:11:33 -08:00
Jeff Walden 75f86d4202 Bug 1443342 - Remove HashFunctions.h's RotateBitsLeft32 and use the general RotateLeft function instead. r=froydnj
--HG--
extra : rebase_source : 88ad42c5757d9f1f0df5590c647a840061523318
2018-03-01 17:05:58 -08:00
Dorel Luca 0e437cae41 Merge mozilla-central to mozilla-inbound 2018-03-06 20:46:45 +02:00
Gerald Squelart a1f5bed9e9 Bug 1443367 - Rework MakeNotNull to build with VS 2017 15.6 - r=njn
VS 2017 15.6 (March 2018) doesn't seem to understand
`*DeclVal<SharedFontList*>()` anymore.
To work around this issue, the pointed-to type is now extracted in a separate
struct, for which we provide a specialization for raw pointers, so we don't
encounter the shaky `*DeclVal<T*>()` statement anymore.

MozReview-Commit-ID: FuslManbfdB

--HG--
extra : rebase_source : be3813aa9a028e6891cb3de1fc4faae5bde0348e
2018-03-06 20:27:27 +11:00
Nathan Froyd 08e65e40ba Bug 1443265 - make already_AddRefed a MOZ_TEMPORARY_CLASS; r=mystor 2018-03-05 16:12:41 -05:00
Nathan Froyd 2bd0c8e0a2 Bug 1414901 - part 2 - poison Maybe<T> instances when not in use; r=Waldo 2018-03-06 11:35:50 -05:00
Nathan Froyd 2ac6e45b48 Bug 1414901 - part 1b - eliminate alignment requirements for poisoning memory; r=Waldo
mozWritePoison secretly depended on the passed-in pointer being aligned
as though it were a pointer to uintptr_t, as it used bare stores to
C-casted pointers to accomplish poisoning.  But this is an unnecessary
limitation: we can use memcpy and rely on the compiler to appropriately
inline the store to an unaligned store instruction if necessary.
2018-03-06 11:35:50 -05:00
Nathan Froyd 450618b0af Bug 1414901 - part 1a - make mozWritePoison respect its documentation; r=Waldo
The documentation for mozWritePoison says that only an even number of
sizeof(uintptr_t) bytes are overwritten; any trailing bytes are not
touched.  This documentation doesn't correspond to how the function
actually works.  The function as written will happily overwrite trailing
bytes and any bytes not contained in the object, if the passed-in size
isn't divisible by sizeof(uintptr_t).  Let's fix that.
2018-03-06 11:35:50 -05:00
Jason Orendorff ef8693d6f2 Bug 1413049 - Part 1a: In a test, zero-pad hex integer constants to the width of their type. r=Waldo.
--HG--
extra : rebase_source : dfd3f1a00470856a177a526d385dd0f1b7d0ec38
2018-03-01 20:06:37 -06:00
Jason Orendorff 2418dfb4b3 Bug 1413049 - Part 1: Add methods to EndianUtils for pointer-sized integers. r=Waldo.
--HG--
extra : rebase_source : 115e40ecaee589b07e4ff9534694e56af7690e9b
2018-03-01 11:05:13 -06:00
Jeff Walden 25a7df6306 Bug 1441657 - Implement mozilla::WrappingMultiply. r=froydnj
--HG--
extra : rebase_source : 57d1796976a25597ee4dda90561d40debc6a9fc9
2018-02-15 17:36:55 -08:00
Jeff Walden b0074d3a7d Bug 1441657 - Create a new mozilla/WrappingOperations.h header to contain implementations of common math operations with well-defined wraparound semantics. r=froydnj
--HG--
rename : mfbt/MathAlgorithms.h => mfbt/WrappingOperations.h
rename : mfbt/tests/TestMathAlgorithms.cpp => mfbt/tests/TestWrappingOperations.cpp
extra : rebase_source : 552a0f17d7ba2ad6229d45fd2945592aceabb354
2018-02-15 17:36:50 -08:00
Blake Kaplan 32db9fed96 Bug 1404297 - Add a move constructor to SegmentedVector. r=smaug
Given that we have a SegmentedVector of nsCOMPtrs, it's probably worth
avoiding copying it.

MozReview-Commit-ID: GHyfVLrdnlQ

--HG--
extra : rebase_source : 75df805d8b2df32b76ee77b95ced625f20331744
2018-03-01 11:26:54 -08:00
Masatoshi Kimura 6648e322a9 Bug 1441112 - Stop including <iostream> in FStream.h. r=froydnj
MozReview-Commit-ID: 8SBsucRbL3i

--HG--
extra : rebase_source : 385a9fafbc07753c1273ed25b09e7c00edb5fe36
2018-02-28 21:45:04 +09:00
Sylvestre Ledru b7b13979a7 Bug 1370794 - Use bool instead of integer being casted to bool r=Ehsan
MozReview-Commit-ID: lUVFeU0Y0p

--HG--
extra : rebase_source : c2dac9c0e0345111f68aea2b9e359ad94086430d
2018-02-07 15:15:28 +01:00
Jeff Walden 1b16de9738 Bug 744965 - Implement mozilla::NumberEqualsInt32 in a way that doesn't depend on undefined behavior casting an out-of-range floating point number to int32_t. r=froydnj
--HG--
extra : rebase_source : dc4781e2a31ee0e75fc62951cbdc71eaa9fd7b1c
2018-02-15 17:22:14 -08:00
Jeff Walden 5472050225 Bug 1438750 - Remove mfbt/double-conversion.h, and change existing users to instead do #include "double-conversion/double-conversion.h" themselves. r=froydnj on a CLOSED TREE
--HG--
extra : amend_source : 72f066d9c75ae5ccd4d1e929896a2b12aa0ddc8c
2018-02-21 10:15:43 +02:00
Cosmin Sabou 48de1e7807 Backed out changeset 1fcc972d445b (bug 744965) for assertion failures on TestFloatingPoint.cpp on a CLOSED TREE 2018-02-21 10:12:45 +02:00
Gurzau Raul 14b89a5ae5 Backed out changeset 66c1c1596bea (bug 1438750) for assertion failure at TestFloatingPoint.cpp on Windows platform 2018-02-21 08:29:50 +02:00
Jeff Walden 2b6c4bedad Bug 1438750 - Remove mfbt/double-conversion.h, and change existing users to instead do #include "double-conversion/double-conversion.h" themselves. r=froydnj
--HG--
extra : rebase_source : 76ecf4ab0caf7a5367636a866512931d3fd9b962
2018-02-15 21:02:53 -08:00
Jeff Walden e77ef331a3 Bug 744965 - Implement mozilla::NumberEqualsInt32 in a way that doesn't depend on undefined behavior casting an out-of-range floating point number to int32_t. r=froydnj
--HG--
extra : rebase_source : d6d890b7b20d93297f575abe838e8619418ea545
2018-02-15 17:22:14 -08:00
Sylvestre Ledru 78c25c6d82 Bug 1437482 - gcc 8 has no-sanitize but not the {un,}signed-integer-overflow option r=Waldo
MozReview-Commit-ID: EfRYhaISZfL

--HG--
extra : rebase_source : 2a5f32a71be4688d260786f6f762183f38b682a8
2018-02-12 12:07:52 +01:00
Masatoshi Kimura 9bbb2153d4 Bug 1428614 - Implement mozilla::IFStream and mozilla::OFStream. r=froydnj
This is drop-in replacements of std::ifstream and std::ofstream, but supports
widechar filenames on Windows. This is just an alias of std::ofstream on other
platforms.

MozReview-Commit-ID: FHNatG5595k

--HG--
extra : rebase_source : 0805153dd13907a6c3b6971bfc0b499a31416b9a
extra : intermediate-source : 3113df1e69bf7444105953df8610b8bbf5d4d41e
extra : source : 750263b126963d2634a89de0a2aac63efa4b49e6
2018-01-07 18:31:31 +09:00
Jeff Walden 0e77ce073b Bug 1435484 - Split the integer-overflow blacklist into two blacklists, one for signed integer overflow and one for unsigned integer overflow, and rename both configure flags to be clearer. r=decoder, r=froydnj
--HG--
rename : build/sanitizers/ubsan_blacklist_int.txt => build/sanitizers/ubsan_signed_overflow_blacklist.txt
rename : build/sanitizers/ubsan_blacklist_int.txt => build/sanitizers/ubsan_unsigned_overflow_blacklist.txt
2018-02-02 21:25:31 -08:00
Eric Rahm 61c1f85e41 Bug 1434689 - Part 2: Add MOZ_TEMPORARY_CLASS attribute. r=mystor
This adds the MOZ_TEMPORARY_CLASS attribute to Attributes.h.

--HG--
extra : rebase_source : aea2ac53705863a839bcf11245b67a9fc1da08bf
2018-01-31 15:22:42 -08:00
Nathan Froyd 46ffc41619 Bug 1435382 - fix documentation for AlignedElem; r=me
Sub-byte alignment isn't really a thing.

DONTBUILD because documentation fixes are always safe, amirite?
2018-02-02 15:24:51 -05:00
Tom Ritter 41a1a6c9b0 Bug 1433971 Clean up Assertions.h with respect to Unused Attributes r=froydnj
In Bug 1393538 I renamed MOZ_STATIC_ASSERT_UNUSED_ATTRIBUTE to MOZ_UNUSED_ATTRIBUTE,
moved it out of it's #define depth, and used it in toolkit. I also orphaned a
comment.

This was wrong. MOZ_UNUSED_ATTRIBUTE was basically identical to MOZ_MAYBE_UNUSED
which exists in Attributes.h (because it is an attribute, not an assertion.)

Undo that wrong thing: restore MOZ_STATIC_ASSERT_UNUSED_ATTRIBUTE to the correct
place, have toolkit use the correct macro, and remove MOZ_UNUSED_ATTRIBUTE.

MozReview-Commit-ID: 5BWWsXgbm9i

--HG--
extra : rebase_source : d07156068c877bf57d400bc6a71e115b7f1aef31
2018-01-29 11:36:19 -06:00
David Major b0f6b50b37 Bug 1422372: Mark MOZ_NoReturn as MOZ_MAYBE_UNUSED. r=Waldo 2018-01-30 14:15:51 +13:00
Daniel Zielas e80f2e7469 Bug 1427229 - Perform validation when sending an EnumSet over IPC. r=botond,froydnj
MozReview-Commit-ID: Cmugi1ldc1Z

--HG--
extra : amend_source : 88b792772ce7948172a68fda03d6d61de66347de
2018-01-21 21:23:21 +01:00
Jeff Walden 51f84c53a8 Bug 1432646 - Followup bustage fix for compilers that warn (error with -Werror-alike) when negating an unsigned expression. r=bustage in a CLOSED TREE 2018-01-27 00:25:40 -08:00
Jeff Walden 8314131139 Bug 1432646 - Implement mozilla::WrapToSigned. r=froydnj
--HG--
extra : rebase_source : 2c1a216830767da789eea59d00b55a45845f4d60
2018-01-25 14:48:01 -08:00
Masatoshi Kimura 17fb30182d Bug 1428543 - Add mozilla::filesystem::Path and use it in nsIFile. r=froydnj
Currently only |value_type| is implemented.

MozReview-Commit-ID: 1mejzvkuako

--HG--
extra : rebase_source : 69e08073adbb9a866db26e515702a0659ece0a70
extra : intermediate-source : 3696381ddfdc19ab2f901ca4247e1cb4efb27731
extra : source : 35d760da1d73dd51614f434c26e5ce80ff690829
2017-12-28 03:03:35 +09:00
Ryan VanderMeulen 77a9b22fbc Bug 1430708 - Update lz4 to version 1.8.1.2. r=froydnj 2018-01-22 08:48:44 -05:00
Chris Peterson 37efe4d0e6 Bug 1428535 - Add missing override specifiers to overridden virtual functions. r=froydnj
MozReview-Commit-ID: DCPTnyBooIe

--HG--
extra : rebase_source : cfec2d96faeb11656d86d760a34e0a04cacddb13
extra : intermediate-source : 6176724d63788b0fe8caa3f91607c2d93dbaa7ec
extra : source : eebbb0600447f9b64aae3bcd47b4be66c02a51ea
2017-11-05 19:37:28 -08:00
Masatoshi Kimura f4cb55c630 Bug 1428541 - Make char16ptr_t::operator bool() explicit. r=froydnj
clang-cl fails to build without this change due to ambiguous call.

MozReview-Commit-ID: 22x5PCsG221

--HG--
extra : rebase_source : 93d2d50abc126286ad78c1f3700fe358c507a826
extra : intermediate-source : a9c64eaa326a2c694456d2e8907074f75b66c645
extra : source : c0b55d2093f59a8dabf2640106befa0dae516906
2017-12-24 23:33:56 +09:00
Sylvestre Ledru c911c249ec Bug 1424866 - Update the comment for fix a warning: unnecessary parentheses in declaration of 'type name' r=gerald DONTBUILD 2018-01-04 11:59:13 +01:00
Sylvestre Ledru 530203c95e Bug 1424866 - Fix a warning: unnecessary parentheses in declaration of 'type name' r=gerald
MozReview-Commit-ID: CBOTKHgqDfV

--HG--
extra : rebase_source : cc9d339008e7024b5406153bad37e4d717c7ae59
2018-01-03 17:43:04 +01:00
Valentin Gosu 679361e438 Bug 1424834 - LinkedList::sizeOfExcludingThis should use ConstRawType instead of T* r=njn
MozReview-Commit-ID: 2EM9cEOAkIl

--HG--
extra : rebase_source : 05ebe36ecdaacbaf26bd1b6e23715035996f88b4
2017-12-20 01:13:53 +01:00
Dorel Luca d9227411a0 Backed out 2 changesets (bug 1424834) for AddressSanitizer failure r=backout a=backout
Backed out changeset 00e1d58aedfe (bug 1424834)
Backed out changeset 9b69f2b7d373 (bug 1424834)
2017-12-19 13:59:02 +02:00
Valentin Gosu 9d89df19e4 Bug 1424834 - LinkedList::sizeOfExcludingThis should use ConstRawType instead of T* r=njn
MozReview-Commit-ID: 2EM9cEOAkIl

--HG--
extra : rebase_source : b3950ed06e1bc014fff9aa1deb5c2387fb2eb5bb
2017-12-15 15:46:31 -06:00
Cosmin Sabou f0ab0b072a Backed out 2 changesets (bug 1424834) for leaks at netwerk/dns/nsHostResolver.cpp:352 r=backout a=backout
Backed out changeset 2503df83bbd9 (bug 1424834)
Backed out changeset 49cc08386f17 (bug 1424834)
2017-12-18 11:52:06 +02:00
Valentin Gosu a659128162 Bug 1424834 - LinkedList::sizeOfExcludingThis should use ConstRawType instead of T* r=njn
MozReview-Commit-ID: 2EM9cEOAkIl

--HG--
extra : rebase_source : b3950ed06e1bc014fff9aa1deb5c2387fb2eb5bb
2017-12-15 15:46:31 -06:00
Masatoshi Kimura 456098425e Bug 1424103 - constexpr-ify mozilla::Span. r=hsivonen
MozReview-Commit-ID: 4e98Aer9V1k

--HG--
extra : rebase_source : 44f87677a4918aea4abaf2721895e48045267c7b
2017-12-08 23:20:56 +09:00
Sylvestre Ledru 4591d82b23 Bug 1394734 - Replace CONFIG['CLANG*'] by CONFIG['CC_TYPE'] r=glandium
MozReview-Commit-ID: HbF5oT5HW6f

--HG--
extra : rebase_source : eca479b6ae4bff7f600d1cdb39e11ac2057e4e79
2017-12-07 22:09:38 +01:00
Sylvestre Ledru 5de63ef061 Bug 1394734 - Replace CONFIG['MSVC'] by CONFIG['CC_TYPE'] r=glandium
MozReview-Commit-ID: 5orfnoude7h

--HG--
extra : rebase_source : 1ed9a6b56e1d27221a07624767a7fb0e6147117f
2017-12-08 13:46:13 +01:00
Sylvestre Ledru 9bfe27d903 Bug 1394734 - Replace CONFIG['GNU_C*'] by CONFIG['CC_TYPE'] r=glandium
MozReview-Commit-ID: 7duJk2gSd4m

--HG--
extra : rebase_source : 7312fe276e561e8c034a5f6749774ae812727f9c
2017-12-07 22:09:15 +01:00
Boris Zbarsky be29e2b41d Bug 1418558 part 3. Make MOZ_KnownLive compile even when not doing a static analysis build. r=mystor
MozReview-Commit-ID: HNF3KfXaEIB
2017-12-05 11:18:16 -05:00
Jeff Muizelaar 07d53bd660 Bug 1379680. Add a way to append buffers to a BufferList. r=billm 2017-11-29 10:11:13 -05:00
Alfredo.Yang 0000c37a97 Bug 1419682 - add unwrap_or() for Result. r=Waldo
MozReview-Commit-ID: FmPvPzUmN9j

--HG--
extra : rebase_source : d5d3b3ca42b839b82886512ada8bc49551a60d8a
2017-11-22 17:14:28 +08:00