Commit Graph

1369 Commits

Author SHA1 Message Date
Henri Sivonen
3a52652295 Bug 1349528 - Use encoding_rs for normalizing USVString. r=smaug
MozReview-Commit-ID: 9uG6j8UdfKR

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

--HG--
extra : moz-landing-system : lando
2018-08-16 10:15:07 +00:00
Henri Sivonen
3edc601325 Bug 1402247 - Use encoding_rs for XPCOM string encoding conversions. r=Nika,erahm,froydnj.
Correctness improvements:

 * UTF errors are handled safely per spec instead of dangerously truncating
   strings.

 * There are fewer converter implementations.

Performance improvements:

 * The old code did exact buffer length math, which meant doing UTF math twice
   on each input string (once for length calculation and another time for
   conversion). Exact length math is more complicated when handling errors
   properly, which the old code didn't do. The new code does UTF math on the
   string content only once (when converting) but risks allocating more than
   once. There are heuristics in place to lower the probability of
   reallocation in cases where the double math avoidance isn't enough of a
   saving to absorb an allocation and memcpy.

 * Previously, in UTF-16 <-> UTF-8 conversions, an ASCII prefix was optimized
   but a single non-ASCII code point pessimized the rest of the string. The
   new code tries to get back on the fast ASCII path.

 * UTF-16 to Latin1 conversion guarantees less about handling of out-of-range
   input to eliminate an operation from the inner loop on x86/x86_64.

 * When assigning to a pre-existing string, the new code tries to reuse the
   old buffer instead of first releasing the old buffer and then allocating a
   new one.

 * When reallocating from the new code, the memcpy covers only the data that
   is part of the logical length of the old string instead of memcpying the
   whole capacity. (For old callers old excess memcpy behavior is preserved
   due to bogus callers. See bug 1472113.)

 * UTF-8 strings in XPConnect that are in the Latin1 range are passed to
   SpiderMonkey as Latin1.

New features:

 * Conversion between UTF-8 and Latin1 is added in order to enable faster
   future interop between Rust code (or otherwise UTF-8-using code) and text
   node and SpiderMonkey code that uses Latin1.

MozReview-Commit-ID: JaJuExfILM9
2018-08-14 14:43:42 +03:00
Chris Peterson
02588f7a04 Bug 1481097 - xpcom: Remove nsTString literal string workaround for gcc 4.9 bug. r=nika
This gcc 4.9 workaround (from bug 1377351) is no longer needed because Firefox currently requires gcc 6.1 or later (as of bug 1444274).

MozReview-Commit-ID: 9R14BDzWEoj

--HG--
extra : rebase_source : a56ec3ee321cdc76e704fe33c2c4a5b85b558889
extra : source : e0c26ec11d499058e51bc2c3d06b2e1840e77f13
2018-07-22 00:02:34 -07:00
Jan Varga
d38e92d73f Bug 1399789 - nsSubstringSplitter/nsCSubstringSplitter is not defined anymore; r=erahm 2018-08-09 14:18:22 +02:00
Brian Hackett
312bcb5d90 Bug 1207696 Part 4l - Don't record some debugging/statistics atomics, r=froydnj.
--HG--
extra : rebase_source : 401fdf6385e81b72d2ceee84b5ee1a9aac056aaa
2018-07-21 14:26:58 +00:00
Chris Peterson
2afd829d0f Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj
This patch is an automatic replacement of s/NS_NOTREACHED/MOZ_ASSERT_UNREACHABLE/. Reindenting long lines and whitespace fixups follow in patch 6b.

MozReview-Commit-ID: 5UQVHElSpCr

