LCOV - code coverage report
Current view: top level - src/zone - zone-segment.h (source / functions) Hit Total Coverage
Test: app.info Lines: 5 5 100.0 %
Date: 2019-02-19 Functions: 0 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_ZONE_ZONE_SEGMENT_H_
       6             : #define V8_ZONE_ZONE_SEGMENT_H_
       7             : 
       8             : #include "src/v8.h"
       9             : 
      10             : // Segments represent chunks of memory: They have starting address
      11             : // (encoded in the this pointer) and a size in bytes. Segments are
      12             : // chained together forming a LIFO structure with the newest segment
      13             : // available as segment_head_. Segments are allocated using malloc()
      14             : // and de-allocated using free().
      15             : namespace v8 {
      16             : namespace internal {
      17             : 
      18             : //  Forward declaration
      19             : class Zone;
      20             : 
      21             : class Segment {
      22             :  public:
      23    26190218 :   void Initialize(size_t size) { size_ = size; }
      24             : 
      25             :   Zone* zone() const { return zone_; }
      26    52059985 :   void set_zone(Zone* const zone) { zone_ = zone; }
      27             : 
      28             :   Segment* next() const { return next_; }
      29   105355645 :   void set_next(Segment* const next) { next_ = next; }
      30             : 
      31             :   size_t size() const { return size_; }
      32             :   size_t capacity() const { return size_ - sizeof(Segment); }
      33             : 
      34             :   Address start() const { return address(sizeof(Segment)); }
      35    52059922 :   Address end() const { return address(size_); }
      36             : 
      37             :   // Zap the contents of the segment (but not the header).
      38             :   void ZapContents();
      39             :   // Zaps the header and makes the segment unusable this way.
      40             :   void ZapHeader();
      41             : 
      42             :  private:
      43             : #ifdef DEBUG
      44             :   // Constant byte value used for zapping dead memory in debug mode.
      45             :   static const unsigned char kZapDeadByte = 0xcd;
      46             : #endif
      47             : 
      48             :   // Computes the address of the nth byte in this segment.
      49             :   Address address(size_t n) const {
      50   309758789 :     return reinterpret_cast<Address>(this) + n;
      51             :   }
      52             : 
      53             :   Zone* zone_;
      54             :   Segment* next_;
      55             :   size_t size_;
      56             : };
      57             : }  // namespace internal
      58             : }  // namespace v8
      59             : 
      60             : #endif  // V8_ZONE_ZONE_SEGMENT_H_

Generated by: LCOV version 1.10