| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 7098859de3cfa9fa85d786b29cf8eef56846f086..304a8fa2eff64b818559e74f1fdfd6ebdd8e3537 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -5475,7 +5475,7 @@ Local<String> v8::String::NewExternal(
|
| bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) {
|
| i::Handle<i::String> obj = Utils::OpenHandle(this);
|
| i::Isolate* isolate = obj->GetIsolate();
|
| - if (i::StringShape(*obj).IsExternalTwoByte()) {
|
| + if (i::StringShape(*obj).IsExternal()) {
|
| return false; // Already an external string.
|
| }
|
| ENTER_V8(isolate);
|
| @@ -5488,6 +5488,8 @@ bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) {
|
| CHECK(resource && resource->data());
|
|
|
| bool result = obj->MakeExternal(resource);
|
| + // Assert that if CanMakeExternal(), then externalizing actually succeeds.
|
| + DCHECK(!CanMakeExternal() || result);
|
| if (result) {
|
| DCHECK(obj->IsExternalString());
|
| isolate->heap()->external_string_table()->AddString(*obj);
|
| @@ -5515,7 +5517,7 @@ bool v8::String::MakeExternal(
|
| v8::String::ExternalAsciiStringResource* resource) {
|
| i::Handle<i::String> obj = Utils::OpenHandle(this);
|
| i::Isolate* isolate = obj->GetIsolate();
|
| - if (i::StringShape(*obj).IsExternalTwoByte()) {
|
| + if (i::StringShape(*obj).IsExternal()) {
|
| return false; // Already an external string.
|
| }
|
| ENTER_V8(isolate);
|
| @@ -5528,6 +5530,8 @@ bool v8::String::MakeExternal(
|
| CHECK(resource && resource->data());
|
|
|
| bool result = obj->MakeExternal(resource);
|
| + // Assert that if CanMakeExternal(), then externalizing actually succeeds.
|
| + DCHECK(!CanMakeExternal() || result);
|
| if (result) {
|
| DCHECK(obj->IsExternalString());
|
| isolate->heap()->external_string_table()->AddString(*obj);
|
|
|