| Index: test/cctest/test-debug.cc
|
| diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc
|
| index 5f8b8260508adc5f2c9f6aef4d66383e52dcb786..5ffe362f49b707b0fcf6fd8d236e72f6a2e53162 100644
|
| --- a/test/cctest/test-debug.cc
|
| +++ b/test/cctest/test-debug.cc
|
| @@ -1244,7 +1244,9 @@ TEST(GCDuringBreakPointProcessing) {
|
|
|
| // Call the function three times with different garbage collections in between
|
| // and make sure that the break point survives.
|
| -static void CallAndGC(v8::Local<v8::Object> recv, v8::Local<v8::Function> f) {
|
| +static void CallAndGC(v8::Local<v8::Object> recv,
|
| + v8::Local<v8::Function> f,
|
| + bool force_compaction) {
|
| break_point_hit_count = 0;
|
|
|
| for (int i = 0; i < 3; i++) {
|
| @@ -1258,15 +1260,14 @@ static void CallAndGC(v8::Local<v8::Object> recv, v8::Local<v8::Function> f) {
|
| CHECK_EQ(2 + i * 3, break_point_hit_count);
|
|
|
| // Mark sweep (and perhaps compact) and call function.
|
| - Heap::CollectAllGarbage(false);
|
| + Heap::CollectAllGarbage(force_compaction);
|
| f->Call(recv, 0, NULL);
|
| CHECK_EQ(3 + i * 3, break_point_hit_count);
|
| }
|
| }
|
|
|
|
|
| -// Test that a break point can be set at a return store location.
|
| -TEST(BreakPointSurviveGC) {
|
| +static void TestBreakPointSurviveGC(bool force_compaction) {
|
| break_point_hit_count = 0;
|
| v8::HandleScope scope;
|
| DebugLocalContext env;
|
| @@ -1278,28 +1279,35 @@ TEST(BreakPointSurviveGC) {
|
| // Test IC store break point with garbage collection.
|
| foo = CompileFunction(&env, "function foo(){bar=0;}", "foo");
|
| SetBreakPoint(foo, 0);
|
| - CallAndGC(env->Global(), foo);
|
| + CallAndGC(env->Global(), foo, force_compaction);
|
|
|
| // Test IC load break point with garbage collection.
|
| foo = CompileFunction(&env, "bar=1;function foo(){var x=bar;}", "foo");
|
| SetBreakPoint(foo, 0);
|
| - CallAndGC(env->Global(), foo);
|
| + CallAndGC(env->Global(), foo, force_compaction);
|
|
|
| // Test IC call break point with garbage collection.
|
| foo = CompileFunction(&env, "function bar(){};function foo(){bar();}", "foo");
|
| SetBreakPoint(foo, 0);
|
| - CallAndGC(env->Global(), foo);
|
| + CallAndGC(env->Global(), foo, force_compaction);
|
|
|
| // Test return break point with garbage collection.
|
| foo = CompileFunction(&env, "function foo(){}", "foo");
|
| SetBreakPoint(foo, 0);
|
| - CallAndGC(env->Global(), foo);
|
| + CallAndGC(env->Global(), foo, force_compaction);
|
|
|
| v8::Debug::SetDebugEventListener(NULL);
|
| CheckDebuggerUnloaded();
|
| }
|
|
|
|
|
| +// Test that a break point can be set at a return store location.
|
| +TEST(BreakPointSurviveGC) {
|
| + TestBreakPointSurviveGC(false);
|
| + TestBreakPointSurviveGC(true);
|
| +}
|
| +
|
| +
|
| // Test that break points can be set using the global Debug object.
|
| TEST(BreakPointThroughJavaScript) {
|
| break_point_hit_count = 0;
|
|
|