| Index: test/cctest/test-debug.cc
|
| ===================================================================
|
| --- test/cctest/test-debug.cc (revision 4583)
|
| +++ test/cctest/test-debug.cc (working copy)
|
| @@ -2511,6 +2511,50 @@
|
| }
|
|
|
|
|
| +// Test of the stepping mechanism for named load in a loop.
|
| +TEST(DebugStepNamedLoadLoop) {
|
| + v8::HandleScope scope;
|
| + DebugLocalContext env;
|
| +
|
| + // Create a function for testing stepping of named load.
|
| + v8::Local<v8::Function> foo = CompileFunction(
|
| + &env,
|
| + "function foo() {\n"
|
| + " var a = [];\n"
|
| + " var s = \"\";\n"
|
| + " for (var i = 0; i < 10; i++) {\n"
|
| + " var v = new V(i, i + 1);\n"
|
| + " v.y;\n"
|
| + " a.length;\n" // Special case: array length.
|
| + " s.length;\n" // Special case: string length.
|
| + " }\n"
|
| + "}\n"
|
| + "function V(x, y) {\n"
|
| + " this.x = x;\n"
|
| + " this.y = y;\n"
|
| + "}\n",
|
| + "foo");
|
| +
|
| + // Call function without any break points to ensure inlining is in place.
|
| + foo->Call(env->Global(), 0, NULL);
|
| +
|
| + // Register a debug event listener which steps and counts.
|
| + v8::Debug::SetDebugEventListener(DebugEventStep);
|
| +
|
| + // Setup break point and step through the function.
|
| + SetBreakPoint(foo, 4);
|
| + step_action = StepNext;
|
| + break_point_hit_count = 0;
|
| + foo->Call(env->Global(), 0, NULL);
|
| +
|
| + // With stepping all break locations are hit.
|
| + CHECK_EQ(41, break_point_hit_count);
|
| +
|
| + v8::Debug::SetDebugEventListener(NULL);
|
| + CheckDebuggerUnloaded();
|
| +}
|
| +
|
| +
|
| // Test the stepping mechanism with different ICs.
|
| TEST(DebugStepLinearMixedICs) {
|
| v8::HandleScope scope;
|
|
|