34 lines
1.4 KiB
Diff
34 lines
1.4 KiB
Diff
|
--- Source/WTF/wtf/text/StringImpl.h 2017-04-18 22:15:27.000000000 +0200
|
||
|
+++ Source/WTF/wtf/text/StringImpl.h 2018-01-20 11:34:19.280270335 +0100
|
||
|
@@ -625,29 +625,7 @@
|
||
|
// FIXME: Does this really belong in StringImpl?
|
||
|
template <typename T> static void copyChars(T* destination, const T* source, unsigned numCharacters)
|
||
|
{
|
||
|
- if (numCharacters == 1) {
|
||
|
- *destination = *source;
|
||
|
- return;
|
||
|
- }
|
||
|
-
|
||
|
- if (numCharacters <= s_copyCharsInlineCutOff) {
|
||
|
- unsigned i = 0;
|
||
|
-#if (CPU(X86) || CPU(X86_64))
|
||
|
- const unsigned charsPerInt = sizeof(uint32_t) / sizeof(T);
|
||
|
-
|
||
|
- if (numCharacters > charsPerInt) {
|
||
|
- unsigned stopCount = numCharacters & ~(charsPerInt - 1);
|
||
|
-
|
||
|
- const uint32_t* srcCharacters = reinterpret_cast<const uint32_t*>(source);
|
||
|
- uint32_t* destCharacters = reinterpret_cast<uint32_t*>(destination);
|
||
|
- for (unsigned j = 0; i < stopCount; i += charsPerInt, ++j)
|
||
|
- destCharacters[j] = srcCharacters[j];
|
||
|
- }
|
||
|
-#endif
|
||
|
- for (; i < numCharacters; ++i)
|
||
|
- destination[i] = source[i];
|
||
|
- } else
|
||
|
- memcpy(destination, source, numCharacters * sizeof(T));
|
||
|
+ memcpy(destination, source, numCharacters * sizeof(T));
|
||
|
}
|
||
|
|
||
|
ALWAYS_INLINE static void copyChars(UChar* destination, const LChar* source, unsigned numCharacters)
|