Commit 63a51e01 authored by ager@chromium.org's avatar ager@chromium.org

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.

TBR=kasperl
Review URL: http://codereview.chromium.org/118158

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2095 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 2e49a1c0
...@@ -538,29 +538,36 @@ THREADED_TEST(ScriptMakingExternalAsciiString) { ...@@ -538,29 +538,36 @@ THREADED_TEST(ScriptMakingExternalAsciiString) {
THREADED_TEST(UsingExternalString) { THREADED_TEST(UsingExternalString) {
v8::HandleScope scope; {
uint16_t* two_byte_string = AsciiToTwoByteString("test string"); v8::HandleScope scope;
Local<String> string = String::NewExternal(new TestResource(two_byte_string)); uint16_t* two_byte_string = AsciiToTwoByteString("test string");
i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); Local<String> string =
// Trigger GCs so that the newly allocated string moves to old gen. String::NewExternal(new TestResource(two_byte_string));
i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now i::Handle<i::String> istring = v8::Utils::OpenHandle(*string);
i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now // Trigger GCs so that the newly allocated string moves to old gen.
i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now
CHECK(isymbol->IsSymbol()); 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();
} }
THREADED_TEST(UsingExternalAsciiString) { THREADED_TEST(UsingExternalAsciiString) {
v8::HandleScope scope; {
const char* one_byte_string = "test string"; v8::HandleScope scope;
Local<String> string = String::NewExternal( const char* one_byte_string = "test string";
new TestAsciiResource(i::StrDup(one_byte_string))); Local<String> string = String::NewExternal(
i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); new TestAsciiResource(i::StrDup(one_byte_string)));
// Trigger GCs so that the newly allocated string moves to old gen. i::Handle<i::String> istring = v8::Utils::OpenHandle(*string);
i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now // Trigger GCs so that the newly allocated string moves to old gen.
i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now i::Heap::CollectGarbage(0, i::NEW_SPACE); // in survivor space now
i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); i::Heap::CollectGarbage(0, i::NEW_SPACE); // in old gen now
CHECK(isymbol->IsSymbol()); i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring);
CHECK(isymbol->IsSymbol());
}
i::Heap::CollectAllGarbage();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment