Index: test/cctest/test-api.cc |
=================================================================== |
--- test/cctest/test-api.cc (revision 268) |
+++ test/cctest/test-api.cc (working copy) |
@@ -4697,7 +4697,7 @@ |
} |
-static void EnsureNoSurvivingGlobalObjects() { |
+static int GetSurvivingGlobalObjectsCount() { |
int count = 0; |
v8::internal::Heap::CollectAllGarbage(); |
v8::internal::HeapIterator it; |
@@ -4710,38 +4710,34 @@ |
#ifdef DEBUG |
if (count > 0) v8::internal::Heap::TracePathToGlobal(); |
#endif |
- CHECK_EQ(0, count); |
+ return count; |
} |
-// This test assumes that there are zero global objects when the |
-// test starts. This is not going to be true if we are using the |
-// API fuzzer. |
TEST(DontLeakGlobalObjects) { |
// Regression test for issues 1139850 and 1174891. |
- v8::internal::V8::Initialize(NULL); |
- if (v8::internal::Snapshot::IsEnabled()) return; |
+ v8::V8::Initialize(); |
- EnsureNoSurvivingGlobalObjects(); |
+ int count = GetSurvivingGlobalObjectsCount(); |
for (int i = 0; i < 5; i++) { |
{ v8::HandleScope scope; |
LocalContext context; |
} |
- EnsureNoSurvivingGlobalObjects(); |
+ CHECK_EQ(count, GetSurvivingGlobalObjectsCount()); |
{ v8::HandleScope scope; |
LocalContext context; |
v8_compile("Date")->Run(); |
} |
- EnsureNoSurvivingGlobalObjects(); |
+ CHECK_EQ(count, GetSurvivingGlobalObjectsCount()); |
{ v8::HandleScope scope; |
LocalContext context; |
v8_compile("/aaa/")->Run(); |
} |
- EnsureNoSurvivingGlobalObjects(); |
+ CHECK_EQ(count, GetSurvivingGlobalObjectsCount()); |
{ v8::HandleScope scope; |
const char* extension_list[] = { "v8/gc" }; |
@@ -4749,7 +4745,7 @@ |
LocalContext context(&extensions); |
v8_compile("gc();")->Run(); |
} |
- EnsureNoSurvivingGlobalObjects(); |
+ CHECK_EQ(count, GetSurvivingGlobalObjectsCount()); |
{ v8::HandleScope scope; |
const char* extension_list[] = { "v8/print" }; |
@@ -4757,14 +4753,13 @@ |
LocalContext context(&extensions); |
v8_compile("print('hest');")->Run(); |
} |
- EnsureNoSurvivingGlobalObjects(); |
+ CHECK_EQ(count, GetSurvivingGlobalObjectsCount()); |
} |
} |
THREADED_TEST(CheckForCrossContextObjectLiterals) { |
- v8::internal::V8::Initialize(NULL); |
- if (v8::internal::Snapshot::IsEnabled()) return; |
+ v8::V8::Initialize(); |
const int nof = 2; |
const char* sources[nof] = { |