⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 140409 in webkit


Ignore:
Timestamp:
Jan 22, 2013, 3:59:19 AM (14 years ago)
Author:
commit-queue@webkit.org
Message:

[v8] Convert string conversion calls to one byte versions
https://bugs.webkit.org/show_bug.cgi?id=107524

Patch by Dan Carney <dcarney@google.com> on 2013-01-22
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):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r140408 r140409  
     12013-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
    1172013-01-22  Eugene Klyuchnikov  <eustas@chromium.org>
    218
  • trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp

    r139854 r140409  
    314314    }
    315315
    316     void writeAsciiString(v8::Handle<v8::String>& string)
     316    void writeOneByteString(v8::Handle<v8::String>& string)
    317317    {
    318318        int length = string->Length();
     
    323323        ensureSpace(length);
    324324
    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());
    327326        m_position += length;
    328327    }
     
    667666    int v8StringWriteOptions()
    668667    {
    669         return v8::String::NO_NULL_TERMINATION | v8::String::PRESERVE_ASCII_NULL;
     668        return v8::String::NO_NULL_TERMINATION;
    670669    }
    671670
     
    10491048    {
    10501049        v8::Handle<v8::String> string = value.As<v8::String>();
    1051         if (!string->Length() || !string->MayContainNonAscii())
    1052             m_writer.writeAsciiString(string);
     1050        if (!string->Length() || string->IsOneByte())
     1051            m_writer.writeOneByteString(string);
    10531052        else
    10541053            m_writer.writeUCharString(string);
  • trunk/Source/WebCore/bindings/v8/V8StringResource.cpp

    r136188 r140409  
    3838    if (!resource)
    3939        return 0;
    40     if (encoding == v8::String::ASCII_ENCODING)
     40    if (encoding == v8::String::ONE_BYTE_ENCODING)
    4141        return static_cast<WebCoreStringResource8*>(resource);
    4242    return static_cast<WebCoreStringResource16*>(resource);
     
    5353    static const StringClass& fromStringResource(WebCoreStringResourceBase*);
    5454    static bool is16BitAtomicString(StringClass&);
    55     template<bool ascii>
     55    template<bool oneByte>
    5656    static StringClass fromV8String(v8::Handle<v8::String>, int);
    5757};
     
    6767        return false;
    6868    }
    69     template<bool ascii>
     69    template<bool oneByte>
    7070    static String fromV8String(v8::Handle<v8::String>, int);
    7171};
     
    8181        return !string.string().is8Bit();
    8282    }
    83     template<bool ascii>
     83    template<bool oneByte>
    8484    static AtomicString fromV8String(v8::Handle<v8::String>, int);
    8585};
     
    117117    LChar* buffer;
    118118    String result = String::createUninitialized(length, buffer);
    119     v8String->WriteAscii(reinterpret_cast<char*>(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
     119    v8String->WriteOneByte(buffer, 0, length);
    120120    return result;
    121121}
     
    128128    if (length <= inlineBufferSize) {
    129129        LChar inlineBuffer[inlineBufferSize];
    130         v8String->WriteAscii(reinterpret_cast<char*>(inlineBuffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
     130        v8String->WriteOneByte(inlineBuffer, 0, length);
    131131        return AtomicString(inlineBuffer, length);
    132132    }
    133133    LChar* buffer;
    134134    String string = String::createUninitialized(length, buffer);
    135     v8String->WriteAscii(reinterpret_cast<char*>(buffer), 0, length, v8::String::PRESERVE_ASCII_NULL);
     135    v8String->WriteOneByte(buffer, 0, length);
    136136    return AtomicString(string);
    137137}
     
    147147        if (LIKELY(!!resource)) {
    148148            WebCoreStringResourceBase* base;
    149             if (encoding == v8::String::ASCII_ENCODING)
     149            if (encoding == v8::String::ONE_BYTE_ENCODING)
    150150                base = static_cast<WebCoreStringResource8*>(resource);
    151151            else
     
    159159        return String("");
    160160
    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));
    163163
    164164    if (external != Externalize || !v8String->CanMakeExternal())
    165165        return result;
    166166
    167     if (!nonAscii && !StringTraits<StringType>::is16BitAtomicString(result)) {
     167    if (oneByte && !StringTraits<StringType>::is16BitAtomicString(result)) {
    168168        WebCoreStringResource8* stringResource = new WebCoreStringResource8(result);
    169169        if (UNLIKELY(!v8String->MakeExternal(stringResource)))
Note: See TracChangeset for help on using the changeset viewer.