Modified: trunk/Source/WebCore/ChangeLog (140408 => 140409)
--- trunk/Source/WebCore/ChangeLog 2013-01-22 11:57:31 UTC (rev 140408)
+++ trunk/Source/WebCore/ChangeLog 2013-01-22 11:59:19 UTC (rev 140409)
@@ -1,3 +1,19 @@
+2013-01-22 Dan Carney <[email protected]>
+
+ [v8] Convert string conversion calls to one byte versions
+ https://bugs.webkit.org/show_bug.cgi?id=107524
+
+ Reviewed by Kentaro Hara.
+
+ No new tests. No change in functionality.
+
+ * bindings/v8/SerializedScriptValue.cpp:
+ * bindings/v8/V8StringResource.cpp:
+ (WebCore::WebCoreStringResourceBase::toWebCoreStringResourceBase):
+ (StringTraits):
+ (WebCore::true):
+ (WebCore::v8StringToWebCoreString):
+
2013-01-22 Eugene Klyuchnikov <[email protected]>
Web Inspector: [Network] CookiesTable refactoring.
Modified: trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp (140408 => 140409)
--- trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp 2013-01-22 11:57:31 UTC (rev 140408)
+++ trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp 2013-01-22 11:59:19 UTC (rev 140409)
@@ -313,7 +313,7 @@
doWriteString(data, length);
}
- void writeAsciiString(v8::Handle<v8::String>& string)
+ void writeOneByteString(v8::Handle<v8::String>& string)
{
int length = string->Length();
ASSERT(length >= 0);
@@ -322,8 +322,7 @@
doWriteUint32(static_cast<uint32_t>(length));
ensureSpace(length);
- char* buffer = reinterpret_cast<char*>(byteAt(m_position));
- string->WriteAscii(buffer, 0, length, v8StringWriteOptions());
+ string->WriteOneByte(byteAt(m_position), 0, length, v8StringWriteOptions());
m_position += length;
}
@@ -666,7 +665,7 @@
int v8StringWriteOptions()
{
- return v8::String::NO_NULL_TERMINATION | v8::String::PRESERVE_ASCII_NULL;
+ return v8::String::NO_NULL_TERMINATION;
}
Vector<BufferValueType> m_buffer;
@@ -1048,8 +1047,8 @@
void writeString(v8::Handle<v8::Value> value)
{
v8::Handle<v8::String> string = value.As<v8::String>();
- if (!string->Length() || !string->MayContainNonAscii())
- m_writer.writeAsciiString(string);
+ if (!string->Length() || string->IsOneByte())
+ m_writer.writeOneByteString(string);
else
m_writer.writeUCharString(string);
}
Modified: trunk/Source/WebCore/bindings/v8/V8StringResource.cpp (140408 => 140409)
--- trunk/Source/WebCore/bindings/v8/V8StringResource.cpp 2013-01-22 11:57:31 UTC (rev 140408)
+++ trunk/Source/WebCore/bindings/v8/V8StringResource.cpp 2013-01-22 11:59:19 UTC (rev 140409)
@@ -37,7 +37,7 @@
v8::String::ExternalStringResourceBase* resource = string->GetExternalStringResourceBase(&encoding);
if (!resource)
return 0;
- if (encoding == v8::String::ASCII_ENCODING)
+ if (encoding == v8::String::ONE_BYTE_ENCODING)
return static_cast<WebCoreStringResource8*>(resource);
return static_cast<WebCoreStringResource16*>(resource);
}
@@ -52,7 +52,7 @@
template<class StringClass> struct StringTraits {
static const StringClass& fromStringResource(WebCoreStringResourceBase*);
static bool is16BitAtomicString(StringClass&);
- template<bool ascii>
+ template<bool oneByte>
static StringClass fromV8String(v8::Handle<v8::String>, int);
};
@@ -66,7 +66,7 @@
{
return false;
}
- template<bool ascii>
+ template<bool oneByte>
static String fromV8String(v8::Handle<v8::String>, int);
};
@@ -80,7 +80,7 @@
{
return !string.string().is8Bit();
}
- template<bool ascii>
+ template<bool oneByte>
static AtomicString fromV8String(v8::Handle<v8::String>, int);
};
@@ -116,7 +116,7 @@
ASSERT(v8String->Length() == length);
LChar* buffer;
String result = String::createUninitialized(length, buffer);
- v8String->WriteAscii(reinterpret_cast<char*>(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
+ v8String->WriteOneByte(buffer, 0, length);
return result;
}
@@ -127,12 +127,12 @@
static const int inlineBufferSize = 32;
if (length <= inlineBufferSize) {
LChar inlineBuffer[inlineBufferSize];
- v8String->WriteAscii(reinterpret_cast<char*>(inlineBuffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
+ v8String->WriteOneByte(inlineBuffer, 0, length);
return AtomicString(inlineBuffer, length);
}
LChar* buffer;
String string = String::createUninitialized(length, buffer);
- v8String->WriteAscii(reinterpret_cast<char*>(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
+ v8String->WriteOneByte(buffer, 0, length);
return AtomicString(string);
}
@@ -146,7 +146,7 @@
v8::String::ExternalStringResourceBase* resource = v8String->GetExternalStringResourceBase(&encoding);
if (LIKELY(!!resource)) {
WebCoreStringResourceBase* base;
- if (encoding == v8::String::ASCII_ENCODING)
+ if (encoding == v8::String::ONE_BYTE_ENCODING)
base = static_cast<WebCoreStringResource8*>(resource);
else
base = static_cast<WebCoreStringResource16*>(resource);
@@ -158,13 +158,13 @@
if (UNLIKELY(!length))
return String("");
- bool nonAscii = v8String->MayContainNonAscii();
- StringType result(nonAscii ? StringTraits<StringType>::template fromV8String<false>(v8String, length) : StringTraits<StringType>::template fromV8String<true>(v8String, length));
+ bool _oneByte_ = v8String->IsOneByte();
+ StringType result(oneByte ? StringTraits<StringType>::template fromV8String<true>(v8String, length) : StringTraits<StringType>::template fromV8String<false>(v8String, length));
if (external != Externalize || !v8String->CanMakeExternal())
return result;
- if (!nonAscii && !StringTraits<StringType>::is16BitAtomicString(result)) {
+ if (oneByte && !StringTraits<StringType>::is16BitAtomicString(result)) {
WebCoreStringResource8* stringResource = new WebCoreStringResource8(result);
if (UNLIKELY(!v8String->MakeExternal(stringResource)))
delete stringResource;