LCOV - code coverage report
Current view: top level - src/compiler - live-range-separator.h (source / functions) Hit Total Coverage
Test: app.info Lines: 2 2 100.0 %
Date: 2017-04-26 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_LIVE_RANGE_SEPARATOR_H_
       6             : #define V8_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             : 
      19             : // A register allocation pair of transformations: splinter and merge live ranges
      20             : class LiveRangeSeparator final : public ZoneObject {
      21             :  public:
      22             :   LiveRangeSeparator(RegisterAllocationData* data, Zone* zone)
      23      915920 :       : data_(data), zone_(zone) {}
      24             : 
      25             :   void Splinter();
      26             : 
      27             :  private:
      28             :   RegisterAllocationData* data() const { return data_; }
      29             :   Zone* zone() const { return zone_; }
      30             : 
      31             :   RegisterAllocationData* const data_;
      32             :   Zone* const zone_;
      33             : 
      34             :   DISALLOW_COPY_AND_ASSIGN(LiveRangeSeparator);
      35             : };
      36             : 
      37             : 
      38             : class LiveRangeMerger final : public ZoneObject {
      39             :  public:
      40             :   LiveRangeMerger(RegisterAllocationData* data, Zone* zone)
      41      915926 :       : data_(data), zone_(zone) {}
      42             : 
      43             :   void Merge();
      44             : 
      45             :  private:
      46             :   RegisterAllocationData* data() const { return data_; }
      47             :   Zone* zone() const { return zone_; }
      48             : 
      49             :   // Mark ranges spilled in deferred blocks, that also cover non-deferred code.
      50             :   // We do nothing special for ranges fully contained in deferred blocks,
      51             :   // because they would "spill in deferred blocks" anyway.
      52             :   void MarkRangesSpilledInDeferredBlocks();
      53             : 
      54             :   RegisterAllocationData* const data_;
      55             :   Zone* const zone_;
      56             : 
      57             :   DISALLOW_COPY_AND_ASSIGN(LiveRangeMerger);
      58             : };
      59             : 
      60             : 
      61             : }  // namespace compiler
      62             : }  // namespace internal
      63             : }  // namespace v8
      64             : #endif  // V8_LIVE_RANGE_SEPARATOR_H_

Generated by: LCOV version 1.10