| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index 3be068009e275e53bb60903d812af6f841ab6069..70d1cde9caafd6823f67d6fb83df81a0a9825734 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -14816,11 +14816,13 @@ THREADED_TEST(GetHeapStatistics) {
|
|
|
| class VisitorImpl : public v8::ExternalResourceVisitor {
|
| public:
|
| - VisitorImpl(TestResource* r1, TestResource* r2)
|
| + VisitorImpl(TestResource* r1, TestResource* r2, TestResource* r3)
|
| : resource1_(r1),
|
| resource2_(r2),
|
| + resource3_(r3),
|
| found_resource1_(false),
|
| - found_resource2_(false) {}
|
| + found_resource2_(false),
|
| + found_resource3_(false) {}
|
| virtual ~VisitorImpl() {}
|
| virtual void VisitExternalString(v8::Handle<v8::String> string) {
|
| if (!string->IsExternal()) {
|
| @@ -14838,17 +14840,24 @@ class VisitorImpl : public v8::ExternalResourceVisitor {
|
| CHECK(!found_resource2_);
|
| found_resource2_ = true;
|
| }
|
| + if (resource3_ == resource) {
|
| + CHECK(!found_resource3_);
|
| + found_resource3_ = true;
|
| + }
|
| }
|
| void CheckVisitedResources() {
|
| CHECK(found_resource1_);
|
| CHECK(found_resource2_);
|
| + CHECK(found_resource3_);
|
| }
|
|
|
| private:
|
| v8::String::ExternalStringResource* resource1_;
|
| v8::String::ExternalStringResource* resource2_;
|
| + v8::String::ExternalStringResource* resource3_;
|
| bool found_resource1_;
|
| bool found_resource2_;
|
| + bool found_resource3_;
|
| };
|
|
|
| TEST(VisitExternalStrings) {
|
| @@ -14860,12 +14869,17 @@ TEST(VisitExternalStrings) {
|
| 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);
|
| + TestResource* resource3 = new TestResource(two_byte_string);
|
| + v8::Local<v8::String> symbol = v8::String::NewSymbol(string);
|
| + symbol->MakeExternal(resource3);
|
|
|
| - // We need to add usages for string1 and string2 to avoid warnings in GCC 4.7
|
| + // We need to add usages for string1, string2 and symbol string
|
| + // to avoid warnings in GCC 4.7
|
| CHECK(string1->IsExternal());
|
| CHECK(string2->IsExternal());
|
| + CHECK(symbol->IsExternal());
|
|
|
| - VisitorImpl visitor(resource1, resource2);
|
| + VisitorImpl visitor(resource1, resource2, resource3);
|
| v8::V8::VisitExternalResources(&visitor);
|
| visitor.CheckVisitedResources();
|
| }
|
|
|