Sfoglia il codice sorgente

perf: use wmemcpy instead of memcpy for wide strings

Oguz Bastemur 8 anni fa
parent
commit
37338bbe2d

+ 1 - 1
lib/Backend/CodeGenWorkItem.h

@@ -218,7 +218,7 @@ public:
         {
            return nameSizeInChars;
         }
-        js_memcpy_s(displayName, sizeInChars * sizeof(WCHAR), name, sizeInBytes);
+        js_wmemcpy_s(displayName, sizeInChars, name, sizeInBytes);
         return nameSizeInChars;
     }
 

+ 5 - 5
lib/Common/DataStructures/StringBuilder.h

@@ -166,7 +166,7 @@ namespace Js
 
                 if (this->count)
                 {
-                    js_memcpy_s(newChunk->u.single.buffer, newLength * sizeof(char16), this->firstChunk->u.single.buffer, sizeof(char16) * this->count);
+                    js_wmemcpy_s(newChunk->u.single.buffer, newLength, this->firstChunk->u.single.buffer, this->count);
                 }
 
                 this->firstChunk = this->lastChunk = newChunk;
@@ -234,7 +234,7 @@ namespace Js
                 {
                     Throw::FatalInternalError();
                 }
-                js_memcpy_s(pBuf, bufLen * sizeof(char16), pSrcBuf, sizeof(char16) * srcLength);
+                js_wmemcpy_s(pBuf, bufLen, pSrcBuf, srcLength);
                 bufLen -= srcLength;
                 pBuf += srcLength;
                 lastChunkCount -= srcLength;
@@ -248,7 +248,7 @@ namespace Js
             {
                 Throw::FatalInternalError();
             }
-            js_memcpy_s(pBuf, bufLen * sizeof(char16), this->lastChunk->u.chained.buffer, sizeof(char16) * lastChunkCount);
+            js_wmemcpy_s(pBuf, bufLen, this->lastChunk->u.chained.buffer, lastChunkCount);
         }
 
         void UnChain()
@@ -280,7 +280,7 @@ namespace Js
                 {
                     Throw::FatalInternalError();
                 }
-                js_memcpy_s(pBuf, bufLen * sizeof(char16), this->firstChunk->u.single.buffer, this->count * sizeof(char16));
+                js_wmemcpy_s(pBuf, bufLen, this->firstChunk->u.single.buffer, this->count);
             }
         }
 
@@ -357,7 +357,7 @@ namespace Js
 
             char16 *dst = this->appendPtr;
 
-            js_memcpy_s(dst, sizeof(WCHAR) * countNeeded, str, sizeof(WCHAR) * countNeeded);
+            js_wmemcpy_s(dst, countNeeded, str, countNeeded);
 
             this->appendPtr += countNeeded;
             this->count += countNeeded;

+ 2 - 2
lib/Runtime/Library/JavascriptString.cpp

@@ -404,7 +404,7 @@ case_2:
             break;
 
         default:
-            js_memcpy_s(dst, sizeof(char16) * countNeeded, str, sizeof(char16) * countNeeded);
+            js_wmemcpy_s(dst, countNeeded, str, countNeeded);
         }
     }
 
@@ -3551,7 +3551,7 @@ case_2:
                 // Quick check for first character.
                 if (stringSz[i] == substringSz[0])
                 {
-                    if (substringLen == 1 || memcmp(stringSz+i+1, substringSz+1, (substringLen-1)*sizeof(char16)) == 0)
+                    if (substringLen == 1 || wmemcmp(stringSz + i + 1, substringSz + 1, substringLen - 1) == 0)
                     {
                         return i + start;
                     }