V8 Project
|
#include <hydrogen-range-analysis.h>
Public Member Functions | |
HRangeAnalysisPhase (HGraph *graph) | |
void | Run () |
![]() | |
HPhase (const char *name, HGraph *graph) | |
~HPhase () | |
Private Member Functions | |
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) |
void | PropagateMinusZeroChecks (HValue *value) |
void | PoisonRanges () |
DISALLOW_COPY_AND_ASSIGN (HRangeAnalysisPhase) | |
Private Attributes | |
ZoneList< HValue * > | changed_ranges_ |
BitVector | in_worklist_ |
ZoneList< HValue * > | worklist_ |
Additional Inherited Members | |
![]() | |
HGraph * | graph () const |
Definition at line 14 of file hydrogen-range-analysis.h.
|
inlineexplicit |
Definition at line 16 of file hydrogen-range-analysis.h.
|
private |
Definition at line 195 of file hydrogen-range-analysis.cc.
References v8::internal::HValue::AddNewRange(), changed_ranges_, v8::internal::HPhase::graph(), v8::internal::HValue::id(), NULL, v8::internal::HValue::range(), and TraceRange().
Referenced by UpdateControlFlowRange().
|
inlineprivate |
Definition at line 31 of file hydrogen-range-analysis.h.
References v8::internal::BitVector::Add(), v8::internal::BitVector::Contains(), v8::internal::HValue::id(), in_worklist_, and worklist_.
Referenced by PropagateMinusZeroChecks().
|
private |
|
private |
Definition at line 122 of file hydrogen-range-analysis.cc.
References DCHECK, v8::internal::HControlInstruction::FirstSuccessor(), v8::internal::Representation::IsSmiOrInteger32(), v8::internal::HCompareNumericAndBranch::left(), v8::internal::Token::NegateCompareOp(), v8::internal::HValue::representation(), v8::internal::Token::ReverseCompareOp(), v8::internal::HCompareNumericAndBranch::right(), v8::internal::HControlInstruction::SecondSuccessor(), v8::internal::HCompareNumericAndBranch::token(), and UpdateControlFlowRange().
Referenced by Run().
|
private |
Definition at line 172 of file hydrogen-range-analysis.cc.
References v8::internal::HValue::ComputeInitialRange(), DCHECK, v8::internal::HPhase::graph(), v8::internal::HValue::HasRange(), v8::internal::HValue::id(), v8::internal::Representation::IsNone(), v8::internal::HValue::Mnemonic(), v8::internal::HValue::range(), v8::internal::HValue::representation(), and TraceRange().
Referenced by Run().
|
private |
Definition at line 109 of file hydrogen-range-analysis.cc.
References v8::internal::HPhase::graph(), and v8::internal::HValue::HasRange().
Referenced by Run().
|
private |
Definition at line 215 of file hydrogen-range-analysis.cc.
References AddToWorklist(), v8::internal::HValue::cast(), v8::internal::BitVector::Clear(), DCHECK, in_worklist_, v8::internal::BitVector::IsEmpty(), v8::internal::HValue::IsPhi(), v8::internal::HValue::kBailoutOnMinusZero, v8::internal::HBinaryOperation::left(), NULL, v8::internal::HValue::range(), v8::internal::HBinaryOperation::right(), v8::internal::HValue::SetFlag(), and worklist_.
Referenced by Run().
|
private |
Definition at line 186 of file hydrogen-range-analysis.cc.
References changed_ranges_, and DCHECK.
Referenced by Run().
void v8::internal::HRangeAnalysisPhase::Run | ( | ) |
Definition at line 35 of file hydrogen-range-analysis.cc.
References v8::internal::List< T, AllocationPolicy >::Add(), v8::internal::List< T, AllocationPolicy >::at(), v8::internal::Pending::block(), v8::internal::HValue::cast(), changed_ranges_, DCHECK, v8::internal::Representation::Equals(), v8::internal::HPhase::graph(), InferControlFlowRange(), InferRange(), v8::internal::Representation::IsSmiOrInteger32(), v8::internal::Pending::last_changed_range(), NULL, PoisonRanges(), PropagateMinusZeroChecks(), RollBackTo(), and TraceRange().
|
private |
Definition at line 25 of file hydrogen-range-analysis.cc.
References v8::base::OS::VPrint().
Referenced by AddRange(), InferRange(), Run(), and UpdateControlFlowRange().
|
private |
Definition at line 139 of file hydrogen-range-analysis.cc.
References AddRange(), v8::internal::EQ, v8::internal::HPhase::graph(), v8::internal::HValue::id(), v8::internal::Token::Name(), NULL, v8::internal::HValue::range(), and TraceRange().
Referenced by InferControlFlowRange().
Definition at line 39 of file hydrogen-range-analysis.h.
Referenced by AddRange(), RollBackTo(), and Run().
|
private |
Definition at line 41 of file hydrogen-range-analysis.h.
Referenced by AddToWorklist(), and PropagateMinusZeroChecks().
Definition at line 42 of file hydrogen-range-analysis.h.
Referenced by AddToWorklist(), and PropagateMinusZeroChecks().