Commit Graph

1555 Commits

Author SHA1 Message Date
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
Nika Layzell
a124bfae77 Bug 1418465 - Add an opt-out to the MOZ_CAN_RUN_SCRIPT analysis, r=andi
MozReview-Commit-ID: 2YKncUdrT5p
2017-11-24 11:15:17 -05:00
Dragan Mladjenovic
0da69a98b9 Bug 1417135 - Mark user-defined default constructor for ThreadLocalKeyStorage as constexpr. r=glandium
--HG--
extra : rebase_source : 0bb28ea9d255856b778689afd70f703e187cb086
2017-11-15 01:33:00 -05:00
Mike Hommey
a1ac099614 Bug 1416183 - Build LZ4 as C instead of including it as C++. r=froydnj
Apply 63a7f34fee
to our copy of lz4.h to allow to flag the lz4 symbols as not exported.

--HG--
extra : rebase_source : d9aafb04a56c0ae3620e0c873f77d124386a41c4
2017-11-15 12:51:01 +09:00
Mike Hommey
d89bedbf1e Bug 1416989 - Remove mfbt_staticruntime. r=froydnj
The library was added in bug 1160285 for webapprt, and webapprt was
removed in bug 1238079.

--HG--
extra : rebase_source : 8e47523263eb53707b0d916cc550418f1bc646ef
2017-11-14 15:55:53 +09:00
Nicholas Nethercote
4d9d19123c Backout 15b89e515c94 (bug 1410186) for causing too many crashes on Nightly. 2017-11-13 12:14:02 +11:00
Nathan Froyd
37e5710099 Bug 1410186 - turn Maybe assertions into release assertions; r=bkelly
We out-of-line the relevant functions because release assertions can
generate quite a bit of code, and we'd rather let the compiler determine
if these functions should be inlined now.
2017-11-09 12:27:51 -05:00
Nathan Froyd
4c1bca4cb9 Bug 1412825 - fix lz4 deprecated attribute with clang and c++14; r=RyanVM
This is the upstream fix from https://github.com/lz4/lz4/pull/393.
2017-10-30 10:12:38 -04:00
Nathan Froyd
840ac6d981 Bug 1385438 - make mozilla::RefCounted use the strongest memory consistency necessary; r=jrmuizel
We don't need to use sequential consistency for everything, we can get
by with using weaker memory consistency models depending on the operation.
2017-10-27 13:05:51 -04:00
Nathan Froyd
d3031ab529 Bug 1409398 - remove EnumSet::initVersion; r=sylvestre
We don't need this function anymore with member initializer syntax.
2017-10-26 14:54:23 -04:00
Joel Maher
04fee04208 Bug 1411586 - mfbt is missing BUGZILLA_COMPONENTS defined in-tree. r=froydnj 2017-10-26 04:53:23 -04:00
Sylvestre Ledru
d60d69e2cb Bug 1411001 - Remove the +x permissions on cpp & h files r=froydnj
MozReview-Commit-ID: DjDkL20wRg0

--HG--
extra : rebase_source : a343d83d1f4e97e4ba56d0f57fec93079df0b5ea
2017-10-23 20:59:55 +02:00
Gerald Squelart
5bea7c3a56 Bug 1410252 - MakeNotNull<PointerType, OptionalPointeeType>(Args...) - r=njn
MakeNotNull is similar to UniquePtr, in that it combines the infallible
allocation and construction of an object on the heap and wraps the (raw or
smart) pointer into a NotNull.
It skips the unnecessary null check from WrapNotNull, and removes the usual
naked 'new' used in many WrapNotNull calls.

MozReview-Commit-ID: UwCrhDnkUg

--HG--
extra : rebase_source : 5a027165fc17ed748783c7ffda03eb421865ad6e
2017-10-20 14:56:01 +11:00
Lee Salzman
70cd2a8499 Bug 1404742 - add test for ThreadSafeWeakPtr. r=nfroyd
MozReview-Commit-ID: GkNXsTLcN7m
2017-10-18 14:21:27 -04:00
Lee Salzman
3ffe69dad3 Bug 1404742 - add ThreadSafeWeakPointer to MFBT. r=nfroyd 2017-10-18 14:21:23 -04:00
Sylvestre Ledru
f4fab71f73 Bug 1409382 - EnumSet.h - Initialize mVersion to silence a warning with gcc 8 r=froydnj
MozReview-Commit-ID: CfTs6IAP1z5

--HG--
extra : rebase_source : 80051fe498d20e08060afca577a6abc4ee3c35cd
2017-10-17 15:19:16 +02:00
Mike Hommey
9f2dd4775e Bug 1407468 - Replace multiple !JS_STANDALONE with MOZ_WIDGET_TOOLKIT. r=mshal
--HG--
extra : rebase_source : 4f9f9f583c3422ed0f8d1d65ea8e7575bd9baf2c
2017-10-05 14:50:01 +09:00
Jeff Walden
a3d9df23d5 Bug 1407137 - Implement Swap(Atomic<T, Order>&, Atomic<T, Order>&) = delete; to remove an actually-non-atomic footgun. r=froydnj
--HG--
extra : rebase_source : 6afed8e85fcf8801144a1a34ea07f590baa0f5e0
2017-10-10 10:19:31 -07:00
Jeff Walden
be56429c85 Bug 1402344 - Update mfbt-double-conversion to the latest upstream rev. r=froydnj
--HG--
rename : mfbt/double-conversion/source/LICENSE => mfbt/double-conversion/double-conversion/LICENSE
rename : mfbt/double-conversion/source/README.md => mfbt/double-conversion/double-conversion/README.md
rename : mfbt/double-conversion/source/bignum-dtoa.cc => mfbt/double-conversion/double-conversion/bignum-dtoa.cc
rename : mfbt/double-conversion/source/bignum-dtoa.h => mfbt/double-conversion/double-conversion/bignum-dtoa.h
rename : mfbt/double-conversion/source/bignum.cc => mfbt/double-conversion/double-conversion/bignum.cc
rename : mfbt/double-conversion/source/bignum.h => mfbt/double-conversion/double-conversion/bignum.h
rename : mfbt/double-conversion/source/cached-powers.cc => mfbt/double-conversion/double-conversion/cached-powers.cc
rename : mfbt/double-conversion/source/cached-powers.h => mfbt/double-conversion/double-conversion/cached-powers.h
rename : mfbt/double-conversion/source/diy-fp.cc => mfbt/double-conversion/double-conversion/diy-fp.cc
rename : mfbt/double-conversion/source/diy-fp.h => mfbt/double-conversion/double-conversion/diy-fp.h
rename : mfbt/double-conversion/source/double-conversion.cc => mfbt/double-conversion/double-conversion/double-conversion.cc
rename : mfbt/double-conversion/source/double-conversion.h => mfbt/double-conversion/double-conversion/double-conversion.h
rename : mfbt/double-conversion/source/fast-dtoa.cc => mfbt/double-conversion/double-conversion/fast-dtoa.cc
rename : mfbt/double-conversion/source/fast-dtoa.h => mfbt/double-conversion/double-conversion/fast-dtoa.h
rename : mfbt/double-conversion/source/fixed-dtoa.cc => mfbt/double-conversion/double-conversion/fixed-dtoa.cc
rename : mfbt/double-conversion/source/fixed-dtoa.h => mfbt/double-conversion/double-conversion/fixed-dtoa.h
rename : mfbt/double-conversion/source/ieee.h => mfbt/double-conversion/double-conversion/ieee.h
rename : mfbt/double-conversion/source/strtod.cc => mfbt/double-conversion/double-conversion/strtod.cc
rename : mfbt/double-conversion/source/strtod.h => mfbt/double-conversion/double-conversion/strtod.h
rename : mfbt/double-conversion/source/utils.h => mfbt/double-conversion/double-conversion/utils.h
extra : rebase_source : 2d03850dcd1db749f0debecffec2e870acd1b958
2017-10-09 22:15:37 -07:00
Jean-Yves Avenard
a81f8e9be1 Bug 1406793 - Make IsWindows* methods thread-safe. r=froydnj
MozReview-Commit-ID: 9AmhHv2g983

