| Index: src/libplatform/tracing/trace-buffer.cc
|
| diff --git a/src/libplatform/tracing/trace-buffer.cc b/src/libplatform/tracing/trace-buffer.cc
|
| deleted file mode 100644
|
| index 354f0459f68531503bd6eaf6ee09d5928945015f..0000000000000000000000000000000000000000
|
| --- a/src/libplatform/tracing/trace-buffer.cc
|
| +++ /dev/null
|
| @@ -1,109 +0,0 @@
|
| -// Copyright 2016 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "src/libplatform/tracing/trace-buffer.h"
|
| -
|
| -namespace v8 {
|
| -namespace platform {
|
| -namespace tracing {
|
| -
|
| -TraceBufferRingBuffer::TraceBufferRingBuffer(size_t max_chunks,
|
| - TraceWriter* trace_writer)
|
| - : max_chunks_(max_chunks) {
|
| - trace_writer_.reset(trace_writer);
|
| - chunks_.resize(max_chunks);
|
| -}
|
| -
|
| -TraceBufferRingBuffer::~TraceBufferRingBuffer() {}
|
| -
|
| -TraceObject* TraceBufferRingBuffer::AddTraceEvent(uint64_t* handle) {
|
| - base::LockGuard<base::Mutex> guard(&mutex_);
|
| - if (is_empty_ || chunks_[chunk_index_]->IsFull()) {
|
| - chunk_index_ = is_empty_ ? 0 : NextChunkIndex(chunk_index_);
|
| - is_empty_ = false;
|
| - auto& chunk = chunks_[chunk_index_];
|
| - if (chunk) {
|
| - chunk->Reset(current_chunk_seq_++);
|
| - } else {
|
| - chunk.reset(new TraceBufferChunk(current_chunk_seq_++));
|
| - }
|
| - }
|
| - auto& chunk = chunks_[chunk_index_];
|
| - size_t event_index;
|
| - TraceObject* trace_object = chunk->AddTraceEvent(&event_index);
|
| - *handle = MakeHandle(chunk_index_, chunk->seq(), event_index);
|
| - return trace_object;
|
| -}
|
| -
|
| -TraceObject* TraceBufferRingBuffer::GetEventByHandle(uint64_t handle) {
|
| - base::LockGuard<base::Mutex> guard(&mutex_);
|
| - size_t chunk_index, event_index;
|
| - uint32_t chunk_seq;
|
| - ExtractHandle(handle, &chunk_index, &chunk_seq, &event_index);
|
| - if (chunk_index >= chunks_.size()) return NULL;
|
| - auto& chunk = chunks_[chunk_index];
|
| - if (!chunk || chunk->seq() != chunk_seq) return NULL;
|
| - return chunk->GetEventAt(event_index);
|
| -}
|
| -
|
| -bool TraceBufferRingBuffer::Flush() {
|
| - base::LockGuard<base::Mutex> guard(&mutex_);
|
| - // This flushes all the traces stored in the buffer.
|
| - if (!is_empty_) {
|
| - for (size_t i = NextChunkIndex(chunk_index_);; i = NextChunkIndex(i)) {
|
| - if (auto& chunk = chunks_[i]) {
|
| - for (size_t j = 0; j < chunk->size(); ++j) {
|
| - trace_writer_->AppendTraceEvent(chunk->GetEventAt(j));
|
| - }
|
| - }
|
| - if (i == chunk_index_) break;
|
| - }
|
| - }
|
| - trace_writer_->Flush();
|
| - // This resets the trace buffer.
|
| - is_empty_ = true;
|
| - return true;
|
| -}
|
| -
|
| -uint64_t TraceBufferRingBuffer::MakeHandle(size_t chunk_index,
|
| - uint32_t chunk_seq,
|
| - size_t event_index) const {
|
| - return static_cast<uint64_t>(chunk_seq) * Capacity() +
|
| - chunk_index * TraceBufferChunk::kChunkSize + event_index;
|
| -}
|
| -
|
| -void TraceBufferRingBuffer::ExtractHandle(uint64_t handle, size_t* chunk_index,
|
| - uint32_t* chunk_seq,
|
| - size_t* event_index) const {
|
| - *chunk_seq = static_cast<uint32_t>(handle / Capacity());
|
| - size_t indices = handle % Capacity();
|
| - *chunk_index = indices / TraceBufferChunk::kChunkSize;
|
| - *event_index = indices % TraceBufferChunk::kChunkSize;
|
| -}
|
| -
|
| -size_t TraceBufferRingBuffer::NextChunkIndex(size_t index) const {
|
| - if (++index >= max_chunks_) index = 0;
|
| - return index;
|
| -}
|
| -
|
| -TraceBufferChunk::TraceBufferChunk(uint32_t seq) : seq_(seq) {}
|
| -
|
| -void TraceBufferChunk::Reset(uint32_t new_seq) {
|
| - next_free_ = 0;
|
| - seq_ = new_seq;
|
| -}
|
| -
|
| -TraceObject* TraceBufferChunk::AddTraceEvent(size_t* event_index) {
|
| - *event_index = next_free_++;
|
| - return &chunk_[*event_index];
|
| -}
|
| -
|
| -TraceBuffer* TraceBuffer::CreateTraceBufferRingBuffer(
|
| - size_t max_chunks, TraceWriter* trace_writer) {
|
| - return new TraceBufferRingBuffer(max_chunks, trace_writer);
|
| -}
|
| -
|
| -} // namespace tracing
|
| -} // namespace platform
|
| -} // namespace v8
|
|
|