 Chromium Code Reviews
 Chromium Code Reviews Issue 22849002:
  Rewrite SamplingCircularQueue  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
    
  
    Issue 22849002:
  Rewrite SamplingCircularQueue  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge| Index: src/circular-queue-inl.h | 
| diff --git a/src/circular-queue-inl.h b/src/circular-queue-inl.h | 
| index b48070ab5d24a064e4f8a91a72020e80d8f02954..88257c340a1fc9393d6522b768b34d91ec0a2c94 100644 | 
| --- a/src/circular-queue-inl.h | 
| +++ b/src/circular-queue-inl.h | 
| @@ -33,21 +33,20 @@ | 
| namespace v8 { | 
| namespace internal { | 
| - | 
| -void* SamplingCircularQueue::Enqueue() { | 
| - if (producer_pos_->enqueue_pos == producer_pos_->next_chunk_pos) { | 
| - if (producer_pos_->enqueue_pos == buffer_ + buffer_size_) { | 
| - producer_pos_->next_chunk_pos = buffer_; | 
| - producer_pos_->enqueue_pos = buffer_; | 
| - } | 
| - Acquire_Store(producer_pos_->next_chunk_pos, kEnqueueStarted); | 
| +void* SamplingCircularQueue::StartEnqueue() { | 
| + MemoryBarrier(); | 
| + if (Acquire_Load(producer_pos_->enqueue_pos) == kEmpty) { | 
| // Skip marker. | 
| - producer_pos_->enqueue_pos += 1; | 
| - producer_pos_->next_chunk_pos += chunk_size_; | 
| + return producer_pos_->enqueue_pos + 1; | 
| } | 
| - void* result = producer_pos_->enqueue_pos; | 
| - producer_pos_->enqueue_pos += record_size_; | 
| - return result; | 
| + return NULL; | 
| +} | 
| + | 
| + | 
| +void SamplingCircularQueue::FinishEnqueue() { | 
| + Release_Store(producer_pos_->enqueue_pos, kFull); | 
| + producer_pos_->enqueue_pos += entry_size_; | 
| + WrapPositionIfNeeded(&producer_pos_->enqueue_pos); | 
| } | 
| 
Benedikt Meurer
2013/08/13 09:31:32
This assumes that there is always only a single pr
 |