Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2007-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2007-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 4673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4684 host_dispatch_barriers = &stack_allocated_host_dispatch_barriers; | 4684 host_dispatch_barriers = &stack_allocated_host_dispatch_barriers; |
| 4685 | 4685 |
| 4686 host_dispatch_v8_thread.Start(); | 4686 host_dispatch_v8_thread.Start(); |
| 4687 host_dispatch_debugger_thread.Start(); | 4687 host_dispatch_debugger_thread.Start(); |
| 4688 | 4688 |
| 4689 host_dispatch_v8_thread.Join(); | 4689 host_dispatch_v8_thread.Join(); |
| 4690 host_dispatch_debugger_thread.Join(); | 4690 host_dispatch_debugger_thread.Join(); |
| 4691 } | 4691 } |
| 4692 | 4692 |
| 4693 | 4693 |
| 4694 /* Test DebugMessageDispatch */ | |
| 4695 /* In this test, the V8 thread waits for a message from the debug thread. | |
| 4696 * The DebugMessageDispatchHandler is executed from the debugger thread | |
| 4697 * which signals the V8 thread to wake up. | |
| 4698 */ | |
| 4699 | |
| 4700 class DebugMessageDispatchV8Thread : public v8::internal::Thread { | |
| 4701 public: | |
| 4702 void Run(); | |
| 4703 }; | |
| 4704 | |
| 4705 class DebugMessageDispatchDebuggerThread : public v8::internal::Thread { | |
| 4706 public: | |
| 4707 void Run(); | |
| 4708 }; | |
| 4709 | |
| 4710 Barriers* debug_message_dispatch_barriers; | |
| 4711 | |
| 4712 | |
| 4713 static void DebugMessageHandler() { | |
| 4714 debug_message_dispatch_barriers->semaphore_1->Signal(); | |
| 4715 } | |
| 4716 | |
| 4717 | |
| 4718 void DebugMessageDispatchV8Thread::Run() { | |
| 4719 v8::HandleScope scope; | |
| 4720 DebugLocalContext env; | |
| 4721 | |
| 4722 // Setup debug message dispatch handler. | |
| 4723 v8::Debug::SetDebugMessageDispatchHandler(DebugMessageHandler); | |
| 4724 | |
| 4725 CompileRun("var y = 1 + 2;\n"); | |
| 4726 debug_message_dispatch_barriers->barrier_1.Wait(); | |
| 4727 debug_message_dispatch_barriers->semaphore_1->Wait(); | |
| 4728 debug_message_dispatch_barriers->barrier_2.Wait(); | |
| 4729 } | |
| 4730 | |
| 4731 | |
| 4732 void DebugMessageDispatchDebuggerThread::Run() { | |
| 4733 debug_message_dispatch_barriers->barrier_1.Wait(); | |
| 4734 SendContinueCommand(); | |
| 4735 debug_message_dispatch_barriers->barrier_2.Wait(); | |
| 4736 } | |
| 4737 | |
| 4738 DebugMessageDispatchDebuggerThread debug_message_dispatch_debugger_thread; | |
| 4739 DebugMessageDispatchV8Thread debug_message_dispatch_v8_thread; | |
| 4740 | |
| 4741 | |
| 4742 TEST(DebuggerDebugMessageDispatch) { | |
| 4743 i::FLAG_debugger_auto_break = true; | |
| 4744 | |
| 4745 // Create a V8 environment | |
| 4746 Barriers stack_allocated_debug_message_dispatch_barriers; | |
| 4747 stack_allocated_debug_message_dispatch_barriers.Initialize(); | |
| 4748 debug_message_dispatch_barriers = &stack_allocated_debug_message_dispatch_barr iers; | |
|
Søren Thygesen Gjesse
2009/11/18 08:40:57
Long line.
| |
| 4749 | |
| 4750 debug_message_dispatch_v8_thread.Start(); | |
| 4751 debug_message_dispatch_debugger_thread.Start(); | |
| 4752 | |
| 4753 debug_message_dispatch_v8_thread.Join(); | |
| 4754 debug_message_dispatch_debugger_thread.Join(); | |
| 4755 } | |
| 4756 | |
| 4757 | |
| 4694 TEST(DebuggerAgent) { | 4758 TEST(DebuggerAgent) { |
| 4695 // Make sure these ports is not used by other tests to allow tests to run in | 4759 // Make sure these ports is not used by other tests to allow tests to run in |
| 4696 // parallel. | 4760 // parallel. |
| 4697 const int kPort1 = 5858; | 4761 const int kPort1 = 5858; |
| 4698 const int kPort2 = 5857; | 4762 const int kPort2 = 5857; |
| 4699 const int kPort3 = 5856; | 4763 const int kPort3 = 5856; |
| 4700 | 4764 |
| 4701 // Make a string with the port2 number. | 4765 // Make a string with the port2 number. |
| 4702 const int kPortBufferLen = 6; | 4766 const int kPortBufferLen = 6; |
| 4703 char port2_str[kPortBufferLen]; | 4767 char port2_str[kPortBufferLen]; |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5598 break_point_hit_count = 0; | 5662 break_point_hit_count = 0; |
| 5599 max_break_point_hit_count = 10000; // 10000 => infinite loop. | 5663 max_break_point_hit_count = 10000; // 10000 => infinite loop. |
| 5600 foo->Call(env->Global(), 0, NULL); | 5664 foo->Call(env->Global(), 0, NULL); |
| 5601 | 5665 |
| 5602 // When keeping the debug break several break will happen. | 5666 // When keeping the debug break several break will happen. |
| 5603 CHECK_EQ(3, break_point_hit_count); | 5667 CHECK_EQ(3, break_point_hit_count); |
| 5604 | 5668 |
| 5605 v8::Debug::SetDebugEventListener(NULL); | 5669 v8::Debug::SetDebugEventListener(NULL); |
| 5606 CheckDebuggerUnloaded(); | 5670 CheckDebuggerUnloaded(); |
| 5607 } | 5671 } |
| OLD | NEW |