--HG--
extra : rebase_source : c814d15bdbfacdbe48fe7705e41a8c8878339a9a
2017-10-09 10:36:23 +02:00
Nicholas Nethercote
d225f7151b Bug 1400460 - Rename nsIAtom as nsAtom. r=hiro.
(Path is actually r=froydnj.)

Bug 1400459 devirtualized nsIAtom so that it is no longer a subclass of
nsISupports. This means that nsAtom is now a better name for it than nsIAtom.

MozReview-Commit-ID: 91U22X2NydP

--HG--
rename : xpcom/ds/nsIAtom.h => xpcom/ds/nsAtom.h
extra : rebase_source : ac3e904a21b8b48e74534fff964f1623ee937c67
2017-10-03 09:05:19 +11:00
Chris Peterson
7bbe4a40e6 Bug 1405582 - Span: avoid repeated calls to size(). r=hsivonen
MozReview-Commit-ID: BKFrbvEt57l

--HG--
extra : rebase_source : 9aeb6fd018da5b8623f14ab927bd786c29ae56ae
extra : source : c5bedfde8b9dc2929fc14cfc2dc816e5f08b4ad8
2017-09-19 13:18:38 -07:00
Chris Peterson
a48326552c Bug 1405582 - Span: delete implicit constructors for char* and char16_t*. r=froydnj,hsivonen
Delete Span's implicit constructors for char* and char16_t* pointers to avoid accidental construction in cases where a pointer does not point to a zero-terminated string. Use the MakeStringSpan() function instead.

I deleted both the const and non-const char* and char16_t* constructors, in the name of cross-compiler consistency. If we only delete the const char* and char16_t* constructors, for some reason, MSVC complains that `Span<char> s(charArray)` uses a deleted constructor while clang nor gcc permit it. I don't know if this is a compiler bug in MSVC or clang and gcc.

Also, do not permit MakeSpan() for string literals (const char and char16_t arrays) because the Span length would include the zero terminator, which may surprise callers. Use MakeStringSpan() to create a Span whose length that excludes the string literal's zero terminator or use the MakeSpan() overload that accepts a pointer and length and specify the string literal's full length.

The following Span usages are prevented:

  Span<const char> span("literal"); // error
  Span<char> span(charArray); // error

  Span<const char> span;
  span = "literal"; // error
  span = charArray; // error

  MakeSpan("literal"); // error

The following Span usages are still permitted:

  assert(MakeStringSpan("literal") == 8); // OK: span length is calculated with strlen() and excludes the zero terminator
  MakeStringSpan(charArray); // OK: span length is calculated with strlen() and excludes the zero terminator
  MakeSpan(charArray); // OK: span length is the char array size including any zero terminator

MozReview-Commit-ID: Et71CpjsiyI

--HG--
extra : rebase_source : f6f8bdb28726f0f2368fdfdd039fb1d7dcf2914e
extra : source : 0547d8924ffc7713d6cf32cc06eeeaf00e0d69a3
2017-09-20 00:38:07 -07:00
Jim Blandy
d68a13309e No bug: RollingMean.h doc fix. DONTBUILD r=kentuckyfriedtakahe
--HG--
extra : rebase_source : ea6ed30a67a1b0d3d19048b3c2b61857514371da
extra : amend_source : 3dc9b5c144c565ca9b90914de626c15e610aa372
2016-12-20 23:11:30 -08:00
Sebastian Hengst
9187795579 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: 74cERYrHFIG
2017-09-28 11:44:21 +02:00
Tom Ritter
86d478e605 Bug 1402355 Require TLS_OUT_OF_INDEXES to be defined before ThreadLocalKeyStoragewill be defined on Windows r=glandium
ThreadLocalKeyStorage uses Thread Local APIs that are declared in
processthreadsapi.h (although it's more common to just include
windows.h). If a caller wants to use this class, it is their
responsibility to include an appropriate header before including
ThreadLocal.h


MozReview-Commit-ID: GO5dHKVWpZO

--HG--
extra : rebase_source : ff8d6cda1eed7bd9d54745c869b4e47a895b605a
2017-09-27 15:09:23 -05:00
Luke Wagner
bb375a16d4 Bug 1329019 - Allow specifying capacity to Vector::replaceRawBuffer (r=froydnj)
MozReview-Commit-ID: 9Eq6PR53n4i
2017-09-22 10:34:24 -05:00
Luke Wagner
231c33a9fe Bug 1329019 - Vector::podResizeToFit should update reserved (r=froydnj)
MozReview-Commit-ID: CkoNRjxmjom
2017-09-22 10:33:36 -05:00
Mats Palmgren
b00f969bb5 Bug 1356936 - Use __builtin_add/sub/mul_overflow() where available to optimize CheckedInt. r=waldo,ehsan
MozReview-Commit-ID: ARw6zNelpSk
2017-09-21 18:24:10 +02:00
Dimitry Andric
f2d86a8b30 Bug 1399412 - Work around clang assertion by wrapping lz4.c in an extern C block. r=froydnj
MozReview-Commit-ID: LLgSbJadbyJ

