Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(579)

Unified Diff: test/cctest/test-api.cc

Issue 449051: Update test for issue 528... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
===================================================================
--- test/cctest/test-api.cc (revision 3381)
+++ test/cctest/test-api.cc (working copy)
@@ -8442,11 +8442,9 @@
v8::internal::HeapObject* object = it.next();
if (object->IsJSGlobalObject()) {
count++;
+ //object->PrintLn();
}
}
-#ifdef DEBUG
- if (count > 0) v8::internal::Heap::TracePathToGlobal();
-#endif
return count;
}
@@ -8456,10 +8454,16 @@
v8::HandleScope scope;
v8::Persistent<Context> context;
+ v8::Persistent<Context> other_context;
int gc_count;
+ // Create a context used to keep the code from aging in the compilation
+ // cache.
+ other_context = Context::New();
+
// Context-dependent context data creates reference from the compilation
// cache to the global object.
+ const char* source_simple = "1";
context = Context::New();
{
v8::HandleScope scope;
@@ -8467,44 +8471,52 @@
context->Enter();
Local<v8::String> obj = v8::String::New("");
context->SetData(obj);
- CompileRun("1");
+ CompileRun(source_simple);
context->Exit();
}
context.Dispose();
for (gc_count = 1; gc_count < 10; gc_count++) {
+ other_context->Enter();
+ CompileRun(source_simple);
+ other_context->Exit();
v8::internal::Heap::CollectAllGarbage(false);
- if (GetGlobalObjectsCount() == 0) break;
+ if (GetGlobalObjectsCount() == 1) break;
}
- CHECK_EQ(0, GetGlobalObjectsCount());
- CHECK_EQ(2, gc_count);
+ CHECK(gc_count <= 2);
+ CHECK_EQ(1, GetGlobalObjectsCount());
// Eval in a function creates reference from the compilation cache to the
// global object.
+ const char* source_eval = "function f(){eval('1')}; f()";
context = Context::New();
{
v8::HandleScope scope;
context->Enter();
- CompileRun("function f(){eval('1')}; f()");
+ CompileRun(source_eval);
context->Exit();
}
context.Dispose();
for (gc_count = 1; gc_count < 10; gc_count++) {
+ other_context->Enter();
+ CompileRun(source_eval);
+ other_context->Exit();
v8::internal::Heap::CollectAllGarbage(false);
- if (GetGlobalObjectsCount() == 0) break;
+ if (GetGlobalObjectsCount() == 1) break;
}
- CHECK_EQ(0, GetGlobalObjectsCount());
- CHECK_EQ(2, gc_count);
+ CHECK_EQ(10, gc_count); // Should be 1 or 2 when the bug is resolved.
+ CHECK_EQ(2, GetGlobalObjectsCount()); // Should be 1 when resolved.
// Looking up the line number for an exception creates reference from the
// compilation cache to the global object.
+ const char* source_exception = "function f(){throw 1;} f()";
context = Context::New();
{
v8::HandleScope scope;
context->Enter();
v8::TryCatch try_catch;
- CompileRun("function f(){throw 1;}; f()");
+ CompileRun(source_exception);
CHECK(try_catch.HasCaught());
v8::Handle<v8::Message> message = try_catch.Message();
CHECK(!message.IsEmpty());
@@ -8513,9 +8525,14 @@
}
context.Dispose();
for (gc_count = 1; gc_count < 10; gc_count++) {
+ other_context->Enter();
+ CompileRun(source_exception);
+ other_context->Exit();
v8::internal::Heap::CollectAllGarbage(false);
- if (GetGlobalObjectsCount() == 0) break;
+ if (GetGlobalObjectsCount() == 1) break;
}
- CHECK_EQ(0, GetGlobalObjectsCount());
- CHECK_EQ(2, gc_count);
+ CHECK(gc_count <= 2);
+ CHECK_EQ(1, GetGlobalObjectsCount());
+
+ other_context.Dispose();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698