Index: test/cctest/test-debug.cc |
diff --git a/test/cctest/test-debug.cc b/test/cctest/test-debug.cc |
index c12cb58309b7a5eb0932ced7c40960032378c999..4cea3c3dac153d6d25a5f15cf7b5d98bdc39baea 100644 |
--- a/test/cctest/test-debug.cc |
+++ b/test/cctest/test-debug.cc |
@@ -4679,13 +4679,12 @@ class ThreadBarrier { |
int num_threads_; |
int num_blocked_; |
v8::internal::Mutex lock_; |
- v8::internal::Semaphore* sem_; |
+ v8::internal::Semaphore sem_; |
bool invalid_; |
}; |
ThreadBarrier::ThreadBarrier(int num_threads) |
- : num_threads_(num_threads), num_blocked_(0) { |
- sem_ = OS::CreateSemaphore(0); |
+ : num_threads_(num_threads), num_blocked_(0), sem_(0) { |
invalid_ = false; // A barrier may only be used once. Then it is invalid. |
} |
@@ -4693,7 +4692,6 @@ ThreadBarrier::ThreadBarrier(int num_threads) |
// Do not call, due to race condition with Wait(). |
// Could be resolved with Pthread condition variables. |
ThreadBarrier::~ThreadBarrier() { |
- delete sem_; |
} |
@@ -4703,7 +4701,7 @@ void ThreadBarrier::Wait() { |
if (num_blocked_ == num_threads_ - 1) { |
// Signal and unblock all waiting threads. |
for (int i = 0; i < num_threads_ - 1; ++i) { |
- sem_->Signal(); |
+ sem_.Signal(); |
} |
invalid_ = true; |
printf("BARRIER\n\n"); |
@@ -4712,7 +4710,7 @@ void ThreadBarrier::Wait() { |
} else { // Wait for the semaphore. |
++num_blocked_; |
lock_.Unlock(); // Potential race condition with destructor because |
- sem_->Wait(); // these two lines are not atomic. |
+ sem_.Wait(); // these two lines are not atomic. |
} |
} |
@@ -4735,8 +4733,8 @@ Barriers::Barriers() : barrier_1(2), barrier_2(2), |
barrier_3(2), barrier_4(2), barrier_5(2) {} |
void Barriers::Initialize() { |
- semaphore_1 = OS::CreateSemaphore(0); |
- semaphore_2 = OS::CreateSemaphore(0); |
+ semaphore_1 = new v8::internal::Semaphore(0); |
+ semaphore_2 = new v8::internal::Semaphore(0); |
} |
@@ -5990,17 +5988,16 @@ class DebuggerAgentProtocolServerThread : public i::Thread { |
port_(port), |
server_(NULL), |
client_(NULL), |
- listening_(OS::CreateSemaphore(0)) { |
+ listening_(0) { |
} |
~DebuggerAgentProtocolServerThread() { |
// Close both sockets. |
delete client_; |
delete server_; |
- delete listening_; |
} |
void Run(); |
- void WaitForListening() { listening_->Wait(); } |
+ void WaitForListening() { listening_.Wait(); } |
char* body() { return *body_; } |
private: |
@@ -6008,7 +6005,7 @@ class DebuggerAgentProtocolServerThread : public i::Thread { |
i::SmartArrayPointer<char> body_; |
i::Socket* server_; // Server socket used for bind/accept. |
i::Socket* client_; // Single client connection used by the test. |
- i::Semaphore* listening_; // Signalled when the server is in listen mode. |
+ i::Semaphore listening_; // Signalled when the server is in listen mode. |
}; |
@@ -6024,7 +6021,7 @@ void DebuggerAgentProtocolServerThread::Run() { |
// Listen for new connections. |
ok = server_->Listen(1); |
CHECK(ok); |
- listening_->Signal(); |
+ listening_.Signal(); |
// Accept a connection. |
client_ = server_->Accept(); |