LCOV - code coverage report
Current view: top level - src/compiler/backend - live-range-separator.h (source / functions) Hit Total Coverage
Test: app.info Lines: 2 2 100.0 %
Date: 2019-04-17 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2015 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_COMPILER_BACKEND_LIVE_RANGE_SEPARATOR_H_
       6             : #define V8_COMPILER_BACKEND_LIVE_RANGE_SEPARATOR_H_
       7             : 
       8             : #include "src/zone/zone.h"
       9             : namespace v8 {
      10             : namespace internal {
      11             : 
      12             : class Zone;
      13             : 
      14             : namespace compiler {
      15             : 
      16             : class RegisterAllocationData;
      17             : 
      18             : // A register allocation pair of transformations: splinter and merge live ranges
      19             : class LiveRangeSeparator final : public ZoneObject {
      20             :  public:
      21             :   LiveRangeSeparator(RegisterAllocationData* data, Zone* zone)
      22     2642507 :       : data_(data), zone_(zone) {}
      23             : 
      24             :   void Splinter();
      25             : 
      26             :  private:
      27             :   RegisterAllocationData* data() const { return data_; }
      28             :   Zone* zone() const { return zone_; }
      29             : 
      30             :   RegisterAllocationData* const data_;
      31             :   Zone* const zone_;
      32             : 
      33             :   DISALLOW_COPY_AND_ASSIGN(LiveRangeSeparator);
      34             : };
      35             : 
      36             : class LiveRangeMerger final : public ZoneObject {
      37             :  public:
      38             :   LiveRangeMerger(RegisterAllocationData* data, Zone* zone)
      39     2642548 :       : data_(data), zone_(zone) {}
      40             : 
      41             :   void Merge();
      42             : 
      43             :  private:
      44             :   RegisterAllocationData* data() const { return data_; }
      45             :   Zone* zone() const { return zone_; }
      46             : 
      47             :   // Mark ranges spilled in deferred blocks, that also cover non-deferred code.
      48             :   // We do nothing special for ranges fully contained in deferred blocks,
      49             :   // because they would "spill in deferred blocks" anyway.
      50             :   void MarkRangesSpilledInDeferredBlocks();
      51             : 
      52             :   RegisterAllocationData* const data_;
      53             :   Zone* const zone_;
      54             : 
      55             :   DISALLOW_COPY_AND_ASSIGN(LiveRangeMerger);
      56             : };
      57             : 
      58             : }  // namespace compiler
      59             : }  // namespace internal
      60             : }  // namespace v8
      61             : #endif  // V8_COMPILER_BACKEND_LIVE_RANGE_SEPARATOR_H_

Generated by: LCOV version 1.10