| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index 6d6c174fd09e171d2a52e0284e68832839a44645..3e3c9578e3b23cf2641e126a76ae325d5d455bcc 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -447,6 +447,40 @@ THREADED_TEST(UsingExternalAsciiString) { | 
| } | 
|  | 
|  | 
| +THREADED_TEST(ScavengeExternalString) { | 
| +  TestResource::dispose_count = 0; | 
| +  { | 
| +    v8::HandleScope scope; | 
| +    uint16_t* two_byte_string = AsciiToTwoByteString("test string"); | 
| +    Local<String> string = | 
| +        String::NewExternal(new TestResource(two_byte_string)); | 
| +    i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 
| +    i::Heap::CollectGarbage(0, i::NEW_SPACE); | 
| +    CHECK(i::Heap::InNewSpace(*istring)); | 
| +    CHECK_EQ(0, TestResource::dispose_count); | 
| +  } | 
| +  i::Heap::CollectGarbage(0, i::NEW_SPACE); | 
| +  CHECK_EQ(1, TestResource::dispose_count); | 
| +} | 
| + | 
| + | 
| +THREADED_TEST(ScavengeExternalAsciiString) { | 
| +  TestAsciiResource::dispose_count = 0; | 
| +  { | 
| +    v8::HandleScope scope; | 
| +    const char* one_byte_string = "test string"; | 
| +    Local<String> string = String::NewExternal( | 
| +        new TestAsciiResource(i::StrDup(one_byte_string))); | 
| +    i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 
| +    i::Heap::CollectGarbage(0, i::NEW_SPACE); | 
| +    CHECK(i::Heap::InNewSpace(*istring)); | 
| +    CHECK_EQ(0, TestAsciiResource::dispose_count); | 
| +  } | 
| +  i::Heap::CollectGarbage(0, i::NEW_SPACE); | 
| +  CHECK_EQ(1, TestAsciiResource::dispose_count); | 
| +} | 
| + | 
| + | 
| THREADED_TEST(StringConcat) { | 
| { | 
| v8::HandleScope scope; | 
|  |