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

Side by Side Diff: test/cctest/test-debug.cc

Issue 877753007: Reland "Initial switch to Chromium-style CHECK_* and DCHECK_* macros.". (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: VS201x now happy? Created 5 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 unified diff | Download patch
« no previous file with comments | « test/cctest/test-cpu-profiler.cc ('k') | test/cctest/test-decls.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 387
388 return debugged_functions; 388 return debugged_functions;
389 } 389 }
390 390
391 391
392 // Check that the debugger has been fully unloaded. 392 // Check that the debugger has been fully unloaded.
393 void CheckDebuggerUnloaded(bool check_functions) { 393 void CheckDebuggerUnloaded(bool check_functions) {
394 // Check that the debugger context is cleared and that there is no debug 394 // Check that the debugger context is cleared and that there is no debug
395 // information stored for the debugger. 395 // information stored for the debugger.
396 CHECK(CcTest::i_isolate()->debug()->debug_context().is_null()); 396 CHECK(CcTest::i_isolate()->debug()->debug_context().is_null());
397 CHECK_EQ(NULL, CcTest::i_isolate()->debug()->debug_info_list_); 397 CHECK(!CcTest::i_isolate()->debug()->debug_info_list_);
398 398
399 // Collect garbage to ensure weak handles are cleared. 399 // Collect garbage to ensure weak handles are cleared.
400 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 400 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags);
401 CcTest::heap()->CollectAllGarbage(Heap::kMakeHeapIterableMask); 401 CcTest::heap()->CollectAllGarbage(Heap::kMakeHeapIterableMask);
402 402
403 // Iterate the head and check that there are no debugger related objects left. 403 // Iterate the head and check that there are no debugger related objects left.
404 HeapIterator iterator(CcTest::heap()); 404 HeapIterator iterator(CcTest::heap());
405 for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) { 405 for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
406 CHECK(!obj->IsDebugInfo()); 406 CHECK(!obj->IsDebugInfo());
407 CHECK(!obj->IsBreakPointInfo()); 407 CHECK(!obj->IsBreakPointInfo());
(...skipping 1733 matching lines...) Expand 10 before | Expand all | Expand 10 after
2141 g = v8::Local<v8::Function>::Cast( 2141 g = v8::Local<v8::Function>::Cast(
2142 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "g"))); 2142 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "g")));
2143 2143
2144 // Check that a break point was hit when the script was run. 2144 // Check that a break point was hit when the script was run.
2145 CHECK_EQ(1, break_point_hit_count); 2145 CHECK_EQ(1, break_point_hit_count);
2146 CHECK_EQ(0, StrLength(last_function_hit)); 2146 CHECK_EQ(0, StrLength(last_function_hit));
2147 2147
2148 // Call f and check that the script break point. 2148 // Call f and check that the script break point.
2149 f->Call(env->Global(), 0, NULL); 2149 f->Call(env->Global(), 0, NULL);
2150 CHECK_EQ(2, break_point_hit_count); 2150 CHECK_EQ(2, break_point_hit_count);
2151 CHECK_EQ("f", last_function_hit); 2151 CHECK_EQ(0, strcmp("f", last_function_hit));
2152 2152
2153 // Call g and check that the script break point. 2153 // Call g and check that the script break point.
2154 g->Call(env->Global(), 0, NULL); 2154 g->Call(env->Global(), 0, NULL);
2155 CHECK_EQ(3, break_point_hit_count); 2155 CHECK_EQ(3, break_point_hit_count);
2156 CHECK_EQ("g", last_function_hit); 2156 CHECK_EQ(0, strcmp("g", last_function_hit));
2157 2157
2158 // Clear the script break point on g and set one on h. 2158 // Clear the script break point on g and set one on h.
2159 ClearBreakPointFromJS(env->GetIsolate(), sbp3); 2159 ClearBreakPointFromJS(env->GetIsolate(), sbp3);
2160 int sbp4 = 2160 int sbp4 =
2161 SetScriptBreakPointByNameFromJS(env->GetIsolate(), "test.html", 6, -1); 2161 SetScriptBreakPointByNameFromJS(env->GetIsolate(), "test.html", 6, -1);
2162 2162
2163 // Call g and check that the script break point in h is hit. 2163 // Call g and check that the script break point in h is hit.
2164 g->Call(env->Global(), 0, NULL); 2164 g->Call(env->Global(), 0, NULL);
2165 CHECK_EQ(4, break_point_hit_count); 2165 CHECK_EQ(4, break_point_hit_count);
2166 CHECK_EQ("h", last_function_hit); 2166 CHECK_EQ(0, strcmp("h", last_function_hit));
2167 2167
2168 // Clear break points in f and h. Set a new one in the script between 2168 // Clear break points in f and h. Set a new one in the script between
2169 // functions f and g and test that there is no break points in f and g any 2169 // functions f and g and test that there is no break points in f and g any
2170 // more. 2170 // more.
2171 ClearBreakPointFromJS(env->GetIsolate(), sbp2); 2171 ClearBreakPointFromJS(env->GetIsolate(), sbp2);
2172 ClearBreakPointFromJS(env->GetIsolate(), sbp4); 2172 ClearBreakPointFromJS(env->GetIsolate(), sbp4);
2173 int sbp5 = 2173 int sbp5 =
2174 SetScriptBreakPointByNameFromJS(env->GetIsolate(), "test.html", 4, -1); 2174 SetScriptBreakPointByNameFromJS(env->GetIsolate(), "test.html", 4, -1);
2175 break_point_hit_count = 0; 2175 break_point_hit_count = 0;
2176 f->Call(env->Global(), 0, NULL); 2176 f->Call(env->Global(), 0, NULL);
(...skipping 2058 matching lines...) Expand 10 before | Expand all | Expand 10 after
4235 // Call all functions with different argument count. 4235 // Call all functions with different argument count.
4236 break_point_hit_count = 0; 4236 break_point_hit_count = 0;
4237 for (unsigned int i = 0; i < arraysize(argv); i++) { 4237 for (unsigned int i = 0; i < arraysize(argv); i++) {
4238 f0->Call(env->Global(), i, argv); 4238 f0->Call(env->Global(), i, argv);
4239 f1->Call(env->Global(), i, argv); 4239 f1->Call(env->Global(), i, argv);
4240 f2->Call(env->Global(), i, argv); 4240 f2->Call(env->Global(), i, argv);
4241 f3->Call(env->Global(), i, argv); 4241 f3->Call(env->Global(), i, argv);
4242 } 4242 }
4243 4243
4244 // One break for each function called. 4244 // One break for each function called.
4245 CHECK_EQ(4 * arraysize(argv), break_point_hit_count); 4245 CHECK(4 * arraysize(argv) == break_point_hit_count);
4246 4246
4247 // Get rid of the debug event listener. 4247 // Get rid of the debug event listener.
4248 v8::Debug::SetDebugEventListener(NULL); 4248 v8::Debug::SetDebugEventListener(NULL);
4249 CheckDebuggerUnloaded(); 4249 CheckDebuggerUnloaded();
4250 } 4250 }
4251 4251
4252 4252
4253 // Test to ensure that JavaScript code keeps running while the debug break 4253 // Test to ensure that JavaScript code keeps running while the debug break
4254 // through the stack limit flag is set but breaks are disabled. 4254 // through the stack limit flag is set but breaks are disabled.
4255 TEST(DisableBreak) { 4255 TEST(DisableBreak) {
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after
5668 isolate, "debugger_call_with_data"))); 5668 isolate, "debugger_call_with_data")));
5669 5669
5670 // Compile a function capturing closure. 5670 // Compile a function capturing closure.
5671 debugger_call_with_closure = 5671 debugger_call_with_closure =
5672 v8::Local<v8::Function>::Cast(v8::Script::Compile( 5672 v8::Local<v8::Function>::Cast(v8::Script::Compile(
5673 v8::String::NewFromUtf8(isolate, 5673 v8::String::NewFromUtf8(isolate,
5674 debugger_call_with_closure_source))->Run()); 5674 debugger_call_with_closure_source))->Run());
5675 5675
5676 // Calling a function through the debugger returns 0 frames if there are 5676 // Calling a function through the debugger returns 0 frames if there are
5677 // no JavaScript frames. 5677 // no JavaScript frames.
5678 CHECK_EQ(v8::Integer::New(isolate, 0), 5678 CHECK(v8::Integer::New(isolate, 0)->Equals(v8::Debug::Call(frame_count)));
5679 v8::Debug::Call(frame_count));
5680 5679
5681 // Test that the number of frames can be retrieved. 5680 // Test that the number of frames can be retrieved.
5682 v8::Script::Compile( 5681 v8::Script::Compile(
5683 v8::String::NewFromUtf8(isolate, "CheckFrameCount(1)"))->Run(); 5682 v8::String::NewFromUtf8(isolate, "CheckFrameCount(1)"))->Run();
5684 v8::Script::Compile(v8::String::NewFromUtf8(isolate, 5683 v8::Script::Compile(v8::String::NewFromUtf8(isolate,
5685 "function f() {" 5684 "function f() {"
5686 " CheckFrameCount(2);" 5685 " CheckFrameCount(2);"
5687 "}; f()"))->Run(); 5686 "}; f()"))->Run();
5688 5687
5689 // Test that the source line can be retrieved. 5688 // Test that the source line can be retrieved.
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
5966 v8::ScriptOrigin origin1 = 5965 v8::ScriptOrigin origin1 =
5967 v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "name")); 5966 v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "name"));
5968 v8::Handle<v8::Script> script1 = v8::Script::Compile(script, &origin1); 5967 v8::Handle<v8::Script> script1 = v8::Script::Compile(script, &origin1);
5969 script1->Run(); 5968 script1->Run();
5970 v8::Local<v8::Function> f; 5969 v8::Local<v8::Function> f;
5971 f = v8::Local<v8::Function>::Cast( 5970 f = v8::Local<v8::Function>::Cast(
5972 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); 5971 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f")));
5973 5972
5974 f->Call(env->Global(), 0, NULL); 5973 f->Call(env->Global(), 0, NULL);
5975 CHECK_EQ(1, break_point_hit_count); 5974 CHECK_EQ(1, break_point_hit_count);
5976 CHECK_EQ("name", last_script_name_hit); 5975 CHECK_EQ(0, strcmp("name", last_script_name_hit));
5977 5976
5978 // Compile the same script again without setting data. As the compilation 5977 // Compile the same script again without setting data. As the compilation
5979 // cache is disabled when debugging expect the data to be missing. 5978 // cache is disabled when debugging expect the data to be missing.
5980 v8::Script::Compile(script, &origin1)->Run(); 5979 v8::Script::Compile(script, &origin1)->Run();
5981 f = v8::Local<v8::Function>::Cast( 5980 f = v8::Local<v8::Function>::Cast(
5982 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); 5981 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f")));
5983 f->Call(env->Global(), 0, NULL); 5982 f->Call(env->Global(), 0, NULL);
5984 CHECK_EQ(2, break_point_hit_count); 5983 CHECK_EQ(2, break_point_hit_count);
5985 CHECK_EQ("name", last_script_name_hit); 5984 CHECK_EQ(0, strcmp("name", last_script_name_hit));
5986 5985
5987 v8::Local<v8::String> data_obj_source = v8::String::NewFromUtf8( 5986 v8::Local<v8::String> data_obj_source = v8::String::NewFromUtf8(
5988 env->GetIsolate(), 5987 env->GetIsolate(),
5989 "({ a: 'abc',\n" 5988 "({ a: 'abc',\n"
5990 " b: 123,\n" 5989 " b: 123,\n"
5991 " toString: function() { return this.a + ' ' + this.b; }\n" 5990 " toString: function() { return this.a + ' ' + this.b; }\n"
5992 "})\n"); 5991 "})\n");
5993 v8::Script::Compile(data_obj_source)->Run(); 5992 v8::Script::Compile(data_obj_source)->Run();
5994 v8::ScriptOrigin origin2 = 5993 v8::ScriptOrigin origin2 =
5995 v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "new name")); 5994 v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "new name"));
5996 v8::Handle<v8::Script> script2 = v8::Script::Compile(script, &origin2); 5995 v8::Handle<v8::Script> script2 = v8::Script::Compile(script, &origin2);
5997 script2->Run(); 5996 script2->Run();
5998 f = v8::Local<v8::Function>::Cast( 5997 f = v8::Local<v8::Function>::Cast(
5999 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); 5998 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f")));
6000 f->Call(env->Global(), 0, NULL); 5999 f->Call(env->Global(), 0, NULL);
6001 CHECK_EQ(3, break_point_hit_count); 6000 CHECK_EQ(3, break_point_hit_count);
6002 CHECK_EQ("new name", last_script_name_hit); 6001 CHECK_EQ(0, strcmp("new name", last_script_name_hit));
6003 6002
6004 v8::Handle<v8::Script> script3 = v8::Script::Compile(script, &origin2); 6003 v8::Handle<v8::Script> script3 = v8::Script::Compile(script, &origin2);
6005 script3->Run(); 6004 script3->Run();
6006 f = v8::Local<v8::Function>::Cast( 6005 f = v8::Local<v8::Function>::Cast(
6007 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); 6006 env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f")));
6008 f->Call(env->Global(), 0, NULL); 6007 f->Call(env->Global(), 0, NULL);
6009 CHECK_EQ(4, break_point_hit_count); 6008 CHECK_EQ(4, break_point_hit_count);
6010 } 6009 }
6011 6010
6012 6011
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
6197 v8::Local<v8::Value> result = f->Call(env->Global(), argc, argv); 6196 v8::Local<v8::Value> result = f->Call(env->Global(), argc, argv);
6198 CHECK_EQ(12, result->Int32Value()); 6197 CHECK_EQ(12, result->Int32Value());
6199 6198
6200 v8::Debug::SetDebugEventListener(DebugEventDebugBreak); 6199 v8::Debug::SetDebugEventListener(DebugEventDebugBreak);
6201 v8::Debug::DebugBreak(env->GetIsolate()); 6200 v8::Debug::DebugBreak(env->GetIsolate());
6202 result = f->Call(env->Global(), argc, argv); 6201 result = f->Call(env->Global(), argc, argv);
6203 6202
6204 // Check that there was only one break event. Matching RegExp should not 6203 // Check that there was only one break event. Matching RegExp should not
6205 // cause Break events. 6204 // cause Break events.
6206 CHECK_EQ(1, break_point_hit_count); 6205 CHECK_EQ(1, break_point_hit_count);
6207 CHECK_EQ("f", last_function_hit); 6206 CHECK_EQ(0, strcmp("f", last_function_hit));
6208 } 6207 }
6209 #endif // V8_INTERPRETED_REGEXP 6208 #endif // V8_INTERPRETED_REGEXP
6210 6209
6211 6210
6212 // Common part of EvalContextData and NestedBreakEventContextData tests. 6211 // Common part of EvalContextData and NestedBreakEventContextData tests.
6213 static void ExecuteScriptForContextCheck( 6212 static void ExecuteScriptForContextCheck(
6214 v8::Debug::MessageHandler message_handler) { 6213 v8::Debug::MessageHandler message_handler) {
6215 // Create a context. 6214 // Create a context.
6216 v8::Handle<v8::Context> context_1; 6215 v8::Handle<v8::Context> context_1;
6217 v8::Handle<v8::ObjectTemplate> global_template = 6216 v8::Handle<v8::ObjectTemplate> global_template =
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
6923 v8::Local<v8::Context> context2 = v8::Debug::GetDebugContext(); 6922 v8::Local<v8::Context> context2 = v8::Debug::GetDebugContext();
6924 CHECK(v8::Utils::OpenHandle(*context1).is_identical_to( 6923 CHECK(v8::Utils::OpenHandle(*context1).is_identical_to(
6925 v8::Utils::OpenHandle(*context2))); 6924 v8::Utils::OpenHandle(*context2)));
6926 v8::Debug::SetDebugEventListener(NULL); 6925 v8::Debug::SetDebugEventListener(NULL);
6927 } 6926 }
6928 6927
6929 6928
6930 static v8::Handle<v8::Value> expected_callback_data; 6929 static v8::Handle<v8::Value> expected_callback_data;
6931 static void DebugEventContextChecker(const v8::Debug::EventDetails& details) { 6930 static void DebugEventContextChecker(const v8::Debug::EventDetails& details) {
6932 CHECK(details.GetEventContext() == expected_context); 6931 CHECK(details.GetEventContext() == expected_context);
6933 CHECK_EQ(expected_callback_data, details.GetCallbackData()); 6932 CHECK(expected_callback_data->Equals(details.GetCallbackData()));
6934 } 6933 }
6935 6934
6936 6935
6937 // Check that event details contain context where debug event occured. 6936 // Check that event details contain context where debug event occured.
6938 TEST(DebugEventContext) { 6937 TEST(DebugEventContext) {
6939 v8::Isolate* isolate = CcTest::isolate(); 6938 v8::Isolate* isolate = CcTest::isolate();
6940 v8::HandleScope scope(isolate); 6939 v8::HandleScope scope(isolate);
6941 expected_context = v8::Context::New(isolate); 6940 expected_context = v8::Context::New(isolate);
6942 expected_callback_data = v8::Int32::New(isolate, 2010); 6941 expected_callback_data = v8::Int32::New(isolate, 2010);
6943 v8::Debug::SetDebugEventListener(DebugEventContextChecker, 6942 v8::Debug::SetDebugEventListener(DebugEventContextChecker,
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
7435 " var a; \n" 7434 " var a; \n"
7436 "} \n" 7435 "} \n"
7437 "function bar() { \n" 7436 "function bar() { \n"
7438 " return \"bar\"; \n" 7437 " return \"bar\"; \n"
7439 "}; \n" 7438 "}; \n"
7440 "a = b = c = 2; \n" 7439 "a = b = c = 2; \n"
7441 "bar(); \n"; 7440 "bar(); \n";
7442 v8::Local<v8::Value> result = ParserCacheCompileRun(source); 7441 v8::Local<v8::Value> result = ParserCacheCompileRun(source);
7443 CHECK(result->IsString()); 7442 CHECK(result->IsString());
7444 v8::String::Utf8Value utf8(result); 7443 v8::String::Utf8Value utf8(result);
7445 CHECK_EQ("bar", *utf8); 7444 CHECK_EQ(0, strcmp("bar", *utf8));
7446 7445
7447 v8::Debug::SetDebugEventListener(NULL); 7446 v8::Debug::SetDebugEventListener(NULL);
7448 CheckDebuggerUnloaded(); 7447 CheckDebuggerUnloaded();
7449 } 7448 }
7450 7449
7451 7450
7452 static void DebugBreakStackTraceListener( 7451 static void DebugBreakStackTraceListener(
7453 const v8::Debug::EventDetails& event_details) { 7452 const v8::Debug::EventDetails& event_details) {
7454 v8::StackTrace::CurrentStackTrace(CcTest::isolate(), 10); 7453 v8::StackTrace::CurrentStackTrace(CcTest::isolate(), 10);
7455 } 7454 }
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
7672 "let y = 2; \n" 7671 "let y = 2; \n"
7673 "debugger; \n" 7672 "debugger; \n"
7674 "x * y", 7673 "x * y",
7675 30); 7674 30);
7676 ExpectInt32( 7675 ExpectInt32(
7677 "x = 1; y = 2; \n" 7676 "x = 1; y = 2; \n"
7678 "debugger;" 7677 "debugger;"
7679 "x * y", 7678 "x * y",
7680 30); 7679 30);
7681 } 7680 }
OLDNEW
« no previous file with comments | « test/cctest/test-cpu-profiler.cc ('k') | test/cctest/test-decls.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698