Move lengthBytesUTF8 into runtime. NFC. (#12825)
It doesn't seems to be needed at parse time.
This commit is contained in:
Родитель
b2f1f607b5
Коммит
13f6581ba5
|
@ -945,22 +945,6 @@ function charCode(char) {
|
||||||
return char.charCodeAt(0);
|
return char.charCodeAt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.
|
|
||||||
function lengthBytesUTF8(str) {
|
|
||||||
var len = 0;
|
|
||||||
for (var i = 0; i < str.length; ++i) {
|
|
||||||
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.
|
|
||||||
// See http://unicode.org/faq/utf_bom.html#utf16-3
|
|
||||||
var u = str.charCodeAt(i); // possibly a lead surrogate
|
|
||||||
if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);
|
|
||||||
if (u <= 0x7F) ++len;
|
|
||||||
else if (u <= 0x7FF) len += 2;
|
|
||||||
else if (u <= 0xFFFF) len += 3;
|
|
||||||
else len += 4;
|
|
||||||
}
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTypeFromHeap(suffix) {
|
function getTypeFromHeap(suffix) {
|
||||||
switch (suffix) {
|
switch (suffix) {
|
||||||
case '8': return 'i8';
|
case '8': return 'i8';
|
||||||
|
|
|
@ -190,4 +190,17 @@ function stringToUTF8(str, outPtr, maxBytesToWrite) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.
|
// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.
|
||||||
{{{ lengthBytesUTF8 }}}
|
function lengthBytesUTF8(str) {
|
||||||
|
var len = 0;
|
||||||
|
for (var i = 0; i < str.length; ++i) {
|
||||||
|
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.
|
||||||
|
// See http://unicode.org/faq/utf_bom.html#utf16-3
|
||||||
|
var u = str.charCodeAt(i); // possibly a lead surrogate
|
||||||
|
if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);
|
||||||
|
if (u <= 0x7F) ++len;
|
||||||
|
else if (u <= 0x7FF) len += 2;
|
||||||
|
else if (u <= 0xFFFF) len += 3;
|
||||||
|
else len += 4;
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче