| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/api.h" | 7 #include "src/api.h" |
| 8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1044 debug_global, is_break_point_triggered_string).ToHandleChecked()); | 1044 debug_global, is_break_point_triggered_string).ToHandleChecked()); |
| 1045 | 1045 |
| 1046 // Get the break id as an object. | 1046 // Get the break id as an object. |
| 1047 Handle<Object> break_id = factory->NewNumberFromInt(Debug::break_id()); | 1047 Handle<Object> break_id = factory->NewNumberFromInt(Debug::break_id()); |
| 1048 | 1048 |
| 1049 // Call HandleBreakPointx. | 1049 // Call HandleBreakPointx. |
| 1050 Handle<Object> argv[] = { break_id, break_point_object }; | 1050 Handle<Object> argv[] = { break_id, break_point_object }; |
| 1051 Handle<Object> result; | 1051 Handle<Object> result; |
| 1052 if (!Execution::TryCall(check_break_point, | 1052 if (!Execution::TryCall(check_break_point, |
| 1053 isolate_->js_builtins_object(), | 1053 isolate_->js_builtins_object(), |
| 1054 ARRAY_SIZE(argv), | 1054 arraysize(argv), |
| 1055 argv).ToHandle(&result)) { | 1055 argv).ToHandle(&result)) { |
| 1056 return false; | 1056 return false; |
| 1057 } | 1057 } |
| 1058 | 1058 |
| 1059 // Return whether the break point is triggered. | 1059 // Return whether the break point is triggered. |
| 1060 return result->IsTrue(); | 1060 return result->IsTrue(); |
| 1061 } | 1061 } |
| 1062 | 1062 |
| 1063 | 1063 |
| 1064 // Check whether the function has debug information. | 1064 // Check whether the function has debug information. |
| (...skipping 1386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2451 return Execution::TryCall(Handle<JSFunction>::cast(constructor), | 2451 return Execution::TryCall(Handle<JSFunction>::cast(constructor), |
| 2452 handle(debug_context()->global_proxy()), | 2452 handle(debug_context()->global_proxy()), |
| 2453 argc, | 2453 argc, |
| 2454 argv); | 2454 argv); |
| 2455 } | 2455 } |
| 2456 | 2456 |
| 2457 | 2457 |
| 2458 MaybeHandle<Object> Debug::MakeExecutionState() { | 2458 MaybeHandle<Object> Debug::MakeExecutionState() { |
| 2459 // Create the execution state object. | 2459 // Create the execution state object. |
| 2460 Handle<Object> argv[] = { isolate_->factory()->NewNumberFromInt(break_id()) }; | 2460 Handle<Object> argv[] = { isolate_->factory()->NewNumberFromInt(break_id()) }; |
| 2461 return MakeJSObject("MakeExecutionState", ARRAY_SIZE(argv), argv); | 2461 return MakeJSObject("MakeExecutionState", arraysize(argv), argv); |
| 2462 } | 2462 } |
| 2463 | 2463 |
| 2464 | 2464 |
| 2465 MaybeHandle<Object> Debug::MakeBreakEvent(Handle<Object> break_points_hit) { | 2465 MaybeHandle<Object> Debug::MakeBreakEvent(Handle<Object> break_points_hit) { |
| 2466 // Create the new break event object. | 2466 // Create the new break event object. |
| 2467 Handle<Object> argv[] = { isolate_->factory()->NewNumberFromInt(break_id()), | 2467 Handle<Object> argv[] = { isolate_->factory()->NewNumberFromInt(break_id()), |
| 2468 break_points_hit }; | 2468 break_points_hit }; |
| 2469 return MakeJSObject("MakeBreakEvent", ARRAY_SIZE(argv), argv); | 2469 return MakeJSObject("MakeBreakEvent", arraysize(argv), argv); |
| 2470 } | 2470 } |
| 2471 | 2471 |
| 2472 | 2472 |
| 2473 MaybeHandle<Object> Debug::MakeExceptionEvent(Handle<Object> exception, | 2473 MaybeHandle<Object> Debug::MakeExceptionEvent(Handle<Object> exception, |
| 2474 bool uncaught, | 2474 bool uncaught, |
| 2475 Handle<Object> promise) { | 2475 Handle<Object> promise) { |
| 2476 // Create the new exception event object. | 2476 // Create the new exception event object. |
| 2477 Handle<Object> argv[] = { isolate_->factory()->NewNumberFromInt(break_id()), | 2477 Handle<Object> argv[] = { isolate_->factory()->NewNumberFromInt(break_id()), |
| 2478 exception, | 2478 exception, |
| 2479 isolate_->factory()->ToBoolean(uncaught), | 2479 isolate_->factory()->ToBoolean(uncaught), |
| 2480 promise }; | 2480 promise }; |
| 2481 return MakeJSObject("MakeExceptionEvent", ARRAY_SIZE(argv), argv); | 2481 return MakeJSObject("MakeExceptionEvent", arraysize(argv), argv); |
| 2482 } | 2482 } |
| 2483 | 2483 |
| 2484 | 2484 |
| 2485 MaybeHandle<Object> Debug::MakeCompileEvent(Handle<Script> script, | 2485 MaybeHandle<Object> Debug::MakeCompileEvent(Handle<Script> script, |
| 2486 v8::DebugEvent type) { | 2486 v8::DebugEvent type) { |
| 2487 // Create the compile event object. | 2487 // Create the compile event object. |
| 2488 Handle<Object> script_wrapper = Script::GetWrapper(script); | 2488 Handle<Object> script_wrapper = Script::GetWrapper(script); |
| 2489 Handle<Object> argv[] = { script_wrapper, | 2489 Handle<Object> argv[] = { script_wrapper, |
| 2490 isolate_->factory()->NewNumberFromInt(type) }; | 2490 isolate_->factory()->NewNumberFromInt(type) }; |
| 2491 return MakeJSObject("MakeCompileEvent", ARRAY_SIZE(argv), argv); | 2491 return MakeJSObject("MakeCompileEvent", arraysize(argv), argv); |
| 2492 } | 2492 } |
| 2493 | 2493 |
| 2494 | 2494 |
| 2495 MaybeHandle<Object> Debug::MakePromiseEvent(Handle<JSObject> event_data) { | 2495 MaybeHandle<Object> Debug::MakePromiseEvent(Handle<JSObject> event_data) { |
| 2496 // Create the promise event object. | 2496 // Create the promise event object. |
| 2497 Handle<Object> argv[] = { event_data }; | 2497 Handle<Object> argv[] = { event_data }; |
| 2498 return MakeJSObject("MakePromiseEvent", ARRAY_SIZE(argv), argv); | 2498 return MakeJSObject("MakePromiseEvent", arraysize(argv), argv); |
| 2499 } | 2499 } |
| 2500 | 2500 |
| 2501 | 2501 |
| 2502 MaybeHandle<Object> Debug::MakeAsyncTaskEvent(Handle<JSObject> task_event) { | 2502 MaybeHandle<Object> Debug::MakeAsyncTaskEvent(Handle<JSObject> task_event) { |
| 2503 // Create the async task event object. | 2503 // Create the async task event object. |
| 2504 Handle<Object> argv[] = { task_event }; | 2504 Handle<Object> argv[] = { task_event }; |
| 2505 return MakeJSObject("MakeAsyncTaskEvent", ARRAY_SIZE(argv), argv); | 2505 return MakeJSObject("MakeAsyncTaskEvent", arraysize(argv), argv); |
| 2506 } | 2506 } |
| 2507 | 2507 |
| 2508 | 2508 |
| 2509 void Debug::OnThrow(Handle<Object> exception, bool uncaught) { | 2509 void Debug::OnThrow(Handle<Object> exception, bool uncaught) { |
| 2510 if (in_debug_scope() || ignore_events()) return; | 2510 if (in_debug_scope() || ignore_events()) return; |
| 2511 HandleScope scope(isolate_); | 2511 HandleScope scope(isolate_); |
| 2512 OnException(exception, uncaught, isolate_->GetPromiseOnStackOnThrow()); | 2512 OnException(exception, uncaught, isolate_->GetPromiseOnStackOnThrow()); |
| 2513 } | 2513 } |
| 2514 | 2514 |
| 2515 | 2515 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2641 DCHECK(update_script_break_points->IsJSFunction()); | 2641 DCHECK(update_script_break_points->IsJSFunction()); |
| 2642 | 2642 |
| 2643 // Wrap the script object in a proper JS object before passing it | 2643 // Wrap the script object in a proper JS object before passing it |
| 2644 // to JavaScript. | 2644 // to JavaScript. |
| 2645 Handle<Object> wrapper = Script::GetWrapper(script); | 2645 Handle<Object> wrapper = Script::GetWrapper(script); |
| 2646 | 2646 |
| 2647 // Call UpdateScriptBreakPoints expect no exceptions. | 2647 // Call UpdateScriptBreakPoints expect no exceptions. |
| 2648 Handle<Object> argv[] = { wrapper }; | 2648 Handle<Object> argv[] = { wrapper }; |
| 2649 if (Execution::TryCall(Handle<JSFunction>::cast(update_script_break_points), | 2649 if (Execution::TryCall(Handle<JSFunction>::cast(update_script_break_points), |
| 2650 isolate_->js_builtins_object(), | 2650 isolate_->js_builtins_object(), |
| 2651 ARRAY_SIZE(argv), | 2651 arraysize(argv), |
| 2652 argv).is_null()) { | 2652 argv).is_null()) { |
| 2653 return; | 2653 return; |
| 2654 } | 2654 } |
| 2655 | 2655 |
| 2656 // Create the compile state object. | 2656 // Create the compile state object. |
| 2657 Handle<Object> event_data; | 2657 Handle<Object> event_data; |
| 2658 // Bail out and don't call debugger if exception. | 2658 // Bail out and don't call debugger if exception. |
| 2659 if (!MakeCompileEvent(script, v8::AfterCompile).ToHandle(&event_data)) return; | 2659 if (!MakeCompileEvent(script, v8::AfterCompile).ToHandle(&event_data)) return; |
| 2660 | 2660 |
| 2661 // Process debug event. | 2661 // Process debug event. |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2758 DCHECK(!isolate_->has_scheduled_exception()); | 2758 DCHECK(!isolate_->has_scheduled_exception()); |
| 2759 } else { | 2759 } else { |
| 2760 // Invoke the JavaScript debug event listener. | 2760 // Invoke the JavaScript debug event listener. |
| 2761 DCHECK(event_listener_->IsJSFunction()); | 2761 DCHECK(event_listener_->IsJSFunction()); |
| 2762 Handle<Object> argv[] = { Handle<Object>(Smi::FromInt(event), isolate_), | 2762 Handle<Object> argv[] = { Handle<Object>(Smi::FromInt(event), isolate_), |
| 2763 exec_state, | 2763 exec_state, |
| 2764 event_data, | 2764 event_data, |
| 2765 event_listener_data_ }; | 2765 event_listener_data_ }; |
| 2766 Handle<JSReceiver> global(isolate_->global_proxy()); | 2766 Handle<JSReceiver> global(isolate_->global_proxy()); |
| 2767 Execution::TryCall(Handle<JSFunction>::cast(event_listener_), | 2767 Execution::TryCall(Handle<JSFunction>::cast(event_listener_), |
| 2768 global, ARRAY_SIZE(argv), argv); | 2768 global, arraysize(argv), argv); |
| 2769 } | 2769 } |
| 2770 } | 2770 } |
| 2771 | 2771 |
| 2772 | 2772 |
| 2773 Handle<Context> Debug::GetDebugContext() { | 2773 Handle<Context> Debug::GetDebugContext() { |
| 2774 DebugScope debug_scope(this); | 2774 DebugScope debug_scope(this); |
| 2775 // The global handle may be destroyed soon after. Return it reboxed. | 2775 // The global handle may be destroyed soon after. Return it reboxed. |
| 2776 return handle(*debug_context(), isolate_); | 2776 return handle(*debug_context(), isolate_); |
| 2777 } | 2777 } |
| 2778 | 2778 |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2997 Handle<Object> exec_state; | 2997 Handle<Object> exec_state; |
| 2998 if (!MakeExecutionState().ToHandle(&exec_state)) { | 2998 if (!MakeExecutionState().ToHandle(&exec_state)) { |
| 2999 return isolate_->factory()->undefined_value(); | 2999 return isolate_->factory()->undefined_value(); |
| 3000 } | 3000 } |
| 3001 | 3001 |
| 3002 Handle<Object> argv[] = { exec_state, data }; | 3002 Handle<Object> argv[] = { exec_state, data }; |
| 3003 return Execution::Call( | 3003 return Execution::Call( |
| 3004 isolate_, | 3004 isolate_, |
| 3005 fun, | 3005 fun, |
| 3006 Handle<Object>(debug_context()->global_proxy(), isolate_), | 3006 Handle<Object>(debug_context()->global_proxy(), isolate_), |
| 3007 ARRAY_SIZE(argv), | 3007 arraysize(argv), |
| 3008 argv); | 3008 argv); |
| 3009 } | 3009 } |
| 3010 | 3010 |
| 3011 | 3011 |
| 3012 void Debug::HandleDebugBreak() { | 3012 void Debug::HandleDebugBreak() { |
| 3013 // Ignore debug break during bootstrapping. | 3013 // Ignore debug break during bootstrapping. |
| 3014 if (isolate_->bootstrapper()->IsActive()) return; | 3014 if (isolate_->bootstrapper()->IsActive()) return; |
| 3015 // Just continue if breaks are disabled. | 3015 // Just continue if breaks are disabled. |
| 3016 if (break_disabled_) return; | 3016 if (break_disabled_) return; |
| 3017 // Ignore debug break if debugger is not active. | 3017 // Ignore debug break if debugger is not active. |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3358 logger_->DebugEvent("Put", message.text()); | 3358 logger_->DebugEvent("Put", message.text()); |
| 3359 } | 3359 } |
| 3360 | 3360 |
| 3361 | 3361 |
| 3362 void LockingCommandMessageQueue::Clear() { | 3362 void LockingCommandMessageQueue::Clear() { |
| 3363 base::LockGuard<base::Mutex> lock_guard(&mutex_); | 3363 base::LockGuard<base::Mutex> lock_guard(&mutex_); |
| 3364 queue_.Clear(); | 3364 queue_.Clear(); |
| 3365 } | 3365 } |
| 3366 | 3366 |
| 3367 } } // namespace v8::internal | 3367 } } // namespace v8::internal |
| OLD | NEW |