| 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 a3d51c99a7cffe26b14c255ae334807e9d4aaa9f..70149e9ac82963a895f3c9470e9f2892542fac4d 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8StringResource.cpp
|
| @@ -38,7 +38,7 @@ template<class StringClass> struct StringTraits {
|
|
|
| template<>
|
| struct StringTraits<String> {
|
| - static const String& fromStringResource(WebCoreStringResourceBase* resource)
|
| + static String fromStringResource(WebCoreStringResourceBase* resource)
|
| {
|
| return resource->webcoreString();
|
| }
|
| @@ -48,7 +48,7 @@ struct StringTraits<String> {
|
|
|
| template<>
|
| struct StringTraits<AtomicString> {
|
| - static const AtomicString& fromStringResource(WebCoreStringResourceBase* resource)
|
| + static AtomicString fromStringResource(WebCoreStringResourceBase* resource)
|
| {
|
| return resource->atomicString();
|
| }
|
| @@ -107,10 +107,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);
|
| }
|
| }
|
|
|