| Index: test/cctest/test-debug.cc | 
| =================================================================== | 
| --- test/cctest/test-debug.cc	(revision 1693) | 
| +++ test/cctest/test-debug.cc	(working copy) | 
| @@ -498,7 +498,7 @@ | 
| // --- | 
|  | 
|  | 
| -// Source for The JavaScript function which picks out the function name on the | 
| +// Source for The JavaScript function which picks out the function name of the | 
| // top frame. | 
| const char* frame_function_name_source = | 
| "function frame_function_name(exec_state) {" | 
| @@ -507,6 +507,24 @@ | 
| v8::Local<v8::Function> frame_function_name; | 
|  | 
|  | 
| +// Source for The JavaScript function which picks out the source line for the | 
| +// top frame. | 
| +const char* frame_source_line_source = | 
| +    "function frame_source_line(exec_state) {" | 
| +    "  return exec_state.frame(0).sourceLine();" | 
| +    "}"; | 
| +v8::Local<v8::Function> frame_source_line; | 
| + | 
| + | 
| +// Source for The JavaScript function which picks out the source column for the | 
| +// top frame. | 
| +const char* frame_source_column_source = | 
| +    "function frame_source_column(exec_state) {" | 
| +    "  return exec_state.frame(0).sourceColumn();" | 
| +    "}"; | 
| +v8::Local<v8::Function> frame_source_column; | 
| + | 
| + | 
| // Source for The JavaScript function which returns the number of frames. | 
| static const char* frame_count_source = | 
| "function frame_count(exec_state) {" | 
| @@ -518,6 +536,10 @@ | 
| // Global variable to store the last function hit - used by some tests. | 
| char last_function_hit[80]; | 
|  | 
| +// Global variables to store the last source position - used by some tests. | 
| +int last_source_line = -1; | 
| +int last_source_column = -1; | 
| + | 
| // Debug event handler which counts the break points which have been hit. | 
| int break_point_hit_count = 0; | 
| static void DebugEventBreakPointHitCount(v8::DebugEvent event, | 
| @@ -544,6 +566,26 @@ | 
| function_name->WriteAscii(last_function_hit); | 
| } | 
| } | 
| + | 
| +    if (!frame_source_line.IsEmpty()) { | 
| +      // Get the source line. | 
| +      const int argc = 1; | 
| +      v8::Handle<v8::Value> argv[argc] = { exec_state }; | 
| +      v8::Handle<v8::Value> result = frame_source_line->Call(exec_state, | 
| +                                                             argc, argv); | 
| +      CHECK(result->IsNumber()); | 
| +      last_source_line = result->Int32Value(); | 
| +    } | 
| + | 
| +    if (!frame_source_column.IsEmpty()) { | 
| +      // Get the source column. | 
| +      const int argc = 1; | 
| +      v8::Handle<v8::Value> argv[argc] = { exec_state }; | 
| +      v8::Handle<v8::Value> result = frame_source_column->Call(exec_state, | 
| +                                                               argc, argv); | 
| +      CHECK(result->IsNumber()); | 
| +      last_source_column = result->Int32Value(); | 
| +    } | 
| } | 
| } | 
|  | 
| @@ -994,6 +1036,17 @@ | 
| break_point_hit_count = 0; | 
| v8::HandleScope scope; | 
| DebugLocalContext env; | 
| + | 
| +  // Create a functions for checking the source line and column when hitting | 
| +  // a break point. | 
| +  frame_source_line = CompileFunction(&env, | 
| +                                      frame_source_line_source, | 
| +                                      "frame_source_line"); | 
| +  frame_source_column = CompileFunction(&env, | 
| +                                        frame_source_column_source, | 
| +                                        "frame_source_column"); | 
| + | 
| + | 
| v8::Debug::SetDebugEventListener(DebugEventBreakPointHitCount, | 
| v8::Undefined()); | 
| v8::Script::Compile(v8::String::New("function foo(){}"))->Run(); | 
| @@ -1008,8 +1061,12 @@ | 
| int bp = SetBreakPoint(foo, 0); | 
| foo->Call(env->Global(), 0, NULL); | 
| CHECK_EQ(1, break_point_hit_count); | 
| +  CHECK_EQ(0, last_source_line); | 
| +  CHECK_EQ(16, last_source_column); | 
| foo->Call(env->Global(), 0, NULL); | 
| CHECK_EQ(2, break_point_hit_count); | 
| +  CHECK_EQ(0, last_source_line); | 
| +  CHECK_EQ(16, last_source_column); | 
|  | 
| // Run without breakpoints. | 
| ClearBreakPoint(bp); | 
| @@ -3663,15 +3720,6 @@ | 
| } | 
|  | 
|  | 
| -// Source for a JavaScript function which returns the source line for the top | 
| -// frame. | 
| -static const char* frame_source_line_source = | 
| -    "function frame_source_line(exec_state) {" | 
| -    "  return exec_state.frame(0).sourceLine();" | 
| -    "}"; | 
| -v8::Handle<v8::Function> frame_source_line; | 
| - | 
| - | 
| // Source for a JavaScript function which returns the data parameter of a | 
| // function called in the context of the debugger. If no data parameter is | 
| // passed it throws an exception. | 
|  |