OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 static void StopAgent(); | 622 static void StopAgent(); |
623 | 623 |
624 // Unload the debugger if possible. Only called when no debugger is currently | 624 // Unload the debugger if possible. Only called when no debugger is currently |
625 // active. | 625 // active. |
626 static void UnloadDebugger(); | 626 static void UnloadDebugger(); |
627 | 627 |
628 inline static bool EventActive(v8::DebugEvent event) { | 628 inline static bool EventActive(v8::DebugEvent event) { |
629 ScopedLock with(debugger_access_); | 629 ScopedLock with(debugger_access_); |
630 | 630 |
631 // Check whether the message handler was been cleared. | 631 // Check whether the message handler was been cleared. |
632 if (message_handler_cleared_) { | 632 if (debugger_unload_pending_) { |
633 UnloadDebugger(); | 633 UnloadDebugger(); |
634 } | 634 } |
635 | 635 |
636 // Currently argument event is not used. | 636 // Currently argument event is not used. |
637 return !compiling_natives_ && Debugger::IsDebuggerActive(); | 637 return !compiling_natives_ && Debugger::IsDebuggerActive(); |
638 } | 638 } |
639 | 639 |
640 static void set_compiling_natives(bool compiling_natives) { | 640 static void set_compiling_natives(bool compiling_natives) { |
641 Debugger::compiling_natives_ = compiling_natives; | 641 Debugger::compiling_natives_ = compiling_natives; |
642 } | 642 } |
643 static bool compiling_natives() { return Debugger::compiling_natives_; } | 643 static bool compiling_natives() { return Debugger::compiling_natives_; } |
644 static void set_loading_debugger(bool v) { is_loading_debugger_ = v; } | 644 static void set_loading_debugger(bool v) { is_loading_debugger_ = v; } |
645 static bool is_loading_debugger() { return Debugger::is_loading_debugger_; } | 645 static bool is_loading_debugger() { return Debugger::is_loading_debugger_; } |
646 | 646 |
647 private: | 647 private: |
648 static bool IsDebuggerActive(); | 648 static bool IsDebuggerActive(); |
| 649 static void ListenersChanged(); |
649 | 650 |
650 static Mutex* debugger_access_; // Mutex guarding debugger variables. | 651 static Mutex* debugger_access_; // Mutex guarding debugger variables. |
651 static Handle<Object> event_listener_; // Global handle to listener. | 652 static Handle<Object> event_listener_; // Global handle to listener. |
652 static Handle<Object> event_listener_data_; | 653 static Handle<Object> event_listener_data_; |
653 static bool compiling_natives_; // Are we compiling natives? | 654 static bool compiling_natives_; // Are we compiling natives? |
654 static bool is_loading_debugger_; // Are we loading the debugger? | 655 static bool is_loading_debugger_; // Are we loading the debugger? |
655 static bool never_unload_debugger_; // Can we unload the debugger? | 656 static bool never_unload_debugger_; // Can we unload the debugger? |
656 static v8::Debug::MessageHandler2 message_handler_; | 657 static v8::Debug::MessageHandler2 message_handler_; |
657 static bool message_handler_cleared_; // Was message handler cleared? | 658 static bool debugger_unload_pending_; // Was message handler cleared? |
658 static v8::Debug::HostDispatchHandler host_dispatch_handler_; | 659 static v8::Debug::HostDispatchHandler host_dispatch_handler_; |
659 static int host_dispatch_micros_; | 660 static int host_dispatch_micros_; |
660 | 661 |
661 static DebuggerAgent* agent_; | 662 static DebuggerAgent* agent_; |
662 | 663 |
663 static const int kQueueInitialSize = 4; | 664 static const int kQueueInitialSize = 4; |
664 static LockingCommandMessageQueue command_queue_; | 665 static LockingCommandMessageQueue command_queue_; |
665 static Semaphore* command_received_; // Signaled for each command received. | 666 static Semaphore* command_received_; // Signaled for each command received. |
666 | 667 |
667 friend class EnterDebugger; | 668 friend class EnterDebugger; |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 Debug::AddressId id_; | 818 Debug::AddressId id_; |
818 int reg_; | 819 int reg_; |
819 }; | 820 }; |
820 | 821 |
821 | 822 |
822 } } // namespace v8::internal | 823 } } // namespace v8::internal |
823 | 824 |
824 #endif // ENABLE_DEBUGGER_SUPPORT | 825 #endif // ENABLE_DEBUGGER_SUPPORT |
825 | 826 |
826 #endif // V8_DEBUG_H_ | 827 #endif // V8_DEBUG_H_ |
OLD | NEW |