--HG--
extra : rebase_source : 4c1b2fc32b269342f07639266b64941e2270e9c4
extra : source : 907543f6eae716f23a6de52b1ffb1c82908d158a
2018-06-17 22:43:11 -07:00
Andi-Bogdan Postelnicu
2f780cc3ed Bug 1453795 - XPCom/String - Initialize member fields in classes/ structures. r=froydnj
--HG--
extra : rebase_source : 9f9b074342cc38137ea8f57dd2eb59d4ae327956
2018-06-14 13:57:45 +03: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
Mike Hommey
29211f60da Bug 1463036 - Use HAVE_ARM_NEON instead of BUILD_ARM_NEON for nsUTF8UtilsNEON.cpp. r=chmanchester
There is a subtle difference between the two, and the conditions used in
nsUTF8Utils.h correspond to HAVE_ARM_NEON, not BUILD_ARM_NEON.
2018-05-23 07:17:05 +09: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
Tristan Bourvon
a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Nicholas Nethercote
4b941e22d0 Bug 1449395 - Remove unnecessary nsStaticAtom.h includes. r=froydnj
For nsCSSAnonBoxes.cpp, nsCSSPseudoElements.cpp, nsDirectoryService.cpp, the
corresponding .h file includes nsStaticAtom.h. For the other files in this
patch, nsStaticAtom.h is not needed at all.

MozReview-Commit-ID: IpMmbXwZHhu

--HG--
extra : rebase_source : 46d0a6b40a41ee233adad7c205cf907fa27de34a
2018-03-29 09:08:54 +11:00
Ryan VanderMeulen
4f5bc80db3 Bug 1448472 - Remove a C5037 warning suppression xpcom/string/moz.build that is no longer needed. r=xidorn 2018-03-24 12:19:44 -04:00
L. David Baron
1da1c4f2be Bug 1448138 - Rename string DataFlags::SHARED to REFCOUNTED to make it clearer to those reading the code. r=erahm
MozReview-Commit-ID: 1mJuwY5dQkj

--HG--
extra : transplant_source : %B8%97%C2%AAa%A6%3D%E3%AC%9C%C1%15%99%FE%94%1A%E2K%81%F1
2018-03-23 17:31:37 -07:00
Samuel Thibault
39ed413777 Bug 1346535 - atk: Introduce U+FEFF characters to match AT-SPI offsets with DOM offsets. r=surkov, r=dbaron 2018-03-16 15:57:00 -04:00
Andrew McCreight
e1a6f8c267 Bug 1442295 - Add two missing includes in XPCOM. r=erahm
nsTArray.h needs mozalloc.h for moz_xmalloc

nsTStringRepr.h needs fallible.h for fallible

MozReview-Commit-ID: 9jz2pGPXMHk
2018-03-01 11:03:00 +02:00
Paul Bone
1d1091d2ac Bug 1440205 - Print the nsStringBuffer bad canary value in hex r=jonco
--HG--
extra : rebase_source : b6c7dd75c295e061c870f6e318371ff0fb90558d
2018-02-22 15:32:42 +11: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
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
Nathan Froyd
c65a72ac1e Bug 1435916 - use a const array in nsTextFormatter::dosprintf; r=tromey
I don't know how this was not constant, but there you go.
2018-02-14 12:01:36 -05:00
Eric Rahm
68c77a919f Bug 1435924 - Part 2: Remove nsSubstring.h. r=dbaron
--HG--
extra : rebase_source : 1cbc6f4ab7fc72c11c7508fd8843e64138b47319
2018-02-05 14:51:18 -08:00
Eric Rahm
9ff126586e Bug 1435924 - Part 1: Switch from nsSubstring.h to nsAString.h. r=dbaron
--HG--
extra : rebase_source : 969727b07a7450e57c219766838a7266ff79484f
2018-02-05 17:36:32 -08:00
Eric Rahm
707e39aaa9 Bug 1434689 - Part 3: Annotate nsTSubstringTuple as MOZ_TEMPORARY_CLASS. r=froydnj
The documentation indicates nsTStringTuple is intended for internal use only
and is designed to be only be used as a temporary. This makes that fact
explicit by annotating the class for static analysis.

--HG--
extra : rebase_source : 737481fb39355c456cf1bbf17b887e35d692c4df
2018-01-31 15:45:04 -08:00
Eric Rahm
55733f8050 Bug 1434789 - Part 2: Remove nsSubstringTuple aliases. r=froydnj
This removes nsSubstringTuple.h and nsSubstringTuple.cpp in favor of
nsTSubstringTuple.

