Sha256: e090b544f2a50e90a5d585a55f1c5a6306f133ca3997dd9cd3ac102a6bd838b7

Contents?: true

Size: 1.48 KB

Versions: 9

Compression:

Stored size: 1.48 KB

Contents

// Copyright 2013 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef V8_CRANKSHAFT_HYDROGEN_RANGE_ANALYSIS_H_
#define V8_CRANKSHAFT_HYDROGEN_RANGE_ANALYSIS_H_

#include "src/base/compiler-specific.h"
#include "src/crankshaft/hydrogen.h"

namespace v8 {
namespace internal {


class HRangeAnalysisPhase : public HPhase {
 public:
  explicit HRangeAnalysisPhase(HGraph* graph)
      : HPhase("H_Range analysis", graph), changed_ranges_(16, zone()),
        in_worklist_(graph->GetMaximumValueID(), zone()),
        worklist_(32, zone()) {}

  void Run();

 private:
  PRINTF_FORMAT(2, 3) void TraceRange(const char* msg, ...);
  void InferControlFlowRange(HCompareNumericAndBranch* test,
                             HBasicBlock* dest);
  void UpdateControlFlowRange(Token::Value op, HValue* value, HValue* other);
  void InferRange(HValue* value);
  void RollBackTo(int index);
  void AddRange(HValue* value, Range* range);
  void AddToWorklist(HValue* value) {
    if (in_worklist_.Contains(value->id())) return;
    in_worklist_.Add(value->id());
    worklist_.Add(value, zone());
  }
  void PropagateMinusZeroChecks(HValue* value);
  void PoisonRanges();

  ZoneList<HValue*> changed_ranges_;

  BitVector in_worklist_;
  ZoneList<HValue*> worklist_;

  DISALLOW_COPY_AND_ASSIGN(HRangeAnalysisPhase);
};


}  // namespace internal
}  // namespace v8

#endif  // V8_CRANKSHAFT_HYDROGEN_RANGE_ANALYSIS_H_

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
libv8-6.0.286.54.1 vendor/v8/src/crankshaft/hydrogen-range-analysis.h
libv8-6.0.286.54.0 vendor/v8/src/crankshaft/hydrogen-range-analysis.h
libv8-6.0.286.54.0beta2 vendor/v8/src/crankshaft/hydrogen-range-analysis.h
libv8-6.0.286.54.0beta1 vendor/v8/src/crankshaft/hydrogen-range-analysis.h
libv8-6.0.286.44.0beta1 vendor/v8/src/crankshaft/hydrogen-range-analysis.h
node-compiler-0.9.1 vendor/node/deps/v8/src/crankshaft/hydrogen-range-analysis.h
node-compiler-0.9.0 vendor/node-v7.2.1/deps/v8/src/crankshaft/hydrogen-range-analysis.h
node-compiler-0.8.0 vendor/node-v7.2.0/deps/v8/src/crankshaft/hydrogen-range-analysis.h
node-compiler-0.7.0 vendor/node-v7.1.0/deps/v8/src/crankshaft/hydrogen-range-analysis.h