Changeset 140409 in webkit
- Timestamp:
- Jan 22, 2013, 3:59:19 AM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
bindings/v8/SerializedScriptValue.cpp (modified) (4 diffs)
-
bindings/v8/V8StringResource.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r140408 r140409 1 2013-01-22 Dan Carney <dcarney@google.com> 2 3 [v8] Convert string conversion calls to one byte versions 4 https://bugs.webkit.org/show_bug.cgi?id=107524 5 6 Reviewed by Kentaro Hara. 7 8 No new tests. No change in functionality. 9 10 * bindings/v8/SerializedScriptValue.cpp: 11 * bindings/v8/V8StringResource.cpp: 12 (WebCore::WebCoreStringResourceBase::toWebCoreStringResourceBase): 13 (StringTraits): 14 (WebCore::true): 15 (WebCore::v8StringToWebCoreString): 16 1 17 2013-01-22 Eugene Klyuchnikov <eustas@chromium.org> 2 18 -
trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp
r139854 r140409 314 314 } 315 315 316 void write AsciiString(v8::Handle<v8::String>& string)316 void writeOneByteString(v8::Handle<v8::String>& string) 317 317 { 318 318 int length = string->Length(); … … 323 323 ensureSpace(length); 324 324 325 char* buffer = reinterpret_cast<char*>(byteAt(m_position)); 326 string->WriteAscii(buffer, 0, length, v8StringWriteOptions()); 325 string->WriteOneByte(byteAt(m_position), 0, length, v8StringWriteOptions()); 327 326 m_position += length; 328 327 } … … 667 666 int v8StringWriteOptions() 668 667 { 669 return v8::String::NO_NULL_TERMINATION | v8::String::PRESERVE_ASCII_NULL;668 return v8::String::NO_NULL_TERMINATION; 670 669 } 671 670 … … 1049 1048 { 1050 1049 v8::Handle<v8::String> string = value.As<v8::String>(); 1051 if (!string->Length() || !string->MayContainNonAscii())1052 m_writer.write AsciiString(string);1050 if (!string->Length() || string->IsOneByte()) 1051 m_writer.writeOneByteString(string); 1053 1052 else 1054 1053 m_writer.writeUCharString(string); -
trunk/Source/WebCore/bindings/v8/V8StringResource.cpp
r136188 r140409 38 38 if (!resource) 39 39 return 0; 40 if (encoding == v8::String:: ASCII_ENCODING)40 if (encoding == v8::String::ONE_BYTE_ENCODING) 41 41 return static_cast<WebCoreStringResource8*>(resource); 42 42 return static_cast<WebCoreStringResource16*>(resource); … … 53 53 static const StringClass& fromStringResource(WebCoreStringResourceBase*); 54 54 static bool is16BitAtomicString(StringClass&); 55 template<bool ascii>55 template<bool oneByte> 56 56 static StringClass fromV8String(v8::Handle<v8::String>, int); 57 57 }; … … 67 67 return false; 68 68 } 69 template<bool ascii>69 template<bool oneByte> 70 70 static String fromV8String(v8::Handle<v8::String>, int); 71 71 }; … … 81 81 return !string.string().is8Bit(); 82 82 } 83 template<bool ascii>83 template<bool oneByte> 84 84 static AtomicString fromV8String(v8::Handle<v8::String>, int); 85 85 }; … … 117 117 LChar* buffer; 118 118 String result = String::createUninitialized(length, buffer); 119 v8String->Write Ascii(reinterpret_cast<char*>(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);119 v8String->WriteOneByte(buffer, 0, length); 120 120 return result; 121 121 } … … 128 128 if (length <= inlineBufferSize) { 129 129 LChar inlineBuffer[inlineBufferSize]; 130 v8String->Write Ascii(reinterpret_cast<char*>(inlineBuffer), 0, length, v8::String::PRESERVE_ASCII_NULL);130 v8String->WriteOneByte(inlineBuffer, 0, length); 131 131 return AtomicString(inlineBuffer, length); 132 132 } 133 133 LChar* buffer; 134 134 String string = String::createUninitialized(length, buffer); 135 v8String->Write Ascii(reinterpret_cast<char*>(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);135 v8String->WriteOneByte(buffer, 0, length); 136 136 return AtomicString(string); 137 137 } … … 147 147 if (LIKELY(!!resource)) { 148 148 WebCoreStringResourceBase* base; 149 if (encoding == v8::String:: ASCII_ENCODING)149 if (encoding == v8::String::ONE_BYTE_ENCODING) 150 150 base = static_cast<WebCoreStringResource8*>(resource); 151 151 else … … 159 159 return String(""); 160 160 161 bool nonAscii = v8String->MayContainNonAscii();162 StringType result( nonAscii ? StringTraits<StringType>::template fromV8String<false>(v8String, length) : StringTraits<StringType>::template fromV8String<true>(v8String, length));161 bool oneByte = v8String->IsOneByte(); 162 StringType result(oneByte ? StringTraits<StringType>::template fromV8String<true>(v8String, length) : StringTraits<StringType>::template fromV8String<false>(v8String, length)); 163 163 164 164 if (external != Externalize || !v8String->CanMakeExternal()) 165 165 return result; 166 166 167 if ( !nonAscii&& !StringTraits<StringType>::is16BitAtomicString(result)) {167 if (oneByte && !StringTraits<StringType>::is16BitAtomicString(result)) { 168 168 WebCoreStringResource8* stringResource = new WebCoreStringResource8(result); 169 169 if (UNLIKELY(!v8String->MakeExternal(stringResource)))
Note:
See TracChangeset
for help on using the changeset viewer.