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

Side by Side Diff: src/debug.cc

Issue 21095008: Revert the latest set of platform changes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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/debug.h ('k') | src/debug-agent.h » ('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 2588 matching lines...) Expand 10 before | Expand all | Expand 10 after
2599 event_listener_(Handle<Object>()), 2599 event_listener_(Handle<Object>()),
2600 event_listener_data_(Handle<Object>()), 2600 event_listener_data_(Handle<Object>()),
2601 compiling_natives_(false), 2601 compiling_natives_(false),
2602 is_loading_debugger_(false), 2602 is_loading_debugger_(false),
2603 live_edit_enabled_(true), 2603 live_edit_enabled_(true),
2604 never_unload_debugger_(false), 2604 never_unload_debugger_(false),
2605 force_debugger_active_(false), 2605 force_debugger_active_(false),
2606 message_handler_(NULL), 2606 message_handler_(NULL),
2607 debugger_unload_pending_(false), 2607 debugger_unload_pending_(false),
2608 host_dispatch_handler_(NULL), 2608 host_dispatch_handler_(NULL),
2609 dispatch_handler_access_(OS::CreateMutex()),
2609 debug_message_dispatch_handler_(NULL), 2610 debug_message_dispatch_handler_(NULL),
2610 message_dispatch_helper_thread_(NULL), 2611 message_dispatch_helper_thread_(NULL),
2611 host_dispatch_micros_(100 * 1000), 2612 host_dispatch_micros_(100 * 1000),
2612 agent_(NULL), 2613 agent_(NULL),
2613 command_queue_(isolate->logger(), kQueueInitialSize), 2614 command_queue_(isolate->logger(), kQueueInitialSize),
2614 command_received_(OS::CreateSemaphore(0)), 2615 command_received_(OS::CreateSemaphore(0)),
2615 event_command_queue_(isolate->logger(), kQueueInitialSize), 2616 event_command_queue_(isolate->logger(), kQueueInitialSize),
2616 isolate_(isolate) { 2617 isolate_(isolate) {
2617 } 2618 }
2618 2619
2619 2620
2620 Debugger::~Debugger() { 2621 Debugger::~Debugger() {
2622 delete dispatch_handler_access_;
2623 dispatch_handler_access_ = 0;
2621 delete command_received_; 2624 delete command_received_;
2622 command_received_ = 0; 2625 command_received_ = 0;
2623 } 2626 }
2624 2627
2625 2628
2626 Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name, 2629 Handle<Object> Debugger::MakeJSObject(Vector<const char> constructor_name,
2627 int argc, 2630 int argc,
2628 Handle<Object> argv[], 2631 Handle<Object> argv[],
2629 bool* caught_exception) { 2632 bool* caught_exception) {
2630 ASSERT(isolate_->context() == *isolate_->debug()->debug_context()); 2633 ASSERT(isolate_->context() == *isolate_->debug()->debug_context());
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after
3293 3296
3294 void Debugger::SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler, 3297 void Debugger::SetHostDispatchHandler(v8::Debug::HostDispatchHandler handler,
3295 int period) { 3298 int period) {
3296 host_dispatch_handler_ = handler; 3299 host_dispatch_handler_ = handler;
3297 host_dispatch_micros_ = period * 1000; 3300 host_dispatch_micros_ = period * 1000;
3298 } 3301 }
3299 3302
3300 3303
3301 void Debugger::SetDebugMessageDispatchHandler( 3304 void Debugger::SetDebugMessageDispatchHandler(
3302 v8::Debug::DebugMessageDispatchHandler handler, bool provide_locker) { 3305 v8::Debug::DebugMessageDispatchHandler handler, bool provide_locker) {
3303 ScopedLock with(&dispatch_handler_access_); 3306 ScopedLock with(dispatch_handler_access_);
3304 debug_message_dispatch_handler_ = handler; 3307 debug_message_dispatch_handler_ = handler;
3305 3308
3306 if (provide_locker && message_dispatch_helper_thread_ == NULL) { 3309 if (provide_locker && message_dispatch_helper_thread_ == NULL) {
3307 message_dispatch_helper_thread_ = new MessageDispatchHelperThread(isolate_); 3310 message_dispatch_helper_thread_ = new MessageDispatchHelperThread(isolate_);
3308 message_dispatch_helper_thread_->Start(); 3311 message_dispatch_helper_thread_->Start();
3309 } 3312 }
3310 } 3313 }
3311 3314
3312 3315
3313 // Calls the registered debug message handler. This callback is part of the 3316 // Calls the registered debug message handler. This callback is part of the
(...skipping 22 matching lines...) Expand all
3336 command_queue_.Put(message); 3339 command_queue_.Put(message);
3337 command_received_->Signal(); 3340 command_received_->Signal();
3338 3341
3339 // Set the debug command break flag to have the command processed. 3342 // Set the debug command break flag to have the command processed.
3340 if (!isolate_->debug()->InDebugger()) { 3343 if (!isolate_->debug()->InDebugger()) {
3341 isolate_->stack_guard()->DebugCommand(); 3344 isolate_->stack_guard()->DebugCommand();
3342 } 3345 }
3343 3346
3344 MessageDispatchHelperThread* dispatch_thread; 3347 MessageDispatchHelperThread* dispatch_thread;
3345 { 3348 {
3346 ScopedLock with(&dispatch_handler_access_); 3349 ScopedLock with(dispatch_handler_access_);
3347 dispatch_thread = message_dispatch_helper_thread_; 3350 dispatch_thread = message_dispatch_helper_thread_;
3348 } 3351 }
3349 3352
3350 if (dispatch_thread == NULL) { 3353 if (dispatch_thread == NULL) {
3351 CallMessageDispatchHandler(); 3354 CallMessageDispatchHandler();
3352 } else { 3355 } else {
3353 dispatch_thread->Schedule(); 3356 dispatch_thread->Schedule();
3354 } 3357 }
3355 } 3358 }
3356 3359
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
3456 void Debugger::WaitForAgent() { 3459 void Debugger::WaitForAgent() {
3457 ASSERT(Isolate::Current() == isolate_); 3460 ASSERT(Isolate::Current() == isolate_);
3458 if (agent_ != NULL) 3461 if (agent_ != NULL)
3459 agent_->WaitUntilListening(); 3462 agent_->WaitUntilListening();
3460 } 3463 }
3461 3464
3462 3465
3463 void Debugger::CallMessageDispatchHandler() { 3466 void Debugger::CallMessageDispatchHandler() {
3464 v8::Debug::DebugMessageDispatchHandler handler; 3467 v8::Debug::DebugMessageDispatchHandler handler;
3465 { 3468 {
3466 ScopedLock with(&dispatch_handler_access_); 3469 ScopedLock with(dispatch_handler_access_);
3467 handler = Debugger::debug_message_dispatch_handler_; 3470 handler = Debugger::debug_message_dispatch_handler_;
3468 } 3471 }
3469 if (handler != NULL) { 3472 if (handler != NULL) {
3470 handler(); 3473 handler();
3471 } 3474 }
3472 } 3475 }
3473 3476
3474 3477
3475 EnterDebugger::EnterDebugger() 3478 EnterDebugger::EnterDebugger()
3476 : isolate_(Isolate::Current()), 3479 : isolate_(Isolate::Current()),
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
3777 CommandMessage* array_to_free = messages_; 3780 CommandMessage* array_to_free = messages_;
3778 *this = new_queue; 3781 *this = new_queue;
3779 new_queue.messages_ = array_to_free; 3782 new_queue.messages_ = array_to_free;
3780 // Make the new_queue empty so that it doesn't call Dispose on any messages. 3783 // Make the new_queue empty so that it doesn't call Dispose on any messages.
3781 new_queue.start_ = new_queue.end_; 3784 new_queue.start_ = new_queue.end_;
3782 // Automatic destructor called on new_queue, freeing array_to_free. 3785 // Automatic destructor called on new_queue, freeing array_to_free.
3783 } 3786 }
3784 3787
3785 3788
3786 LockingCommandMessageQueue::LockingCommandMessageQueue(Logger* logger, int size) 3789 LockingCommandMessageQueue::LockingCommandMessageQueue(Logger* logger, int size)
3787 : logger_(logger), queue_(size) {} 3790 : logger_(logger), queue_(size) {
3791 lock_ = OS::CreateMutex();
3792 }
3788 3793
3789 3794
3790 LockingCommandMessageQueue::~LockingCommandMessageQueue() {} 3795 LockingCommandMessageQueue::~LockingCommandMessageQueue() {
3796 delete lock_;
3797 }
3791 3798
3792 3799
3793 bool LockingCommandMessageQueue::IsEmpty() { 3800 bool LockingCommandMessageQueue::IsEmpty() const {
3794 ScopedLock sl(&lock_); 3801 ScopedLock sl(lock_);
3795 return queue_.IsEmpty(); 3802 return queue_.IsEmpty();
3796 } 3803 }
3797 3804
3798 3805
3799 CommandMessage LockingCommandMessageQueue::Get() { 3806 CommandMessage LockingCommandMessageQueue::Get() {
3800 ScopedLock sl(&lock_); 3807 ScopedLock sl(lock_);
3801 CommandMessage result = queue_.Get(); 3808 CommandMessage result = queue_.Get();
3802 logger_->DebugEvent("Get", result.text()); 3809 logger_->DebugEvent("Get", result.text());
3803 return result; 3810 return result;
3804 } 3811 }
3805 3812
3806 3813
3807 void LockingCommandMessageQueue::Put(const CommandMessage& message) { 3814 void LockingCommandMessageQueue::Put(const CommandMessage& message) {
3808 ScopedLock sl(&lock_); 3815 ScopedLock sl(lock_);
3809 queue_.Put(message); 3816 queue_.Put(message);
3810 logger_->DebugEvent("Put", message.text()); 3817 logger_->DebugEvent("Put", message.text());
3811 } 3818 }
3812 3819
3813 3820
3814 void LockingCommandMessageQueue::Clear() { 3821 void LockingCommandMessageQueue::Clear() {
3815 ScopedLock sl(&lock_); 3822 ScopedLock sl(lock_);
3816 queue_.Clear(); 3823 queue_.Clear();
3817 } 3824 }
3818 3825
3819 3826
3820 MessageDispatchHelperThread::MessageDispatchHelperThread(Isolate* isolate) 3827 MessageDispatchHelperThread::MessageDispatchHelperThread(Isolate* isolate)
3821 : Thread("v8:MsgDispHelpr"), 3828 : Thread("v8:MsgDispHelpr"),
3822 isolate_(isolate), sem_(OS::CreateSemaphore(0)), 3829 isolate_(isolate), sem_(OS::CreateSemaphore(0)),
3823 already_signalled_(false) {} 3830 mutex_(OS::CreateMutex()), already_signalled_(false) {
3831 }
3824 3832
3825 3833
3826 MessageDispatchHelperThread::~MessageDispatchHelperThread() { 3834 MessageDispatchHelperThread::~MessageDispatchHelperThread() {
3835 delete mutex_;
3827 delete sem_; 3836 delete sem_;
3828 } 3837 }
3829 3838
3830 3839
3831 void MessageDispatchHelperThread::Schedule() { 3840 void MessageDispatchHelperThread::Schedule() {
3832 { 3841 {
3833 ScopedLock lock(&mutex_); 3842 ScopedLock lock(mutex_);
3834 if (already_signalled_) { 3843 if (already_signalled_) {
3835 return; 3844 return;
3836 } 3845 }
3837 already_signalled_ = true; 3846 already_signalled_ = true;
3838 } 3847 }
3839 sem_->Signal(); 3848 sem_->Signal();
3840 } 3849 }
3841 3850
3842 3851
3843 void MessageDispatchHelperThread::Run() { 3852 void MessageDispatchHelperThread::Run() {
3844 while (true) { 3853 while (true) {
3845 sem_->Wait(); 3854 sem_->Wait();
3846 { 3855 {
3847 ScopedLock lock(&mutex_); 3856 ScopedLock lock(mutex_);
3848 already_signalled_ = false; 3857 already_signalled_ = false;
3849 } 3858 }
3850 { 3859 {
3851 Locker locker(reinterpret_cast<v8::Isolate*>(isolate_)); 3860 Locker locker(reinterpret_cast<v8::Isolate*>(isolate_));
3852 isolate_->debugger()->CallMessageDispatchHandler(); 3861 isolate_->debugger()->CallMessageDispatchHandler();
3853 } 3862 }
3854 } 3863 }
3855 } 3864 }
3856 3865
3857 #endif // ENABLE_DEBUGGER_SUPPORT 3866 #endif // ENABLE_DEBUGGER_SUPPORT
3858 3867
3859 } } // namespace v8::internal 3868 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/debug.h ('k') | src/debug-agent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698