--HG--
extra : rebase_source : 4539b7cccd7a6837ca695782200a2e8d19b8436a
2018-01-31 16:45:34 -08:00
Noemi Erli
ed5a1a575c Merge mozilla-central to autoland. a=merge CLOSED TREE 2018-01-19 12:15:59 +02:00
Anthony Ramine
af2c4fdf74 Bug 1431449 - Move nsTString::ToInteger* methods to nsTSubstring; r=bz
MozReview-Commit-ID: 8hCDfF8rLRC

--HG--
extra : rebase_source : 651a1367cf5e1e974facc8809425efa1f3b406b5
2018-01-18 15:32:35 +01:00
Eric Rahm
5497e40f06 Bug 1431261 - Add nsTDependentString copy constructor. r=dbaron
This adds a copy constructor that uses Rebind to preserve the reference to
static data rather allocate a new shared buffer.

--HG--
extra : rebase_source : db04def1137a9be646b8e09dfee780c9163a585c
2018-01-18 14:16:19 -08:00
Makoto Kato
606547c9c7 Bug 586838 - Add NEON versions of LossyConvertEncoding. r=erahm 2018-01-12 15:46:11 +09:00
Masatoshi Kimura
a1d349bfab Bug 1426898 - Stop including Char16.h everywhere. r=Waldo
We had to force-include Char16.h to simulate char16_t on older MSVC versions.
But it is no longer the case. We should not rebuild the world whenever we
touch this file.

MozReview-Commit-ID: 1XY7tQD8LoK

--HG--
extra : rebase_source : a08ccfc9b6a4abf90f6f8b97a42079865724c9ec
2017-12-23 00:53:12 +09:00
Eric Rahm
a8271a5de1 Bug 1424120 - Part 9: Further cleanup of minor nits in ToInteger. r=njn
Final style cleanup:
  - Comment formatting
  - Move variable declarations to where they're used
  - Don't set NS_OK until we finish processing
  - Early exit for error conditions

--HG--
extra : rebase_source : 15e216df6b9a5ca113d2da029e999d8bccd6752b
2017-12-08 11:52:10 -08:00
Eric Rahm
79a173e55d Bug 1424120 - Part 8: clang-format ToInteger. r=njn
--HG--
extra : rebase_source : 4efc751e224141f33fcbcf9aba909956f82f5877
2017-12-08 11:43:15 -08:00
Eric Rahm
70d5608b99 Bug 1424120 - Part 7: Remove duplicated switch logic from ToInteger. r=njn
--HG--
extra : rebase_source : 039af2cc615cd3d3ad990c77e42847f1189e4625
2017-12-08 11:17:55 -08:00
Eric Rahm
1974312b7c Bug 1424120 - Part 6: Add early returns to ToInteger. r=njn
This reduces the indentation by removing the `if(cp)` and `if(done)` blocks
and just returning early. The `if(cp)` was unnecessary as `BeginReading` will
never return nullptr.

--HG--
extra : rebase_source : e0889e65bd5d371d54783087ae22e097c8dfe4db
2017-12-08 10:15:53 -08:00
Eric Rahm
b1c032672b Bug 1424120 - Part 5: Enforce support for only radix of 10 and 16. r=njn
In theory other radixes can be passed in but we don't actually handle them.
This asserts that the radix is supported and just switches over to using 10 and
16 directly.

--HG--
extra : rebase_source : 71891302d499bfd108a5bb41626d921b3be193ce
2017-12-07 18:54:13 -08:00
Eric Rahm
b1ed165c5e Bug 1424120 - Part 4: Remove haveValue logic from ToInteger. r=njn
The `haveValue` logic is no longer necessary. If we don't have a value the
result will always be 0.

--HG--
extra : rebase_source : df79cbe1dab86914873de72f0ef8fe72d3469e1a
2017-12-07 18:44:03 -08:00
Eric Rahm
8601b5e802 Bug 1424120 - Part 3: Update error handling in ToInteger. r=njn
--HG--
extra : rebase_source : 75bd93c43c0c2144fdddda4fb5f4ae2db087fcde
2017-12-07 17:51:26 -08:00
Eric Rahm
5f9cfc967c Bug 1424120 - Part 2: Remove kAutoDetect support from ToInteger. r=njn
kAutoDetect is never actually used in our codebase and makes ToInteger rather
convoluted. This removes the logic for it, the constant itself, and the
resulting dead code.