--HG--
extra : amend_source : 08d7908fe6807db654411fc291bccc98496d4275
2017-09-13 09:43:00 -04:00
Wes Kocher
ff68b95b87 Merge inbound to central, a=merge
MozReview-Commit-ID: ClVRh99eIUo
2017-09-14 00:03:28 -07:00
Sebastian Hengst
123fb86836 merge mozilla-central to mozilla-inbound. r=merge a=merge 2017-09-14 00:15:34 +02:00
Matt Woodrow
a56e3551a2 Bug 1397056 - Add Contains and a return parameter to Remove for SmallPointerArray. r=froydnj
* * *
[mq]: fix

MozReview-Commit-ID: 5laM7PQLP7X
2017-09-12 14:11:47 -04:00
Mike Hommey
087c1cda52 Bug 1399031 - Add a Tls{Get,Set}Value-based ThreadLocal implementation for Windows. r=froydnj
--HG--
extra : rebase_source : 13a407d35973ba2ed6da29195f5ce8a2c0f7cff4
2017-09-12 16:04:17 +09:00
Mike Hommey
97e87fc179 Bug 1399031 - Expose pthread_{get,set}specific-based TLS whether "native" TLS is supported or not. r=froydnj
There are use cases for wanting a specific TLS implementation
independently of whether __thread or thread_local are supported.
This is one step in that direction, making the
pthread_{get,set}specific-based implementation available independently.

We still keep everything under the mozilla::detail namespace because
it's still better if people don't try to use mozilla::ThreadLocal
directly.

--HG--
extra : rebase_source : 095b95a577b85efaaf2f3c0b7c3ac968ff711738
2017-09-12 15:37:31 +09:00
Kevin Hsieh
a0a376f2f1 Bug 1396026 - Update OTS to accept Awami Nastaliq. r=froydnj,jfkthame
MozReview-Commit-ID: EvF3YDhuwNn

--HG--
extra : rebase_source : 20046aa4f2695f923574bf00207f06a113d1f246
2017-09-07 10:40:59 -07:00
Wes Kocher
b1233c7d04 Backed out changeset 371a03aa9b24 (bug 1397056) for build errors in SmallPointerArray.h a=backout CLOSED TREE
MozReview-Commit-ID: FNVPjKmVCWB

--HG--
extra : rebase_source : 41e380e59d9eead945ba515d85c1b9195329bc74
2017-09-12 12:39:09 -07:00
Matt Woodrow
5675f29866 Bug 1397056 - Add Contains and a return parameter to Remove for SmallPointerArray. r=froydnj
* * *
[mq]: fix

MozReview-Commit-ID: 5laM7PQLP7X

--HG--
extra : rebase_source : f1baa7c1581fcc864d2b548989e967f57e24b921
2017-09-12 14:11:47 -04:00
Ryan VanderMeulen
909ebdebd8 Bug 1398021 - Update lz4 to version 1.8.0. r=froydnj 2017-09-12 09:00:37 -04:00
Mike Hommey
be1493b6fc Bug 1396723 - Use DoublyLinkedList in mozjemalloc. r=froydnj
Mozjemalloc uses its own doubly linked list, which, being inherited from
C code, doesn't do much type checking, and, in practice, is rather
similar to DoublyLinkedList, so use the latter instead.

--HG--
extra : rebase_source : 9eb7334b6dde05f9af0eaea4184e532c69d0264e
2017-09-02 08:55:42 +09:00
Mike Hommey
0d8ed2b1a5 Bug 1396723 - Simplify the trait users of DoublyLinkedList need to define. r=froydnj
While the flexibility of the current trait is nice, it's actually not
used to its fullest anywhere, and is boilerplate-y. While it is useful
to be able to put the links anywhere, there's not much usefulness from
being able to split mNext and mPrev.

So instead of a trait that allows to get/set mNext and mPrev
independently, we just use a trait that tells how to get a reference to
a DoublyLinkedListElement from a list element itself.

--HG--
extra : rebase_source : 674277bac4fc979f2e483a77b5ef1495baccc7fe
2017-09-02 08:09:58 +09:00
Mike Hommey
18212266ea Bug 1398543 - Add missing condition in DoublyLinkedList::ElementNotInList. r=froydnj
--HG--
extra : rebase_source : fa07b148bd0d7e7428e70fb8a05edb5792836135
2017-09-10 08:49:56 +09:00
Chris Manchester
c0a229d4c3 Bug 1386876 - Replace all uses of DISABLE_STL_WRAPPING with a template, remove DISABLE_STL_WRAPPING. r=glandium
MozReview-Commit-ID: FMEtb5PY7iP

--HG--
extra : rebase_source : 3cdee7528846462c758e623d6bcd2e6e17dbabff
2017-09-11 11:33:26 -07:00
Phil Ringnalda
bc78097d88 Backed out 2 changesets (bug 1396723) for !ElementAccess::Get(mHead).mPrev assertion failures
Backed out changeset 4f17343164b6 (bug 1396723)
Backed out changeset b744eba9ca78 (bug 1396723)

MozReview-Commit-ID: JbvM6oMxEFl
2017-09-06 21:39:20 -07:00
Mike Hommey
6b7116c52d Bug 1396723 - Use DoublyLinkedList in mozjemalloc. r=froydnj
Mozjemalloc uses its own doubly linked list, which, being inherited from
C code, doesn't do much type checking, and, in practice, is rather
similar to DoublyLinkedList, so use the latter instead.

--HG--
extra : rebase_source : 1d40653b8117e28d8633134f379540c3c517a306
2017-09-02 08:55:42 +09:00
Mike Hommey
b16f4035ba Bug 1396723 - Simplify the trait users of DoublyLinkedList need to define. r=froydnj
While the flexibility of the current trait is nice, it's actually not
used to its fullest anywhere, and is boilerplate-y. While it is useful
to be able to put the links anywhere, there's not much usefulness from
being able to split mNext and mPrev.

So instead of a trait that allows to get/set mNext and mPrev
independently, we just use a trait that tells how to get a reference to
a DoublyLinkedListElement from a list element itself.

--HG--
extra : rebase_source : f84c5799c305a4a3b7dc5deb727a05d4d537bb15
2017-09-02 08:09:58 +09:00
Wes Kocher
f66c96f2c8 Backed out 2 changesets (bug 1396723) for build failures in TestDoublyLinkedList.cpp a=backout
Backed out changeset 1c0f9d069ade (bug 1396723)
Backed out changeset 6ca94a450b81 (bug 1396723)

