| Index: third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp b/third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp
|
| index 5dc1eb2eaaabab6a37058e59000353c2e0f1ab11..478e8b59784fb40520277a349f827b8879f0f607 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp
|
| @@ -39,7 +39,7 @@ template<class StringClass> struct StringTraits {
|
|
|
| template<>
|
| struct StringTraits<String> {
|
| - static const String& fromStringResource(WebCoreStringResourceBase* resource)
|
| + static String fromStringResource(WebCoreStringResourceBase* resource)
|
| {
|
| return resource->webcoreString();
|
| }
|
| @@ -49,7 +49,7 @@ struct StringTraits<String> {
|
|
|
| template<>
|
| struct StringTraits<AtomicString> {
|
| - static const AtomicString& fromStringResource(WebCoreStringResourceBase* resource)
|
| + static AtomicString fromStringResource(WebCoreStringResourceBase* resource)
|
| {
|
| return resource->atomicString();
|
| }
|
| @@ -108,10 +108,17 @@ StringType v8StringToWebCoreString(v8::Local<v8::String> v8String, ExternalMode
|
| v8::String::ExternalStringResourceBase* resource = v8String->GetExternalStringResourceBase(&encoding);
|
| if (LIKELY(!!resource)) {
|
| WebCoreStringResourceBase* base;
|
| - if (encoding == v8::String::ONE_BYTE_ENCODING)
|
| - base = static_cast<WebCoreStringResource8*>(resource);
|
| - else
|
| - base = static_cast<WebCoreStringResource16*>(resource);
|
| + if (UNLIKELY(resource->isCompressible())) {
|
| + if (encoding == v8::String::ONE_BYTE_ENCODING)
|
| + base = static_cast<WebCoreCompressibleStringResource8*>(resource);
|
| + else
|
| + base = static_cast<WebCoreCompressibleStringResource16*>(resource);
|
| + } else {
|
| + if (encoding == v8::String::ONE_BYTE_ENCODING)
|
| + base = static_cast<WebCoreStringResource8*>(resource);
|
| + else
|
| + base = static_cast<WebCoreStringResource16*>(resource);
|
| + }
|
| return StringTraits<StringType>::fromStringResource(base);
|
| }
|
| }
|
|
|