--HG--
extra : rebase_source : 0809b1d167a0c6ffcc7d45cc6f471c9d381ca303
2017-12-07 15:40:15 -08:00
Eric Rahm
a2ca9e1092 Bug 1424120 - Part 1: Combine logic for ToInteger impls. r=njn
Replaced the duplicated logic with a shared template implementation.

--HG--
extra : rebase_source : 00e62d8eddeff3ba38f9e17cd875cf1907bc4b31
2017-12-07 15:18:44 -08:00
Eric Rahm
6058ba50a3 Bug 1423798 - Remove headers included for backwards compat in nsString.h. r=njn on a CLOSED TREE
Remove the headers included for "backwards compatibility" and just include them
where required.

--HG--
extra : source : e2beba7e6875120ebbbcadf24bcbcb5b86411a94
extra : amend_source : 11f07a27431cd468511f0bd45afe36150c6e342c
2017-12-06 19:36:57 -08:00
Csoregi Natalia
f488657fbd Backed out changeset e2beba7e6875 (bug 1423798) for failing Browser Chrome tests browser_temporary_permissions_expiry.js on Windows 7 debug. r=backout on a CLOSED TREE 2017-12-09 07:23:35 +02:00
Gurzau Raul
0fcc1a37e6 Merge mozilla-central to mozilla-inbound. r=merge a=merge CLOSED TREE 2017-12-09 00:57:59 +02:00
Eric Rahm
74880b3483 Bug 1423798 - Remove headers included for backwards compat in nsString.h. r=njn
Remove the headers included for "backwards compatibility" and just include them
where required.

--HG--
extra : rebase_source : 03e703a81ed4b80f4f116ff36d8787464ce5acba
2017-12-06 19:36:57 -08:00
Eric Rahm
922fd574f8 Bug 1423781 - Remove nsVoidableString. r=njn
--HG--
extra : rebase_source : 25d33d7d8096cb888767d00dcda821275e9906db
2017-12-06 17:33:23 -08:00
Eric Rahm
07c97a5afe Bug 1423773 - Part 1: Remove usage of nsStringGlue.h. r=glandium
This removes an unnecessary level of indirection by replacing all
nsStringGlue.h instances with just nsString.h.

--HG--
extra : rebase_source : 340989240af4018f3ebfd92826ae11b0cb46d019
2017-12-06 16:52:51 -08: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
Paul Bone
572d5164f3 Bug 1410276 - Add a canary field to nsStringBuffer r=bz
This version of the patch hopefully causes fewer performance regressions.
It might be good to apply this and catch some more assertions.

--HG--
extra : rebase_source : b8674308d581bed4baf6f64a9dd23f2cf995028b
2017-11-09 15:17:35 +11:00
Sebastian Hengst
6ad3193382 Backout a3785ec9a48c / bug 1410276 on request from pbone - Add a canary field to nsStringBuffer. r=backout 2017-11-08 01:45:38 +02:00
Chris Peterson
4a8bdd4ca5 Bug 1412048 - Replace some NS_RUNTIMEABORT(var) calls with MOZ_CRASH_UNSAFE_PRINTF. r=froydnj data-review=francois
MOZ_CRASH_UNSAFE_PRINTF causes data collection because crash strings are annotated to crash-stats and are publicly visible. Firefox data stewards must do data review on usages of this macro. However, all the crash strings this patch collects with MOZ_CRASH_UNSAFE_PRINTF are already collected with NS_RUNTIMEABORT.

MozReview-Commit-ID: 5ujXa9MHH5Z

--HG--
extra : rebase_source : 1367e6ac3c6085341e36cb0859d91417245ea472
extra : source : 3edeb64a40afd79d5c01ae0f0d3ab2777a2e744b
2017-10-26 00:49:00 -07:00