[inspector] Add byte swapping on BE machines
With https://crrev.com/c/2277142 adding unified (de)serialization support, "cbor ParseUTF16String" is no longer being used and byte orders remain in LE format. This CL essentially reverts some of the changes made here: https://crrev.com/c/2038716 and re-adds byte swapping on BE machines. Change-Id: I3e7be6ba182e7faada3bf31dff9a89c1343abbbc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2281082 Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#68690}
This commit is contained in:
parent
b8fbf8ebb2
commit
4deef4d795
@ -208,8 +208,21 @@ String16 String16::fromUTF8(const char* stringStart, size_t length) {
|
||||
return String16(UTF8ToUTF16(stringStart, length));
|
||||
}
|
||||
|
||||
String16 String16::fromUTF16(const UChar* stringStart, size_t length) {
|
||||
String16 String16::fromUTF16LE(const UChar* stringStart, size_t length) {
|
||||
#ifdef V8_TARGET_BIG_ENDIAN
|
||||
// Need to flip the byte order on big endian machines.
|
||||
String16Builder builder;
|
||||
builder.reserveCapacity(length);
|
||||
for (size_t i = 0; i < length; i++) {
|
||||
const UChar utf16be_char =
|
||||
stringStart[i] << 8 | (stringStart[i] >> 8 & 0x00FF);
|
||||
builder.append(utf16be_char);
|
||||
}
|
||||
return builder.toString();
|
||||
#else
|
||||
// No need to do anything on little endian machines.
|
||||
return String16(stringStart, length);
|
||||
#endif // V8_TARGET_BIG_ENDIAN
|
||||
}
|
||||
|
||||
std::string String16::utf8() const {
|
||||
|
@ -70,7 +70,11 @@ class String16 {
|
||||
// Convenience methods.
|
||||
V8_EXPORT std::string utf8() const;
|
||||
V8_EXPORT static String16 fromUTF8(const char* stringStart, size_t length);
|
||||
V8_EXPORT static String16 fromUTF16(const UChar* stringStart, size_t length);
|
||||
|
||||
// Instantiates a String16 in native endianness from UTF16 LE.
|
||||
// On Big endian architectures, byte order needs to be flipped.
|
||||
V8_EXPORT static String16 fromUTF16LE(const UChar* stringStart,
|
||||
size_t length);
|
||||
|
||||
std::size_t hash() const {
|
||||
if (!hash_code) {
|
||||
|
@ -30,7 +30,7 @@ class StringUtil {
|
||||
}
|
||||
|
||||
static String fromUTF16LE(const uint16_t* data, size_t length) {
|
||||
return String16::fromUTF16(data, length);
|
||||
return String16::fromUTF16LE(data, length);
|
||||
}
|
||||
|
||||
static const uint8_t* CharactersLatin1(const String& s) { return nullptr; }
|
||||
|
Loading…
Reference in New Issue
Block a user