MozReview-Commit-ID: 2w3WTvhpg6J
2017-09-06 14:30:41 -07:00
Mike Hommey
d946f42f29 Bug 1396723 - Use DoublyLinkedList in mozjemalloc. r=froydnj
Mozjemalloc uses its own doubly linked list, which, being inherited from
C code, doesn't do much type checking, and, in practice, is rather
similar to DoublyLinkedList, so use the latter instead.

--HG--
extra : rebase_source : 7f2c03d6ba5c1da5d8badb0de710b7900e9d00c1
2017-09-02 08:55:42 +09:00
Mike Hommey
9a3dd41f50 Bug 1396723 - Simplify the trait users of DoublyLinkedList need to define. r=froydnj
While the flexibility of the current trait is nice, it's actually not
used to its fullest anywhere, and is boilerplate-y. While it is useful
to be able to put the links anywhere, there's not much usefulness from
being able to split mNext and mPrev.

So instead of a trait that allows to get/set mNext and mPrev
independently, we just use a trait that tells how to get a reference to
a DoublyLinkedListElement from a list element itself.

--HG--
extra : rebase_source : b7d502754a764670e291acdd56726948db935497
2017-09-02 08:09:58 +09:00
Kilik Kuo
3d9fbae6bd Bug 1279171 - Do not use WMF when application is in Windows pre-2000 compatibility mode. r=froydnj
MozReview-Commit-ID: BPiz2WWrshF

--HG--
extra : rebase_source : c5e78e94c542a5b00b06e177aa088ad3bb56da57
2017-08-24 11:46:56 +08:00
Kris Maglione
6bad4f8ef7 Bug 1366511: Part 3 - Add mozilla::ToResult() to convert other result types to equivalent Result. r=nbp,ehsan
Also adds a mozilla/ResultExtensions.h header to define the appropriate
conversion functions for nsresult and PRResult. This is in a separate header
since those types are not available in Spidermonkey, and this is the pattern
other *Extensions.h headers follow.

Also removes equivalent NS_TRY macros and WrapNSResult inlines that served the
same purpose in existing code, and are no longer necessary.

MozReview-Commit-ID: A85PCAeyWhx

--HG--
extra : rebase_source : a5988ff770888f901dd0798e7717bcf6254460cd
2017-08-29 21:28:31 -07:00
Kris Maglione
c9899cb3fa Bug 1366511: Part 2 - Allow autoconverting Err(nsresult) to nsresult. r=ehsan,nbp
This allows MOZ_TRY and MOZ_TRY_VAR to be transparently used in XPCOM methods
when compatible Result types are used.

Also removes a compatibility macro in SimpleChannel.cpp, and an identical
specialization in AddonManagerStartup, which are no longer necessary after
this change.

MozReview-Commit-ID: 94iNrPDJEnN

--HG--
extra : rebase_source : 24ad4a54cbd170eb04ded21794530e56b1dfbd82
2017-08-29 21:28:22 -07:00
Kris Maglione
92dcd409a3 Bug 1366511: Part 1 - Allow packing Result<T, nsresult> values into a single word. r=ehsan,nbp
When used as an error value, nsresult should never be NS_OK, which means that
we should be able to safely pack simple nsresult Result values into a single
word.

MozReview-Commit-ID: GJvnyTPjynk

--HG--
extra : rebase_source : ab5a64b545dfbfe9bbef167f8b63ecbf00b16e07
2017-08-31 16:01:43 -07:00
Nick Fitzgerald
9da40f6365 Bug 1277338 - Part 7: Export mozglue when JS_STANDALONE && !jemalloc; r=glandium,sfink
This makes sure that:

* We don't define `MOZ_GLUE_IN_PROGRAM` so that everything in mozglue gets
  defined.

* `MFBT_API`'s symbol export rules match `JS_PUBLIC_API` and `EXPORT_JS_API`.

* We add mozglue to SpiderMonkey's `USE_LIBS` when jemalloc is disabled.
2017-08-31 15:59:13 -07:00
Tom Ritter
92ff663a31 Bug 1393498 Mark the stub_BaseThreadInitThunk as MOZ_NORETURN to silence a warning about a noreturn function not returning r=dmajor,froydnj
/home/worker/workspace/build/src/mozglue/build/WindowsDllBlocklist.cpp:816:1: error: 'noreturn' function does return [-Werror]

MozReview-Commit-ID: SYgPDW0sMV

--HG--
extra : rebase_source : 27b1dda404b3fc5fab95dd524677387bad921751
2017-08-24 22:49:09 -05:00
Tom Ritter
8dbe002119 Bug 1393538 Clean up unused variables in toolkit/ r=smaug
MozReview-Commit-ID: I6r50dqJJHJ

--HG--
extra : rebase_source : f1f773db8f0ec44c1cf6f194973f870b08f6138b
2017-08-24 15:07:59 -05:00
Bill McCloskey
f90a87caa9 Bug 1350432 - Initial Quantum DOM scheduler implementation, disabled by default (r=froydnj)
MozReview-Commit-ID: JWBxz3bwgwD
2017-08-25 10:28:23 -07:00
Bill McCloskey
06a265a5bd Bug 1350432 - Add TLS infallible init (r=froydnj)
MozReview-Commit-ID: 9Fgltrw4p8
2017-08-25 10:28:23 -07:00
Nathan Froyd
c5fa35746e Bug 1390568 - manually de-virtualize do_QueryReferent; r=ehsan
nsQueryReferent is defined as an nsCOMPtr_helper, which implies that
calling its operator() method requires a virtual call.  While
nsQueryReferent is marked `final`, compiler inlining decisions make it
impossible to de-virtualize the call to operator().  However, we have
many other classes returned by do_* functions that nsCOMPtr handles
directly, requiring no extra virtual calls, and we can give
nsQueryReferent the same treatment.
2017-08-24 20:04:31 -04:00
Tristan Bourvon
ba0998ae31 Bug 1380423 - Add static-analysis to enforce strict rules on functions which can run scripts. r=mystor
MozReview-Commit-ID: GGSyq0z5msB
2017-08-08 19:48:53 +03:00
Wes Kocher
fb8abb94c7 Merge inbound to central, a=merge
MozReview-Commit-ID: 1mWKzfX4kl
2017-08-23 18:07:24 -07:00
Luke Wagner
e59ff0294c Bug 1351488 - Add MOZ_XPCOM_ABI to mfbt (r=froydnj)
MozReview-Commit-ID: Hw3zDX3TOhs

