mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1105895 - Use JSInlineString where possible in ConcatStrings(). r=jandem.
This commit is contained in:
parent
29eabea1c5
commit
a8888ead37
@ -485,7 +485,11 @@ js::ConcatStrings(ExclusiveContext *cx,
|
||||
? JSFatInlineString::latin1LengthFits(wholeLength)
|
||||
: JSFatInlineString::twoByteLengthFits(wholeLength);
|
||||
if (canUseFatInline && cx->isJSContext()) {
|
||||
JSFatInlineString *str = NewGCFatInlineString<allowGC>(cx);
|
||||
Latin1Char *latin1Buf;
|
||||
char16_t *twoByteBuf;
|
||||
JSInlineString *str = isLatin1
|
||||
? AllocateFatInlineString<allowGC>(cx, wholeLength, &latin1Buf)
|
||||
: AllocateFatInlineString<allowGC>(cx, wholeLength, &twoByteBuf);
|
||||
if (!str)
|
||||
return nullptr;
|
||||
|
||||
@ -498,21 +502,19 @@ js::ConcatStrings(ExclusiveContext *cx,
|
||||
return nullptr;
|
||||
|
||||
if (isLatin1) {
|
||||
Latin1Char *buf = str->initLatin1(wholeLength);
|
||||
PodCopy(buf, leftLinear->latin1Chars(nogc), leftLen);
|
||||
PodCopy(buf + leftLen, rightLinear->latin1Chars(nogc), rightLen);
|
||||
buf[wholeLength] = 0;
|
||||
PodCopy(latin1Buf, leftLinear->latin1Chars(nogc), leftLen);
|
||||
PodCopy(latin1Buf + leftLen, rightLinear->latin1Chars(nogc), rightLen);
|
||||
latin1Buf[wholeLength] = 0;
|
||||
} else {
|
||||
char16_t *buf = str->initTwoByte(wholeLength);
|
||||
if (leftLinear->hasTwoByteChars())
|
||||
PodCopy(buf, leftLinear->twoByteChars(nogc), leftLen);
|
||||
PodCopy(twoByteBuf, leftLinear->twoByteChars(nogc), leftLen);
|
||||
else
|
||||
CopyAndInflateChars(buf, leftLinear->latin1Chars(nogc), leftLen);
|
||||
CopyAndInflateChars(twoByteBuf, leftLinear->latin1Chars(nogc), leftLen);
|
||||
if (rightLinear->hasTwoByteChars())
|
||||
PodCopy(buf + leftLen, rightLinear->twoByteChars(nogc), rightLen);
|
||||
PodCopy(twoByteBuf + leftLen, rightLinear->twoByteChars(nogc), rightLen);
|
||||
else
|
||||
CopyAndInflateChars(buf + leftLen, rightLinear->latin1Chars(nogc), rightLen);
|
||||
buf[wholeLength] = 0;
|
||||
CopyAndInflateChars(twoByteBuf + leftLen, rightLinear->latin1Chars(nogc), rightLen);
|
||||
twoByteBuf[wholeLength] = 0;
|
||||
}
|
||||
|
||||
return str;
|
||||
|
Loading…
Reference in New Issue
Block a user