Reviewers: Kasper Lund, Description: Fix flakyness in tests: make sure to garbage collect temporary test external strings so that they are not disposed when running other tests that rely on only one external string being disposed during its run.
Please review this at http://codereview.chromium.org/118158 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M test/cctest/test-api.cc Index: test/cctest/test-api.cc =================================================================== --- test/cctest/test-api.cc (revision 2025) +++ test/cctest/test-api.cc (working copy) @@ -538,29 +538,35 @@ THREADED_TEST(UsingExternalString) { - 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); - // Trigger GCs so that the newly allocated string moves to old gen. - i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now - i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now - i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); - CHECK(isymbol->IsSymbol()); + { + 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); + // Trigger GCs so that the newly allocated string moves to old gen. + i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now + i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now + i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); + CHECK(isymbol->IsSymbol()); + } } THREADED_TEST(UsingExternalAsciiString) { - 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); - // Trigger GCs so that the newly allocated string moves to old gen. - i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now - i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now - i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); - CHECK(isymbol->IsSymbol()); + { + 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); + // Trigger GCs so that the newly allocated string moves to old gen. + i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now + i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now + i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); + CHECK(isymbol->IsSymbol()); + } + i::Heap::CollectAllGarbage(); } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