--HG--
extra : rebase_source : 96d93215f9d79e376df25108d0f4d82a178bda28
2017-08-23 10:16:56 -05:00
James Cheng
5a887baca6 Bug 1392885 -Add debug message when misusing the guard object. r=froydnj
MozReview-Commit-ID: 78iFX5qUcTC

--HG--
extra : rebase_source : 320b23d8d6a1fcff7fe6573243f10393f1bf56cf
2017-08-23 11:59:21 +08:00
Xidorn Quan
667a3cb5a4 Bug 1391103 - Align Maybe::mStorage like when the type is in a struct. r=froydnj
MozReview-Commit-ID: 6ArNhZA4Wdf

--HG--
extra : rebase_source : f69ae80c146f2acb308a6c9707aac7ee22f5d992
2017-08-17 09:49:19 +10:00
Sylvestre Ledru
22a57591b0 Bug 1387002 - Replace .size() by .empty() when applicable in mfbt r=froydnj
MozReview-Commit-ID: 9S5oZQkykKv

--HG--
extra : rebase_source : dfc6b9bccb3a388486efb7179a5864b19e0952ec
2017-08-03 12:07:07 +02:00
Tristan Bourvon
2e77c99160 Bug 1374024 - add checker to prevent dangling pointers returned by method calls on temporaries. r=mystor
MozReview-Commit-ID: 9khNt59ONF
2017-07-05 16:14:21 +02:00
Cykesiopka
ec8581113b Bug 1355692 - Add MOZ_FALLTHROUGH macro definition for gcc 7 to suppress -Wimplicit-fallthrough warnings. r=glandium
The generic fallback MOZ_FALLTHROUGH definition is insufficient for GCC 7 and
above, resulting in --enable-warnings-as-errors builds failing.

The check for clang support is changed to use the __has_cpp_attribute macro,
which is more robust than checking the __cplusplus version.

Also, MOZ_FALLTHROUGH is now only defined in C++ code, since GCC errors out if
it encounters a scoped attribute being used with __has_cpp_attribute in C code.
No C code uses MOZ_FALLTHROUGH or derivatives at the moment.

MozReview-Commit-ID: 4nKFBRD5jSF

--HG--
extra : rebase_source : 0c37ae39c806ca24a3271d3ec19531dd16e05daf
2017-07-28 00:11:28 +08:00
Bill McCloskey
7e43e5439d Bug 1384395 - Use nsAutoOwningThread for mfbt/WeakPtr.h thread assertions (r=froydnj)
MozReview-Commit-ID: DF4DiffL4Qq
2017-07-28 13:11:44 -07:00
Carsten "Tomcat" Book
d360d49d2a merge mozilla-inbound to mozilla-central a=merge 2017-07-27 10:57:25 +02:00
Kartikaya Gupta
ba4b3b9101 Bug 1384233 - Remove SizePrintfMacros.h. r=froydnj
We have a minimum requirement of VS 2015 for Windows builds, which supports
the z length modifier for format specifiers. So we don't need SizePrintfMacros.h
any more, and can just use %zu and friends directly everywhere.

MozReview-Commit-ID: 6s78RvPFMzv

--HG--
extra : rebase_source : 009ea39eb4dac1c927aa03e4f97d8ab673de8a0e
2017-07-26 16:03:57 -04:00
Kris Maglione
8683b183cd Bug 1382645: Part 1 - Add memory reporter for StructuredCloneHolder binding implementation. r=billm
MozReview-Commit-ID: aK3ljfCJVi

--HG--
extra : rebase_source : d788c6c686cc72b423ca100795a379d343c398db
2017-07-25 14:53:41 -07:00
Michael Layzell
0969ebe118 Bug 1380410 - Add NeverAllocPolicy, r=erahm
MozReview-Commit-ID: 8U38Oj3vyaF
2017-07-25 11:26:21 -04:00
Jeff Hajewski
447dee122f Add IPC support for mozilla::Variant (bug 1371846); r=botond
Changes made:
* Add IPC::ParamTraits as a friend to mozilla::Variant in Variant.h.
  This is required so that `tag` can be accessed in the
  IPC::ParamTraits specialization.

* Add a IPC::ParamTraits specialization to IPCMessageUtils.h.

MozReview-Commit-ID: B3pGrZE1z0O

--HG--
extra : rebase_source : cb73873b87401846f79e124249c7ce00dff2de77
2017-07-21 07:18:02 -05:00
Nathan Froyd
fd24d774c3 Bug 1347963 - part 0 - use global qualification for GuardObjects.h macros; r=erahm
These macros can be used in cases where the `mozilla` namespace might
not refer to the toplevel `mozilla` namespace that was intended.  To
ensure that the macros always refer to the `mozilla` namespace in the
global namespace, use the appropriate qualification.
2017-07-24 17:05:01 -04:00
Jon Coppeard
3c71e685eb Bug 1382275 - Refactor incremental sweeping to more clearly express the control flow r=sfink 2017-07-26 14:19:11 +01:00
Sylvestre Ledru
7c0ae251cd Bug 1381253 - Remove redundant control flow declarations rs=ehsan
MozReview-Commit-ID: FFxP4aMCbOL

--HG--
extra : amend_source : 3aec108430b11048f47ffe19d5da7ac5034770a9
2017-07-15 19:03:04 +02:00
Ehsan Akhgari
2409266542 Bug 1379290 follow-up: Fix typo, DONTBUILD 2017-07-19 00:26:10 -04:00
Ehsan Akhgari
9ab7e769c8 Bug 1379290 - Improve the hashing of signed 64-bit integers by piggy-backing on the same mechanism as the one we use for hashing pointers; r=glandium 2017-07-19 00:00:19 -04:00
Benjamin Smedberg
c2b9935278 Bug 1379254 - Add a @note to the documentation of MOZ_CRASH_UNSAFE_* to make clear data collection risk and requirements, r=erahm
MozReview-Commit-ID: KssgssWHTUX

--HG--
extra : rebase_source : 1daa52ebe00e594534f06463e45f98e50ab8a49a
2017-07-07 14:44:26 -04:00
Carsten "Tomcat" Book
6f930b42b1 Backed out changeset 1a0693cc418b (bug 1374024) for bustage 2017-07-13 15:14:51 +02:00
Tristan Bourvon
473b245885 Bug 1374024 - add checker to prevent dangling pointers returned by method calls on temporaries. r=mystor
MozReview-Commit-ID: 9khNt59ONFE
2017-07-05 16:14:21 +02:00
Carsten "Tomcat" Book
2332473008 Backed out changeset 1a49d403a9a4 (bug 1374024) for bustage 2017-07-13 11:10:31 +02:00
Tristan Bourvon
20068f7ba3 Bug 1374024 - add checker to prevent dangling pointers returned by method calls
on temporaries. r=mystor

