LCOV - code coverage report
Current view: top level - src/libplatform/tracing - trace-buffer.h (source / functions) Hit Total Coverage
Test: app.info Lines: 2 2 100.0 %
Date: 2019-04-17 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright 2016 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #ifndef V8_LIBPLATFORM_TRACING_TRACE_BUFFER_H_
       6             : #define V8_LIBPLATFORM_TRACING_TRACE_BUFFER_H_
       7             : 
       8             : #include <memory>
       9             : #include <vector>
      10             : 
      11             : #include "include/libplatform/v8-tracing.h"
      12             : #include "src/base/platform/mutex.h"
      13             : 
      14             : namespace v8 {
      15             : namespace platform {
      16             : namespace tracing {
      17             : 
      18             : class TraceBufferRingBuffer : public TraceBuffer {
      19             :  public:
      20             :   TraceBufferRingBuffer(size_t max_chunks, TraceWriter* trace_writer);
      21         164 :   ~TraceBufferRingBuffer() override = default;
      22             : 
      23             :   TraceObject* AddTraceEvent(uint64_t* handle) override;
      24             :   TraceObject* GetEventByHandle(uint64_t handle) override;
      25             :   bool Flush() override;
      26             : 
      27             :  private:
      28             :   uint64_t MakeHandle(size_t chunk_index, uint32_t chunk_seq,
      29             :                       size_t event_index) const;
      30             :   void ExtractHandle(uint64_t handle, size_t* chunk_index, uint32_t* chunk_seq,
      31             :                      size_t* event_index) const;
      32        3780 :   size_t Capacity() const { return max_chunks_ * TraceBufferChunk::kChunkSize; }
      33             :   size_t NextChunkIndex(size_t index) const;
      34             : 
      35             :   mutable base::Mutex mutex_;
      36             :   size_t max_chunks_;
      37             :   std::unique_ptr<TraceWriter> trace_writer_;
      38             :   std::vector<std::unique_ptr<TraceBufferChunk>> chunks_;
      39             :   size_t chunk_index_;
      40             :   bool is_empty_ = true;
      41             :   uint32_t current_chunk_seq_ = 1;
      42             : };
      43             : 
      44             : }  // namespace tracing
      45             : }  // namespace platform
      46             : }  // namespace v8
      47             : 
      48             : #endif  // V8_LIBPLATFORM_TRACING_TRACE_BUFFER_H_

Generated by: LCOV version 1.10