| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index 3be068009e275e53bb60903d812af6f841ab6069..89c74304f227ce8bdd26c9a3ded95bd4f68473a1 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -14816,11 +14816,12 @@ THREADED_TEST(GetHeapStatistics) { | 
|  | 
| class VisitorImpl : public v8::ExternalResourceVisitor { | 
| public: | 
| -  VisitorImpl(TestResource* r1, TestResource* r2) | 
| -      : resource1_(r1), | 
| -        resource2_(r2), | 
| -        found_resource1_(false), | 
| -        found_resource2_(false) {} | 
| +  explicit VisitorImpl(TestResource** resource) { | 
| +    for (int i = 0; i < 4; i++) { | 
| +      resource_[i] = resource[i]; | 
| +      found_resource_[i] = false; | 
| +    } | 
| +  } | 
| virtual ~VisitorImpl() {} | 
| virtual void VisitExternalString(v8::Handle<v8::String> string) { | 
| if (!string->IsExternal()) { | 
| @@ -14830,25 +14831,22 @@ class VisitorImpl : public v8::ExternalResourceVisitor { | 
| v8::String::ExternalStringResource* resource = | 
| string->GetExternalStringResource(); | 
| CHECK(resource); | 
| -    if (resource1_ == resource) { | 
| -      CHECK(!found_resource1_); | 
| -      found_resource1_ = true; | 
| -    } | 
| -    if (resource2_ == resource) { | 
| -      CHECK(!found_resource2_); | 
| -      found_resource2_ = true; | 
| +    for (int i = 0; i < 4; i++) { | 
| +      if (resource_[i] == resource) { | 
| +        CHECK(!found_resource_[i]); | 
| +        found_resource_[i] = true; | 
| +      } | 
| } | 
| } | 
| void CheckVisitedResources() { | 
| -    CHECK(found_resource1_); | 
| -    CHECK(found_resource2_); | 
| +    for (int i = 0; i < 4; i++) { | 
| +      CHECK(found_resource_[i]); | 
| +    } | 
| } | 
|  | 
| private: | 
| -  v8::String::ExternalStringResource* resource1_; | 
| -  v8::String::ExternalStringResource* resource2_; | 
| -  bool found_resource1_; | 
| -  bool found_resource2_; | 
| +  v8::String::ExternalStringResource* resource_[4]; | 
| +  bool found_resource_[4]; | 
| }; | 
|  | 
| TEST(VisitExternalStrings) { | 
| @@ -14856,16 +14854,33 @@ TEST(VisitExternalStrings) { | 
| LocalContext env; | 
| const char* string = "Some string"; | 
| uint16_t* two_byte_string = AsciiToTwoByteString(string); | 
| -  TestResource* resource1 = new TestResource(two_byte_string); | 
| -  v8::Local<v8::String> string1 = v8::String::NewExternal(resource1); | 
| -  TestResource* resource2 = new TestResource(two_byte_string); | 
| -  v8::Local<v8::String> string2 = v8::String::NewExternal(resource2); | 
| - | 
| -  // We need to add usages for string1 and string2 to avoid warnings in GCC 4.7 | 
| +  TestResource* resource[4]; | 
| +  resource[0] = new TestResource(two_byte_string); | 
| +  v8::Local<v8::String> string0 = v8::String::NewExternal(resource[0]); | 
| +  resource[1] = new TestResource(two_byte_string); | 
| +  v8::Local<v8::String> string1 = v8::String::NewExternal(resource[1]); | 
| + | 
| +  // Externalized symbol. | 
| +  resource[2] = new TestResource(two_byte_string); | 
| +  v8::Local<v8::String> string2 = v8::String::NewSymbol(string); | 
| +  CHECK(string2->MakeExternal(resource[2])); | 
| + | 
| +  // Symbolized External. | 
| +  resource[3] = new TestResource(AsciiToTwoByteString("Some other string")); | 
| +  v8::Local<v8::String> string3 = v8::String::NewExternal(resource[3]); | 
| +  HEAP->CollectAllAvailableGarbage();  // Tenure string. | 
| +  // Turn into a symbol. | 
| +  i::Handle<i::String> string3_i = v8::Utils::OpenHandle(*string3); | 
| +  CHECK(!HEAP->LookupSymbol(*string3_i)->IsFailure()); | 
| +  CHECK(string3_i->IsSymbol()); | 
| + | 
| +  // We need to add usages for string* to avoid warnings in GCC 4.7 | 
| +  CHECK(string0->IsExternal()); | 
| CHECK(string1->IsExternal()); | 
| CHECK(string2->IsExternal()); | 
| +  CHECK(string3->IsExternal()); | 
|  | 
| -  VisitorImpl visitor(resource1, resource2); | 
| +  VisitorImpl visitor(resource); | 
| v8::V8::VisitExternalResources(&visitor); | 
| visitor.CheckVisitedResources(); | 
| } | 
|  |