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

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

Issue 12263035: Unflakify SetJitCodeEventHandler test case. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 10 months 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
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index f94f658f46ad045a52cb3e208331e690969e2642..12d44af6f8693d600c8da55093743c72e2edf8a2 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -11689,6 +11689,7 @@ static bool MatchPointers(void* key1, void* key2) {
TEST(SetJitCodeEventHandler) {
+ i::FLAG_stress_compaction = true;
const char* script =
"function bar() {"
" var sum = 0;"
@@ -11705,29 +11706,29 @@ TEST(SetJitCodeEventHandler) {
isolate->Enter();
{
+ v8::HandleScope scope;
i::HashMap code(MatchPointers);
code_map = &code;
saw_bar = 0;
move_events = 0;
- i::FLAG_stress_compaction = true;
V8::SetJitCodeEventHandler(v8::kJitCodeEventDefault, event_handler);
- v8::HandleScope scope;
// Generate new code objects sparsely distributed across several
// different fragmented code-space pages.
const int kIterations = 10;
for (int i = 0; i < kIterations; ++i) {
LocalContext env;
+ i::AlwaysAllocateScope always_allocate;
+ SimulateFullSpace(HEAP->code_space());
+ CompileRun(script);
- v8::Handle<v8::Script> compiled_script;
- {
- i::AlwaysAllocateScope always_allocate;
- SimulateFullSpace(HEAP->code_space());
- compiled_script = v8_compile(script);
- }
- compiled_script->Run();
+ // Keep a strong reference to the code object in the handle scope.
+ i::Handle<i::Code> bar_code(i::Handle<i::JSFunction>::cast(
+ v8::Utils::OpenHandle(*env->Global()->Get(v8_str("bar"))))->code());
+ i::Handle<i::Code> foo_code(i::Handle<i::JSFunction>::cast(
+ v8::Utils::OpenHandle(*env->Global()->Get(v8_str("foo"))))->code());
// Clear the compilation cache to get more wastage.
ISOLATE->compilation_cache()->Clear();
@@ -11736,11 +11737,12 @@ TEST(SetJitCodeEventHandler) {
// Force code movement.
HEAP->CollectAllAvailableGarbage("TestSetJitCodeEventHandler");
+ V8::SetJitCodeEventHandler(v8::kJitCodeEventDefault, NULL);
+
CHECK_LE(kIterations, saw_bar);
- CHECK_NE(0, move_events);
+ CHECK_LT(0, move_events);
code_map = NULL;
- V8::SetJitCodeEventHandler(v8::kJitCodeEventDefault, NULL);
}
isolate->Exit();
@@ -11764,13 +11766,13 @@ TEST(SetJitCodeEventHandler) {
V8::SetJitCodeEventHandler(v8::kJitCodeEventEnumExisting, event_handler);
V8::SetJitCodeEventHandler(v8::kJitCodeEventDefault, NULL);
- code_map = NULL;
-
// We expect that we got some events. Note that if we could get code removal
// notifications, we could compare two collections, one created by listening
// from the time of creation of an isolate, and the other by subscribing
// with EnumExisting.
- CHECK_NE(0, code.occupancy());
+ CHECK_LT(0, code.occupancy());
+
+ code_map = NULL;
}
isolate->Exit();
« 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