MozReview-Commit-ID: 9khNt59ONFE
2017-07-05 16:14:21 +02:00
Jim Blandy
70ad42d64f NO BUG: Fix misspelled name in comments. DONTBUILD r=jorendorff
--HG--
extra : rebase_source : db21b85604b4e486d54fa45c993a32a64d76778c
2016-03-23 10:29:45 -07:00
Botond Ballo
2c2d3ded79 Bug 1371771 - Add a MOZ_DEFINE_ENUM macro and variants to MFBT. r=froydnj
The macro simultaneously declares an enumeration and a count of its
enumerators.

A few variants of the macro are also provided to handle things like
enum classes, underlying types, and enumerations declared at class
scope.

MozReview-Commit-ID: 3z6yHnfXbLj

--HG--
extra : rebase_source : 92c333693e4bbf85b89cd3d7ac5b31f4b5434367
2017-06-30 19:58:11 -04:00
Christian Holler
b8ee76ebd8 Bug 1373256 - Changes to support -fsanitize=integer in the codebase. r=froydnj
The -fsanitize=integer analysis from UBSan can be helpful to detect signed and unsigned integer overflows in the codebase. Unfortunately, those occur very frequently, making it impossible to test anything with it without the use of a huge blacklist. This patch includes a blacklist that is broad enough to silence everything that would drain performance too much. But even with this blacklist, neither tests nor fuzzing is "clean". We can however in the future combine this with static analysis to limit ourselves to interesting places to look at, or improve the dynamic analysis to omit typical benign overflows.

It also adds another attribute that can be used on functions. It is not used right now because it was initially easier to add things to the compile-time blacklist to get started.

Finally, it includes a runtime suppression list and patches various parts in the test harnesses to support that. It is currently empty and it should not be used on frequent overflows because it is expensive. However, it has the advantage that it can be used to differentiate between signed and unsigned overflows while the compile-time blacklist cannot do that. So it can be used to e.g. silence unsigned integer overflows on a file or function while still reporting signed issues. We can also use this suppression list for any other UBSan related suppressions, should we ever want to use other features from that sanitizer.

MozReview-Commit-ID: C5ofhfJdpCS

--HG--
extra : rebase_source : 952043a441b41b2f58ec4abc51ac15fa71fc142f
2017-04-09 12:59:26 +02:00
Carsten "Tomcat" Book
d8e080c10c Backed out changeset 07e0c4e4ae85 (bug 1373256) for breaking android tests 2017-06-28 14:47:55 +02:00
Christian Holler
9924ab3046 Bug 1373256 - Changes to support -fsanitize=integer in the codebase. r=froydnj
The -fsanitize=integer analysis from UBSan can be helpful to detect signed and unsigned integer overflows in the codebase. Unfortunately, those occur very frequently, making it impossible to test anything with it without the use of a huge blacklist. This patch includes a blacklist that is broad enough to silence everything that would drain performance too much. But even with this blacklist, neither tests nor fuzzing is "clean". We can however in the future combine this with static analysis to limit ourselves to interesting places to look at, or improve the dynamic analysis to omit typical benign overflows.

It also adds another attribute that can be used on functions. It is not used right now because it was initially easier to add things to the compile-time blacklist to get started.

Finally, it includes a runtime suppression list and patches various parts in the test harnesses to support that. It is currently empty and it should not be used on frequent overflows because it is expensive. However, it has the advantage that it can be used to differentiate between signed and unsigned overflows while the compile-time blacklist cannot do that. So it can be used to e.g. silence unsigned integer overflows on a file or function while still reporting signed issues. We can also use this suppression list for any other UBSan related suppressions, should we ever want to use other features from that sanitizer.

MozReview-Commit-ID: C5ofhfJdpCS

--HG--
extra : rebase_source : 64aa804965d24bb90b103c00c692a2ac6859e408
2017-04-09 12:59:26 +02:00
David Anderson
6376e2c6bb Initial import of Advanced Layers. (bug 1365879 part 20, r=bas) 2017-06-23 14:23:12 -07:00
Carsten "Tomcat" Book
4119f2f8fb Backed out changeset 8069471cda21 (bug 1365879) 2017-06-23 12:15:35 +02:00
Carsten "Tomcat" Book
5f51e5596e merge mozilla-inbound to mozilla-central a=merge 2017-06-23 11:28:19 +02:00
David Anderson
8eb9963527 Initial import of Advanced Layers. (bug 1365879 part 20, r=bas)
--HG--
extra : rebase_source : 57032a3e3d383c27cfdc2f26841d387ca57d0011
2017-06-22 21:12:19 -07:00
Masatoshi Kimura
5480e54c73 Bug 1374629 - Ensure that mozilla::NotNull has zero space overhead. r=njn
MozReview-Commit-ID: 9Bo2qxd3HRv

--HG--
extra : rebase_source : e35aec9978f13092d91141955effb0942e84e70c
2017-06-22 00:52:28 +09:00
Chris Peterson
0a377e9314 Bug 1373525 - mfbt: Use unused GetPrev() member function in DoublyLinkedList test. r=froydnj
mfbt/tests/TestDoublyLinkedList.cpp:138:24 [-Wunused-member-function] unused member function 'GetPrev'

MozReview-Commit-ID: HQuTw0vXRKV

--HG--
extra : source : 0db3bd8a40d67a81b2f224dc9e63012cb832d0b9
extra : intermediate-source : 948c43ff15b4ca1a3db335544494562ec28e67cc
2017-06-11 14:39:42 -07:00
Jacek Caban
09b68c9d97 Bug 1368616 - Error compiling TestBlockingProcess.exe with MinGW: undefined reference to _imp___ZN7mozilla6UnusedE r=froydnj 2017-06-21 11:47:11 +02:00
Kris Maglione
fc7a069802 Bug 1373579: Part 3 - Require fallible Init method rather than infallible constructor when using fallible allocator. r=billm
MozReview-Commit-ID: 7ymS0e39mrJ

--HG--
extra : rebase_source : 1f191e5107431575d96d3dd66e5e4fda960917bd
2017-06-20 12:06:13 -07:00
Kris Maglione
33c22b03e7 Bug 1373579: Part 2 - Deserialize StructuredCloneBlob in segments rather than a single large allocation. r=billm
MozReview-Commit-ID: QZqPKSTheG

