diff options
Diffstat (limited to 'deps/v8/src/extensions/externalize-string-extension.cc')
-rw-r--r-- | deps/v8/src/extensions/externalize-string-extension.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/deps/v8/src/extensions/externalize-string-extension.cc b/deps/v8/src/extensions/externalize-string-extension.cc index 363c0c593d..de1530ba27 100644 --- a/deps/v8/src/extensions/externalize-string-extension.cc +++ b/deps/v8/src/extensions/externalize-string-extension.cc @@ -4,7 +4,7 @@ #include "src/extensions/externalize-string-extension.h" -#include "src/api.h" +#include "src/api-inl.h" #include "src/handles.h" #include "src/isolate.h" #include "src/objects-inl.h" @@ -85,11 +85,12 @@ void ExternalizeStringExtension::Externalize( } bool result = false; Handle<String> string = Utils::OpenHandle(*args[0].As<v8::String>()); - if (string->IsExternalString()) { + if (!string->SupportsExternalization()) { args.GetIsolate()->ThrowException( v8::String::NewFromUtf8(args.GetIsolate(), - "externalizeString() can't externalize twice.", - NewStringType::kNormal).ToLocalChecked()); + "string does not support externalization.", + NewStringType::kNormal) + .ToLocalChecked()); return; } if (string->IsOneByteRepresentation() && !force_two_byte) { @@ -97,14 +98,14 @@ void ExternalizeStringExtension::Externalize( String::WriteToFlat(*string, data, 0, string->length()); SimpleOneByteStringResource* resource = new SimpleOneByteStringResource( reinterpret_cast<char*>(data), string->length()); - result = string->MakeExternal(resource); + result = Utils::ToLocal(string)->MakeExternal(resource); if (!result) delete resource; } else { uc16* data = new uc16[string->length()]; String::WriteToFlat(*string, data, 0, string->length()); SimpleTwoByteStringResource* resource = new SimpleTwoByteStringResource( data, string->length()); - result = string->MakeExternal(resource); + result = Utils::ToLocal(string)->MakeExternal(resource); if (!result) delete resource; } if (!result) { |