gecko-dev/xpcom/ds
Henri Sivonen 39dc649092 Bug 1488697 - Make StringBuilder::ToString avoid repeated capacity and aliasing checks as well as terminator writes. r=smaug
* Avoid the string implementation's capacity checks, since we know they
   succeed.
 * Avoid the string implementation's aliasing checks, since we know there's no
   aliasing.
 * Avoid writing the zero terminator more than once or out of sequence.
 * Use u"" literals when appending literals to a UTF-16 string.
 * Write runs of non-escaped code units instead of writing code unit by code
   unit in order to benefit from SIMD (either via memcpy or
   ConvertLatin1toUTF16).

This results in a 13% execution time reduction on desktop Haswell i7 when
getting the innerHTML of the body of the Selectors spec. (The WebKit
optimization target from https://bugs.webkit.org/show_bug.cgi?id=81214 .)

MozReview-Commit-ID: LAg3gkGJnpQ

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

--HG--
extra : moz-landing-system : lando
2018-09-08 07:47:28 +00:00
..
tools Bug 1474739 - Part 3: Linting fixes on a CLOSED TREE, a=bustage 2018-08-01 18:23:21 -04:00
ArenaAllocator.h Bug 1406727 - Improve diagnostics in BuildDisplayList. r=froydnj 2018-02-06 12:21:31 +13:00
ArenaAllocatorExtensions.h Bug 1412416 - Part 2: Simplify ArenaStrdup for xpcom strings. r=froydnj 2017-10-27 13:26:47 -07:00
ArrayIterator.h Bug 1342303 part 1 - Make nsTArrayIterator an independent class. r=erahm 2017-02-24 16:14:06 +11:00
Atom.py Bug 1483121 - Generate static atom hash in StaticAtoms.py. r=njn,emilio 2018-08-15 15:52:42 +10:00
AtomArray.h Bug 1407843 part 1 - Introduce a global-level AtomArray type alias. r=froydnj 2017-10-13 11:59:23 +11:00
Dafsa.cpp Bug 1380154 - Part 1: Add the Chromium DAFSA generator. r=njn 2017-07-17 16:09:42 -07:00
Dafsa.h Bug 1380154 - Part 2: Generate a DAFSA and use it for eTLDs. r=jduell 2017-07-17 16:10:18 -07:00
HTMLAtoms.py Bug 1482782 - Part 1: Generate nsGkAtomList.h from a Python file. r=njn,hsivonen 2018-08-15 15:46:00 +10:00
IncrementalTokenizer.cpp Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
IncrementalTokenizer.h Bug 1463786 - Make mozilla::Tokenizer work also with char16_t, r=froydnj 2018-05-31 03:40:00 +03:00
moz.build Bug 1484496: Part 2 - Add common base class for all nsISimpleEnumerator implementations. r=froydnj 2018-08-18 14:22:47 -07:00
nsArray.cpp Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsArray.h
nsArrayEnumerator.cpp Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsArrayEnumerator.h Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsArrayUtils.cpp
nsArrayUtils.h
nsAtom.h Bug 1488697 - Make StringBuilder::ToString avoid repeated capacity and aliasing checks as well as terminator writes. r=smaug 2018-09-08 07:47:28 +00:00
nsAtomTable.cpp Bug 1483121 - Generate static atom hash in StaticAtoms.py. r=njn,emilio 2018-08-15 15:52:42 +10:00
nsAtomTable.h Bug 1447951 - Store nsDynamicAtom's chars after the end of the object. r=froydnj 2018-06-22 09:38:42 +10:00
nsBaseHashtable.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
nsCharSeparatedTokenizer.h Bug 1374580 (part 3) - Remove ns{,C}Substring typedefs. r=froydnj. 2017-06-20 19:19:52 +10:00
nsCheapSets.h Bug 1469769 - Part 6: Replace non-failing NS_NOTREACHED with MOZ_ASSERT_UNREACHABLE. r=froydnj 2018-06-17 22:43:11 -07:00
nsClassHashtable.h Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj 2018-06-02 09:33:26 +02:00
nsCOMArray.cpp Bug 1407838 - Remove the remains of NS_Alloc/NS_Realloc/NS_Free. r=njn 2017-10-12 11:08:44 +09:00
nsCOMArray.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
nsCRT.cpp Bug 1427025 - Remove nsCRT::memmem. r=froydnj 2018-04-10 04:47:52 +10:00
nsCRT.h Bug 1453456 - Replace nsCRT::IsAscii{Alpha,Digit} with mfbt/TextUtils.h versions. r=froydnj 2018-04-12 20:19:30 -07:00
nsDataHashtable.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
nsDeque.cpp Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
nsDeque.h Bug 1398999 - nsDequeFunctor::operator() doesn't need to return anything - r=froydnj 2017-02-09 14:06:36 +11:00
nsEnumeratorUtils.cpp Bug 1484496: Part 3 - Fix nsISimpleEnumerator implementations with broken contracts. r=froydnj 2018-08-18 18:28:10 -07:00
nsEnumeratorUtils.h
nsExpirationTracker.h Bug 1453795 - XPCOM - Initialize member fields in classes/ structures. r=froydnj 2018-06-15 14:41:20 +03:00
nsGkAtoms.cpp Bug 1483121 - Generate static atom hash in StaticAtoms.py. r=njn,emilio 2018-08-15 15:52:42 +10:00
nsGkAtoms.h Bug 1483121 - Generate static atom hash in StaticAtoms.py. r=njn,emilio 2018-08-15 15:52:42 +10:00
nsHashKeys.h Bug 1486690 - Rename NS_str{,}dup and remove unnecessary checks after calls to them. r=glandium 2018-08-28 15:58:54 +10:00
nsHashPropertyBag.cpp Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsHashPropertyBag.h Bug 1353660 - proxy destruction of nsHashPropertyBag's hash table to the main thread; r=mccr8 2017-04-05 15:31:20 -04:00
nsIArray.idl Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsIArrayExtensions.idl Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsIHashable.idl
nsIINIParser.idl Bug 1484844: Make nsINIParser mutable. r=froydnj 2017-10-12 14:20:57 -07:00
nsIMutableArray.idl Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsINIParserImpl.cpp Bug 1484844: Make nsINIParser mutable. r=froydnj 2017-10-12 14:20:57 -07:00
nsINIParserImpl.h
nsInterfaceHashtable.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
nsIObserver.idl
nsIObserverService.idl Bug 1355216 - Mark last parameters that are almost always falsy as optional, r=froydnj. 2017-04-12 00:07:30 +02:00
nsIPersistentProperties2.idl Bug 1462138 - Part 1: Add a memory reporter for nsStringBundleService. r=erahm 2018-05-18 13:16:31 -07:00
nsIPersistentProperties.h
nsIProperties.idl
nsIProperty.idl
nsIPropertyBag2.idl
nsIPropertyBag.idl
nsISerializable.idl Bug 1440808 - Cleanup error handling in nsXULPrototypeDocument::Read. r=mccr8 2018-02-22 11:33:20 -08:00
nsISimpleEnumerator.idl Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsIStringEnumerator.idl
nsISupportsIterators.idl
nsISupportsPrimitives.idl
nsIVariant.idl Bug 1474369 - Part 7: Rename [array] to LegacyArray within xpt and xpidl, r=mccr8 2018-07-31 17:53:03 -04:00
nsIWindowsRegKey.idl
nsIWritablePropertyBag2.idl
nsIWritablePropertyBag.idl
nsJSThingHashtable.h
nsMathUtils.h Bug 1354510 - Firefox build should recognize Solaris. r=glandium 2017-04-11 00:01:32 -07:00
nsObserverList.cpp Bug 1484496: Part 3 - Fix nsISimpleEnumerator implementations with broken contracts. r=froydnj 2018-08-18 18:28:10 -07:00
nsObserverList.h Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsObserverService.cpp Bug 1464252 - Remove global observers functionality from the observer service; r=froydnj 2018-05-24 23:58:31 +02:00
nsObserverService.h
nsPersistentProperties.cpp Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsPersistentProperties.h Bug 1462138 - Part 1: Add a memory reporter for nsStringBundleService. r=erahm 2018-05-18 13:16:31 -07:00
nsPointerHashKeys.h Backed out changeset 9035ff3757ac (bug 1415980) at request from froydnj on the suspicion that it's going to break MSVC builds when it gets merged to central. 2018-07-31 01:19:49 +03:00
nsProperties.cpp Bug 1376498 part 2 - Use plain Remove(key) in some places instead of Lookup(key).Remove() for simplicity. r=froydnj 2017-07-05 02:01:44 +02:00
nsProperties.h
nsQuickSort.cpp
nsQuickSort.h
nsRefPtrHashtable.h Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj 2018-06-01 10:45:27 +02:00
nsSimpleEnumerator.cpp Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsSimpleEnumerator.h Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsStaticAtomUtils.h Bug 1483449 - Simplify nsStaticAtomUtils::Lookup. r=njn 2018-08-16 11:40:02 +10:00
nsStaticNameTable.cpp Bug 1475461 - part 2: Make callers of PLDHashTable::Search() const methods if possible r=Ehsan 2018-07-13 19:01:53 +09:00
nsStaticNameTable.h Bug 1475461 - part 2: Make callers of PLDHashTable::Search() const methods if possible r=Ehsan 2018-07-13 19:01:53 +09:00
nsStringEnumerator.cpp Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj 2018-08-18 21:06:32 -07:00
nsStringEnumerator.h
nsSupportsPrimitives.cpp Bug 1409227 (part 4) - Replace nsMemory::Clone(id, sizeof(nsID)) with nsID::Clone(id). r=mccr8. 2017-10-18 10:39:20 +11:00
nsSupportsPrimitives.h
nsTArray-inl.h Bug 1473804: Don't lie to AutoTArray::EnsureCapacity. r=erahm 2018-07-17 10:23:47 +02:00
nsTArray.cpp Bug 1460733 - Rename nsTArrayHeader::sEmptyHdr to extern "C" { sEmptyTArrayHeader } so that thin-vec can link with it. r=froydnj 2018-05-10 16:37:27 -04:00
nsTArray.h Bug 1479996 - Combine nsTArray::IndexOf and element access into lambda-friendly functions - r=froydnj 2018-08-28 22:04:09 +00:00
nsTArrayForwardDeclare.h
nsTHashtable.h Bug 1477626 - Document some differences between mozilla::HashTable and PLDHashTable. r=Waldo 2018-07-26 20:15:55 +10:00
nsTObserverArray.cpp Bug 1457813 - Part 2: Replace non-asserting NS_PRECONDITIONs with MOZ_ASSERTs. r=froydnj 2018-04-28 12:50:58 -07:00
nsTObserverArray.h Bug 1385533 - Reserve space for one pointer in the mMutationObservers array on node slots; r=smaug 2017-07-31 17:12:38 -04:00
nsTPriorityQueue.h
nsVariant.cpp Bug 1486690 - Rename nsMemory::Clone() and remove unnecessary checks after it. r=glandium 2018-08-28 15:59:19 +10:00
nsVariant.h Bug 1453795 - XPCOM - Initialize member fields in classes/ structures. r=froydnj 2018-06-15 14:41:20 +03:00
nsWhitespaceTokenizer.h Bug 1374580 (part 3) - Remove ns{,C}Substring typedefs. r=froydnj. 2017-06-20 19:19:52 +10:00
nsWindowsRegKey.cpp Bug 1353593 - Part 2: Remove wwc functions. r=froydnj 2017-06-12 16:20:49 -07:00
nsWindowsRegKey.h
Observer.h Bug 1469914 - Prevent the HAL from registering duplicate observers; r=froydnj 2018-06-22 00:35:08 +02:00
PLDHashTable.cpp Bug 1477626 - Move ScrambleHashCode() from js/src/Utility.h to mfbt/HashFunctions.h. r=Waldo 2018-07-26 18:52:47 +10:00
PLDHashTable.h Bug 1477626 - Document some differences between mozilla::HashTable and PLDHashTable. r=Waldo 2018-07-26 20:15:55 +10:00
SimpleEnumerator.h Bug 1484373: Follow-up: Fix missed review comment. r=froydnj (implied) 2018-08-24 22:31:10 -07:00
StaticAtoms.py Bug 1455649 - DocumentL10n, part 3 - Plug DocumentL10n life cycle into DOM hooks. r=smaug 2018-09-06 18:28:40 -07:00
StickyTimeDuration.h
Tokenizer.cpp Bug 1463786 - Make mozilla::Tokenizer work also with char16_t, r=froydnj 2018-05-31 03:40:00 +03:00
Tokenizer.h Bug 1463786 - Make mozilla::Tokenizer work also with char16_t, r=froydnj 2018-05-31 03:40:00 +03:00