--HG--
extra : rebase_source : 6f1618a4542e34db92bafde3b4577197672eaf3f
2017-06-19 16:51:34 -07:00
Petr Sumbera
80944c40d8 Bug 1158445 - posix_madvise() should be used instead of madvise on Solaris. r=froydnj, r=jandem 2017-06-09 00:59:32 -07:00
Eric Rahm
e08fbaaad6 Bug 1353593 - Part 1: Allow implicit conversion of non-const char16ptr_t to wchar*. r=froydnj 2017-06-12 16:20:47 -07:00
Henri Sivonen
854d241f4f Bug 1359874 - Make Span::Elements() always return a non-null pointer. r=froydnj.
MozReview-Commit-ID: AGvNlHmonpi
2017-06-13 13:22:34 +03:00
Carsten "Tomcat" Book
87a9dfd869 Merge mozilla-central to autoland 2017-06-07 13:49:00 +02:00
Aaron Klotz
2bf8b9acc9 Bug 1368150: Add IsWindows10BuildOrNewer to MFBT; r=froydnj
MozReview-Commit-ID: 6lxZWDPc6ZQ

I need to be able to distinguish between builds of Windows 10. Unfortunately the
stuff that I am working with cannot be sorted out via feature detection.

--HG--
extra : rebase_source : 6da46f31815b2938d9a7a984473ed01c35b8a59d
2017-06-06 11:14:58 -06:00
Mike Hommey
05a36a133a Bug 1369622 - Add a static_assert when no variadic argument is given to MOZ_CRASH_UNSAFE_PRINTF. r=froydnj
If MOZ_CRASH_UNSAFE_PRINTF is only given a format string, it means
either arguments are missing, or MOZ_CRASH should be used instead.
Hint at that with a static_assert.

--HG--
extra : rebase_source : 355c37deb8b007e61939a4c657e411d110e7bbe7
2017-06-02 15:11:47 +09:00
Mike Hommey
8914ace4ce Bug 1369622 - Use MOZ_ARG_COUNT instead of MOZ_PASTE_PREFIX_AND_ARG_COUNT. r=froydnj
In a couple places, MOZ_PASTE_PREFIX_AND_ARG_COUNT is used to only count
the number of arguments, we can now use MOZ_ARG_COUNT directly for that.

--HG--
extra : rebase_source : 1064e4cc231863dc4aff83ee6bc90d318b4be418
2017-06-02 15:06:34 +09:00
Mike Hommey
38a6de0fe3 Bug 1369622 - Fix MOZ_FOR_EACH with an empty list. r=froydnj
I'm not sure how I tested MOZ_FOR_EACH in bug 1368932, but it turns out
it doesn't work with an empty list, despite
MOZ_PASTE_PREFIX_AND_ARG_COUNT now supporting 0 arguments.

Macros can be tricky, and it ends up being easier to make things work
cross-compiler with a separate macro that does the counting, and
(re)building MOZ_PASTE_PREFIX_AND_ARG_COUNT on top of that. Then
MOZ_FOR_EACH ends up working as expected with an empty list.

So this adds a MOZ_ARG_COUNT macro that counts the number of variadic
arguments it's given, and derives MOZ_PASTE_PREFIX_AND_ARG_COUNT from
it.

And this adds a testcase validating that MOZ_FOR_EACH works properly
with an empty list as a result.

--HG--
extra : rebase_source : 309371d87bd1561fbd2153f44fc1256185045d23
2017-06-02 14:53:54 +09:00
Sylvestre Ledru
e3c965eb6f Bug 1368079 - Enable the diagnostic assert when MOZ_DEV_EDITION is set r=froydnj,glandium
MozReview-Commit-ID: Dxi5jTGcrow

--HG--
extra : rebase_source : 959956094e6e64a50e307e48b11bb8791940d297
2017-06-05 23:47:02 +02:00
Gerald Squelart
f5f8abf86a Bug 1338389 - Tests for Variant's detail::Nth and detail::SelectVariantType - r=froydnj
MozReview-Commit-ID: 4QXdctmhNze

--HG--
extra : rebase_source : ddbdf8c79f49ebb02c9e68dca0be4a6ee9ad11f4
2017-06-06 16:59:00 +12:00
Gerald Squelart
a7c6eed190 Bug 1338389 - VariantType<T> and VariantIndex<N> permit unambiguous and variadic Variant construction - r=froydnj
MozReview-Commit-ID: 3rDya9ZBG6Y

--HG--
extra : rebase_source : d59375a7c805d6d470f5074669f3db5a609eb518
2017-05-08 11:26:07 +12:00
Gerald Squelart
78bc93af40 Bug 1338389 - Allow repeated Variant types, but prevent is/as/extract<T> for them - r=froydnj
MozReview-Commit-ID: 1yEUuGsht8k

--HG--
extra : rebase_source : fed56f264821e87cc474e6686e6dc203c147ac9b
2017-05-10 15:49:38 +12:00
Gerald Squelart
6015fbb5ac Bug 1338389 - Index-based Variant::is<N>, as<N>, and extract<N> - r=froydnj
MozReview-Commit-ID: C5iga0Eb1tH

--HG--
extra : rebase_source : d88cf614318cc8544d7ab52315e015a7ca4e5efd
2017-05-08 11:09:21 +12:00
Gerald Squelart
6f9c60dc02 Bug 1365802 - In VariantImplementation::moveConstruct, move the aRhs rvalue to the next moveConstruct - r=froydnj
Without the Move(), a temporary copy is created and passed as rvalue.

MozReview-Commit-ID: B3MXz6yzO39

--HG--
extra : rebase_source : 897493da0dfac983449da3853fe60bd6ac93117b
2017-05-18 15:39:40 +12:00
Xidorn Quan
32d247eb90 Bug 1162335 - Remove already_AddRefed::MatchNullptr. r=froydnj
MozReview-Commit-ID: 1hxUm9xdNhK

--HG--
extra : rebase_source : 73b9c196ca196d8d1226acb86855ad8b0b5dd4a4
2017-06-01 15:01:40 +10:00
Mike Hommey
c1becb4a54 Bug 1368932 - Allow MOZ_PASTE_PREFIX_AND_ARG_COUNT to work with 0 arguments. r=froydnj
At the same time, remove the MOZ_STATIC_ASSERT_VALID_ARG_COUNT, which
doesn't actually work for more than 50 arguments(*), and which is now not
useful to detect 0 arguments.

(*) the build fails, but not directly thanks to the static_assert it
expands to.

