LCOV - code coverage report
Current view: top level - src/crankshaft - hydrogen-range-analysis.h (source / functions) Hit Total Coverage
Test: app.info Lines: 6 6 100.0 %
Date: 2017-04-26 Functions: 2 2 100.0 %

          Line data    Source code
       1             : // Copyright 2013 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_CRANKSHAFT_HYDROGEN_RANGE_ANALYSIS_H_
       6             : #define V8_CRANKSHAFT_HYDROGEN_RANGE_ANALYSIS_H_
       7             : 
       8             : #include "src/base/compiler-specific.h"
       9             : #include "src/crankshaft/hydrogen.h"
      10             : 
      11             : namespace v8 {
      12             : namespace internal {
      13             : 
      14             : 
      15      283729 : class HRangeAnalysisPhase : public HPhase {
      16             :  public:
      17      283729 :   explicit HRangeAnalysisPhase(HGraph* graph)
      18             :       : HPhase("H_Range analysis", graph), changed_ranges_(16, zone()),
      19             :         in_worklist_(graph->GetMaximumValueID(), zone()),
      20      567460 :         worklist_(32, zone()) {}
      21             : 
      22             :   void Run();
      23             : 
      24             :  private:
      25             :   PRINTF_FORMAT(2, 3) void TraceRange(const char* msg, ...);
      26             :   void InferControlFlowRange(HCompareNumericAndBranch* test,
      27             :                              HBasicBlock* dest);
      28             :   void UpdateControlFlowRange(Token::Value op, HValue* value, HValue* other);
      29             :   void InferRange(HValue* value);
      30             :   void RollBackTo(int index);
      31             :   void AddRange(HValue* value, Range* range);
      32      265109 :   void AddToWorklist(HValue* value) {
      33      795327 :     if (in_worklist_.Contains(value->id())) return;
      34             :     in_worklist_.Add(value->id());
      35      245466 :     worklist_.Add(value, zone());
      36             :   }
      37             :   void PropagateMinusZeroChecks(HValue* value);
      38             :   void PoisonRanges();
      39             : 
      40             :   ZoneList<HValue*> changed_ranges_;
      41             : 
      42             :   BitVector in_worklist_;
      43             :   ZoneList<HValue*> worklist_;
      44             : 
      45             :   DISALLOW_COPY_AND_ASSIGN(HRangeAnalysisPhase);
      46             : };
      47             : 
      48             : 
      49             : }  // namespace internal
      50             : }  // namespace v8
      51             : 
      52             : #endif  // V8_CRANKSHAFT_HYDROGEN_RANGE_ANALYSIS_H_

Generated by: LCOV version 1.10