Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index 761b402fa7dfe4d0d6bc3d022c6d54a1f71fd0fc..7803c873a18711126c07310b294ee50aa51415ef 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -17188,6 +17188,26 @@ TEST(VisitExternalStrings) { |
} |
+TEST(ExternalStringCollectedAtTearDown) { |
+ int destroyed = 0; |
+ v8::Isolate* isolate = v8::Isolate::New(); |
+ { v8::Isolate::Scope isolate_scope(isolate); |
+ v8::HandleScope handle_scope(isolate); |
+ const char* s = "One string to test them all, one string to find them."; |
+ TestAsciiResource* inscription = |
+ new TestAsciiResource(i::StrDup(s), &destroyed); |
+ v8::Local<v8::String> ring = v8::String::NewExternal(inscription); |
+ // Ring is still alive. Orcs are roaming freely across our lands. |
+ CHECK_EQ(0, destroyed); |
+ USE(ring); |
+ } |
+ |
+ isolate->Dispose(); |
+ // Ring has been destroyed. Free Peoples of Middle-earth Rejoice. |
+ CHECK_EQ(1, destroyed); |
+} |
+ |
+ |
static double DoubleFromBits(uint64_t value) { |
double target; |
i::OS::MemCopy(&target, &value, sizeof(target)); |