--HG--
extra : rebase_source : 8f0fe7b352c89b5a3ec87f42ef5464c370c362ef
2017-05-25 15:47:21 +09:00
Phil Ringnalda
18c2e05936 Backed out changeset df0ddb9c9bef (bug 1368079) for making DevEdition fail to build
MozReview-Commit-ID: BUE6UL0WiDW
2017-05-30 23:10:48 -07:00
Tom Ritter
815d66d2b3 Bug 1368406 Use non-Windows Printf Format Specifiers in MinGW r=froydnj
MinGW applies the gnu_printf format attribute, which expects
non-Windows format specifiers. These macros were not designed
to handle MinGW.

MozReview-Commit-ID: HuJrK43Bg1A

--HG--
extra : rebase_source : 6ccc1b2f4ab0e71584f442e86d94322e2c6382fb
2017-05-29 00:38:57 -05:00
Sylvestre Ledru
6ef28ca31d Bug 1368079 - Enable the diagnostic assert when MOZ_DEV_EDITION is set r=glandium
MozReview-Commit-ID: 1f6Kwne6zYf

--HG--
extra : rebase_source : 14f3697fe4ad7dcd356fdc1424ffc62f4ea9897b
2017-05-30 09:26:02 +02:00
Jonathan Kew
67ca6e1f88 Bug 1365928 - patch 1 - Add a MOZ_NONNULL_RETURN annotation to mfbt/Attributes.h. r=froydnj 2017-05-22 19:00:19 +01:00
Mike Hommey
c59dbe56d2 Bug 1365460 - Define MOZ_DIAGNOSTIC_ASSERT_ENABLED when MOZ_DIAGNOSTIC_ASSERT does something. r=froydnj
--HG--
extra : rebase_source : 557203426da1804504588198e0f8bccb3232858e
2017-05-18 11:14:17 +09:00
Bas Schouten
5a025e5c1f Bug 1331718 - Part 2: Add unit tests for SmallPointerArray. r=froydnj
MozReview-Commit-ID: 7xdQfv7Dpph
2017-05-10 05:07:38 +02:00
Bas Schouten
cad9560440 Bug 1331718 - Part 1: Add small pointer array. r=froydnj
MozReview-Commit-ID: EapU5nBw1d3
2017-05-10 05:07:37 +02:00
Nathan Froyd
e5fbad82a1 Bug 1363426 - part 3 - minor cleanups to Atomics.h; r=erahm
We can move the <atomic> #include to its normal place in the file now,
as well as merging some namespace blocks at the toplevel.
2017-05-10 09:58:28 -04:00
Nathan Froyd
c0a40e46f7 Bug 1363426 - part 2 - remove unneeded MOZ_HAVE_CXX1_ATOMICS; r=erahm
Now that we can use <atomic> everywhere, we don't need to test whether
the standard library we're using has <atomic> support.
2017-05-10 09:58:28 -04:00
Nathan Froyd
fe42aa0b9d Bug 1363426 - part 1 - remove #ifdeffery in Atomics.h; r=erahm
Every platform where we use GCC has <atomic>, so there's no need to use
GCC-specific __sync* intrinsics anymore.  The <atomic> header may
generate better code for several operations, as well.
2017-05-10 09:58:28 -04:00
Carsten "Tomcat" Book
cfae756c43 Backed out changeset 1b9ecb9b9fe8 (bug 1331718) 2017-05-10 12:09:08 +02:00
Carsten "Tomcat" Book
157a9fcde2 Backed out changeset 4527bd35cc4e (bug 1331718) 2017-05-10 12:09:06 +02:00
Bas Schouten
e8f8394b4e Bug 1331718 - Part 2: Add unit tests for SmallPointerArray. r=froydnj
MozReview-Commit-ID: 7xdQfv7Dpph
2017-05-10 05:07:38 +02:00
Bas Schouten
1e05e1f138 Bug 1331718 - Part 1: Add small pointer array. r=froydnj
MozReview-Commit-ID: EapU5nBw1d3
2017-05-10 05:07:37 +02:00
Tom Tromey
aa6e054b71 Bug 1334279 - mark vsprintf-likes with MOZ_FORMAT_PRINTF; r=froydnj
This annotates vsprintf-like functions with MOZ_FORMAT_PRINTF.  This may
provide some minimal checking of such calls (the GCC docs say that it
checks for the string for "consistency"); but in any case shouldn't
hurt.

MozReview-Commit-ID: HgnAK1LiorE

--HG--
extra : rebase_source : 9c8d715d6560f89078c26ba3934e52a2b5778b6a
2017-05-04 12:10:19 -06:00
Kris Maglione
7d8720d597 Bug 1359653: Part 3 - Add a clear() method and move asssignment operator to AutoCleanLinkedList. r=waldo
MozReview-Commit-ID: 2bUTMPviJzg

--HG--
extra : source : b49bd726c8a6e955c672df17b2b9134ab3ad34d5
2017-05-02 17:54:18 -07:00
Sebastian Hengst
d8a3163a9b Backed out changeset b49bd726c8a6 (bug 1359653) 2017-05-06 11:02:32 +02:00
Kris Maglione
e514005e37 Bug 1359653: Part 3 - Add a clear() method and move asssignment operator to AutoCleanLinkedList. r=waldo
MozReview-Commit-ID: 2bUTMPviJzg

--HG--
extra : rebase_source : c02a5c07030a8c2d5ad47a586a5af8f02e5ec2f6
2017-05-02 17:54:18 -07:00
Carsten "Tomcat" Book
fdc689ba16 merge mozilla-inbound to mozilla-central a=merge 2017-05-05 15:17:26 +02:00
Olli Pettay
a991315918 Bug 1358761 - dummy handling for return values in test, r=bustage 2017-05-05 10:43:37 +03:00
Olli Pettay
0096f25b51 Bug 1358761 - replace PurpleBlock with SegmentedVector to reduce indirect memory accesses when calling suspect, r=mccr8,nfroyd
--HG--
extra : rebase_source : e74be6bfb9efbba9361d2ce3c22518379a332200
2017-05-05 00:49:22 +03:00
Eric Rahm
14b9ff6984 Bug 935809 - Part 0: Include assertion header in DoublyLinkedList.h. r=waldo
MozReview-Commit-ID: 4G37uslYlOb
2017-05-03 19:22:39 -07:00
Sebastian Hengst
4183907e15 Backed out changeset ab81a462fcd4 (bug 935809) for jetpack and devtools failures, e.g. in browser_markers-docloading-03.js. r=backout 2017-05-03 00:22:28 +02:00
Eric Rahm
e9ead4b2e8 Bug 935809 - Part 0: Include assertion header in DoublyLinkedList.h. r=waldo
MozReview-Commit-ID: 4G37uslYlOb
2017-05-02 14:21:52 -07:00