Chromium Code Reviews| 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) |
|
haraken
2016/01/15 12:46:20
What is this change for?
hajimehoshi
2016/01/18 09:42:26
CompressibleString::string() can return an empty s
|
| { |
| 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) |
|
haraken
2016/01/15 12:46:20
Ditto.
hajimehoshi
2016/01/18 09:42:26
Unfortunately now WebCoreStringResourceBase::atomi
|
| { |
| 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); |
| } |
| } |