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: src/d8.cc

Issue 77035: Add ENABLE_DEBUGGER_SUPPORT macro.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « src/d8.h ('k') | src/debug.h » ('j') | src/serialize.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 Context::Scope context_scope(utility_context_); 239 Context::Scope context_scope(utility_context_);
240 Handle<Object> global = utility_context_->Global(); 240 Handle<Object> global = utility_context_->Global();
241 Handle<Value> fun = global->Get(String::New("GetCompletions")); 241 Handle<Value> fun = global->Get(String::New("GetCompletions"));
242 static const int kArgc = 3; 242 static const int kArgc = 3;
243 Handle<Value> argv[kArgc] = { evaluation_context_->Global(), text, full }; 243 Handle<Value> argv[kArgc] = { evaluation_context_->Global(), text, full };
244 Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv); 244 Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
245 return handle_scope.Close(Handle<Array>::Cast(val)); 245 return handle_scope.Close(Handle<Array>::Cast(val));
246 } 246 }
247 247
248 248
249 #ifdef ENABLE_DEBUGGER_SUPPORT
249 Handle<Object> Shell::DebugMessageDetails(Handle<String> message) { 250 Handle<Object> Shell::DebugMessageDetails(Handle<String> message) {
250 Context::Scope context_scope(utility_context_); 251 Context::Scope context_scope(utility_context_);
251 Handle<Object> global = utility_context_->Global(); 252 Handle<Object> global = utility_context_->Global();
252 Handle<Value> fun = global->Get(String::New("DebugMessageDetails")); 253 Handle<Value> fun = global->Get(String::New("DebugMessageDetails"));
253 static const int kArgc = 1; 254 static const int kArgc = 1;
254 Handle<Value> argv[kArgc] = { message }; 255 Handle<Value> argv[kArgc] = { message };
255 Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv); 256 Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
256 return Handle<Object>::Cast(val); 257 return Handle<Object>::Cast(val);
257 } 258 }
258 259
259 260
260 Handle<Value> Shell::DebugCommandToJSONRequest(Handle<String> command) { 261 Handle<Value> Shell::DebugCommandToJSONRequest(Handle<String> command) {
261 Context::Scope context_scope(utility_context_); 262 Context::Scope context_scope(utility_context_);
262 Handle<Object> global = utility_context_->Global(); 263 Handle<Object> global = utility_context_->Global();
263 Handle<Value> fun = global->Get(String::New("DebugCommandToJSONRequest")); 264 Handle<Value> fun = global->Get(String::New("DebugCommandToJSONRequest"));
264 static const int kArgc = 1; 265 static const int kArgc = 1;
265 Handle<Value> argv[kArgc] = { command }; 266 Handle<Value> argv[kArgc] = { command };
266 Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv); 267 Handle<Value> val = Handle<Function>::Cast(fun)->Call(global, kArgc, argv);
267 return val; 268 return val;
268 } 269 }
270 #endif
269 271
270 272
271 int32_t* Counter::Bind(const char* name, bool is_histogram) { 273 int32_t* Counter::Bind(const char* name, bool is_histogram) {
272 int i; 274 int i;
273 for (i = 0; i < kMaxNameSize - 1 && name[i]; i++) 275 for (i = 0; i < kMaxNameSize - 1 && name[i]; i++)
274 name_[i] = static_cast<char>(name[i]); 276 name_[i] = static_cast<char>(name[i]);
275 name_[i] = '\0'; 277 name_[i] = '\0';
276 is_histogram_ = is_histogram; 278 is_histogram_ = is_histogram;
277 return ptr(); 279 return ptr();
278 } 280 }
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 for (int j = 0; j < js_args.argc(); j++) { 401 for (int j = 0; j < js_args.argc(); j++) {
400 i::Handle<i::String> arg = 402 i::Handle<i::String> arg =
401 i::Factory::NewStringFromUtf8(i::CStrVector(js_args[j])); 403 i::Factory::NewStringFromUtf8(i::CStrVector(js_args[j]));
402 arguments_array->set(j, *arg); 404 arguments_array->set(j, *arg);
403 } 405 }
404 i::Handle<i::JSArray> arguments_jsarray = 406 i::Handle<i::JSArray> arguments_jsarray =
405 i::Factory::NewJSArrayWithElements(arguments_array); 407 i::Factory::NewJSArrayWithElements(arguments_array);
406 global_template->Set(String::New("arguments"), 408 global_template->Set(String::New("arguments"),
407 Utils::ToLocal(arguments_jsarray)); 409 Utils::ToLocal(arguments_jsarray));
408 410
411 #ifdef ENABLE_DEBUGGER_SUPPORT
409 // Install the debugger object in the utility scope 412 // Install the debugger object in the utility scope
410 i::Debug::Load(); 413 i::Debug::Load();
411 i::JSObject* debug = i::Debug::debug_context()->global(); 414 i::JSObject* debug = i::Debug::debug_context()->global();
412 utility_context_->Global()->Set(String::New("$debug"), 415 utility_context_->Global()->Set(String::New("$debug"),
413 Utils::ToLocal(&debug)); 416 Utils::ToLocal(&debug));
417 #endif
414 418
415 // Run the d8 shell utility script in the utility context 419 // Run the d8 shell utility script in the utility context
416 int source_index = i::NativesCollection<i::D8>::GetIndex("d8"); 420 int source_index = i::NativesCollection<i::D8>::GetIndex("d8");
417 i::Vector<const char> shell_source 421 i::Vector<const char> shell_source
418 = i::NativesCollection<i::D8>::GetScriptSource(source_index); 422 = i::NativesCollection<i::D8>::GetScriptSource(source_index);
419 i::Vector<const char> shell_source_name 423 i::Vector<const char> shell_source_name
420 = i::NativesCollection<i::D8>::GetScriptName(source_index); 424 = i::NativesCollection<i::D8>::GetScriptName(source_index);
421 Handle<String> source = String::New(shell_source.start(), 425 Handle<String> source = String::New(shell_source.start(),
422 shell_source.length()); 426 shell_source.length());
423 Handle<String> name = String::New(shell_source_name.start(), 427 Handle<String> name = String::New(shell_source_name.start(),
424 shell_source_name.length()); 428 shell_source_name.length());
425 Handle<Script> script = Script::Compile(source, name); 429 Handle<Script> script = Script::Compile(source, name);
426 script->Run(); 430 script->Run();
427 431
428 // Mark the d8 shell script as native to avoid it showing up as normal source 432 // Mark the d8 shell script as native to avoid it showing up as normal source
429 // in the debugger. 433 // in the debugger.
430 i::Handle<i::JSFunction> script_fun = Utils::OpenHandle(*script); 434 i::Handle<i::JSFunction> script_fun = Utils::OpenHandle(*script);
431 i::Handle<i::Script> script_object = 435 i::Handle<i::Script> script_object =
432 i::Handle<i::Script>(i::Script::cast(script_fun->shared()->script())); 436 i::Handle<i::Script>(i::Script::cast(script_fun->shared()->script()));
433 script_object->set_type(i::Smi::FromInt(i::SCRIPT_TYPE_NATIVE)); 437 script_object->set_type(i::Smi::FromInt(i::SCRIPT_TYPE_NATIVE));
434 438
435 // Create the evaluation context 439 // Create the evaluation context
436 evaluation_context_ = Context::New(NULL, global_template); 440 evaluation_context_ = Context::New(NULL, global_template);
437 evaluation_context_->SetSecurityToken(Undefined()); 441 evaluation_context_->SetSecurityToken(Undefined());
438 442
443 #ifdef ENABLE_DEBUGGER_SUPPORT
439 // Set the security token of the debug context to allow access. 444 // Set the security token of the debug context to allow access.
440 i::Debug::debug_context()->set_security_token(i::Heap::undefined_value()); 445 i::Debug::debug_context()->set_security_token(i::Heap::undefined_value());
446 #endif
441 } 447 }
442 448
443 449
444 void Shell::OnExit() { 450 void Shell::OnExit() {
445 if (i::FLAG_dump_counters) { 451 if (i::FLAG_dump_counters) {
446 ::printf("+----------------------------------------+-------------+\n"); 452 ::printf("+----------------------------------------+-------------+\n");
447 ::printf("| Name | Value |\n"); 453 ::printf("| Name | Value |\n");
448 ::printf("+----------------------------------------+-------------+\n"); 454 ::printf("+----------------------------------------+-------------+\n");
449 for (CounterMap::Iterator i(counter_map_); i.More(); i.Next()) { 455 for (CounterMap::Iterator i(counter_map_); i.More(); i.Next()) {
450 Counter* counter = i.CurrentValue(); 456 Counter* counter = i.CurrentValue();
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 return 1; 689 return 1;
684 } 690 }
685 } 691 }
686 } 692 }
687 693
688 // Start preemption if threads have been created and preemption is enabled. 694 // Start preemption if threads have been created and preemption is enabled.
689 if (threads.length() > 0 && use_preemption) { 695 if (threads.length() > 0 && use_preemption) {
690 Locker::StartPreemption(preemption_interval); 696 Locker::StartPreemption(preemption_interval);
691 } 697 }
692 698
699 #ifdef ENABLE_DEBUGGER_SUPPORT
693 // Run the remote debugger if requested. 700 // Run the remote debugger if requested.
694 if (i::FLAG_remote_debugger) { 701 if (i::FLAG_remote_debugger) {
695 RunRemoteDebugger(i::FLAG_debugger_port); 702 RunRemoteDebugger(i::FLAG_debugger_port);
696 return 0; 703 return 0;
697 } 704 }
698 705
699 // Start the debugger agent if requested. 706 // Start the debugger agent if requested.
700 if (i::FLAG_debugger_agent) { 707 if (i::FLAG_debugger_agent) {
701 v8::Debug::EnableAgent("d8 shell", i::FLAG_debugger_port); 708 v8::Debug::EnableAgent("d8 shell", i::FLAG_debugger_port);
702 } 709 }
703 710
704 // Start the in-process debugger if requested. 711 // Start the in-process debugger if requested.
705 if (i::FLAG_debugger && !i::FLAG_debugger_agent) { 712 if (i::FLAG_debugger && !i::FLAG_debugger_agent) {
706 v8::Debug::SetDebugEventListener(HandleDebugEvent); 713 v8::Debug::SetDebugEventListener(HandleDebugEvent);
707 } 714 }
715 #endif
708 } 716 }
709 if (run_shell) 717 if (run_shell)
710 RunShell(); 718 RunShell();
711 for (int i = 0; i < threads.length(); i++) { 719 for (int i = 0; i < threads.length(); i++) {
712 i::Thread *thread = threads[i]; 720 i::Thread *thread = threads[i];
713 thread->Join(); 721 thread->Join();
714 delete thread; 722 delete thread;
715 } 723 }
716 OnExit(); 724 OnExit();
717 return 0; 725 return 0;
718 } 726 }
719 727
720 728
721 } // namespace v8 729 } // namespace v8
722 730
723 731
724 int main(int argc, char* argv[]) { 732 int main(int argc, char* argv[]) {
725 return v8::Shell::Main(argc, argv); 733 return v8::Shell::Main(argc, argv);
726 } 734 }
OLDNEW
« no previous file with comments | « src/d8.h ('k') | src/debug.h » ('j') | src/serialize.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698