Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
dart::ConstraintInstr Class Reference

#include <il.h>

Inheritance diagram for dart::ConstraintInstr:
dart::TemplateDefinition< 1, NoThrow >

Public Member Functions

 ConstraintInstr (Value *value, Range *constraint)
 
virtual CompileType ComputeType () const
 
virtual bool ComputeCanDeoptimize () const
 
virtual bool HasUnknownSideEffects () const
 
virtual bool AttributesEqual (const Instruction &other) const
 
Valuevalue () const
 
Rangeconstraint () const
 
virtual void InferRange (RangeAnalysis *analysis, Range *range)
 
void set_target (TargetEntryInstr *target)
 
TargetEntryInstrtarget () const
 
DECLARE_INSTRUCTION_SERIALIZABLE_FIELDS(ConstraintInstr, TemplateDefinition, FIELD_LIST) DECLARE_EXTRA_SERIALIZATION private DISALLOW_COPY_AND_ASSIGN (ConstraintInstr)
 
- Public Member Functions inherited from dart::TemplateDefinition< 1, NoThrow >
 TemplateDefinition (intptr_t deopt_id=DeoptId::kNone)
 
 TemplateDefinition (const InstructionSource &source, intptr_t deopt_id=DeoptId::kNone)
 
virtual intptr_t InputCount () const
 
virtual ValueInputAt (intptr_t i) const
 
virtual bool MayThrow () const
 

Additional Inherited Members

- Public Types inherited from dart::TemplateDefinition< 1, NoThrow >
using BaseClass = typename NoCSE< Definition, PureDefinition >::Base
 
- Protected Attributes inherited from dart::TemplateDefinition< 1, NoThrow >
EmbeddedArray< Value *, Ninputs_
 

Detailed Description

Definition at line 4155 of file il.h.

Constructor & Destructor Documentation

◆ ConstraintInstr()

dart::ConstraintInstr::ConstraintInstr ( Value value,
Range constraint 
)
inline

Definition at line 4157 of file il.h.

4157 : constraint_(constraint) {
4158 SetInputAt(0, value);
4159 }
Value * value() const
Definition il.h:4174
Range * constraint() const
Definition il.h:4175

Member Function Documentation

◆ AttributesEqual()

virtual bool dart::ConstraintInstr::AttributesEqual ( const Instruction other) const
inlinevirtual

Definition at line 4169 of file il.h.

4169 {
4170 UNREACHABLE();
4171 return false;
4172 }
#define UNREACHABLE()
Definition assert.h:248

◆ ComputeCanDeoptimize()

virtual bool dart::ConstraintInstr::ComputeCanDeoptimize ( ) const
inlinevirtual

Definition at line 4165 of file il.h.

4165{ return false; }

◆ ComputeType()

CompileType dart::ConstraintInstr::ComputeType ( ) const
virtual

Definition at line 1762 of file type_propagator.cc.

1762 {
1763 return CompileType::FromCid(kSmiCid);
1764}
static CompileType FromCid(intptr_t cid)

◆ constraint()

Range * dart::ConstraintInstr::constraint ( ) const
inline

Definition at line 4175 of file il.h.

4175{ return constraint_; }

◆ DISALLOW_COPY_AND_ASSIGN()

◆ HasUnknownSideEffects()

virtual bool dart::ConstraintInstr::HasUnknownSideEffects ( ) const
inlinevirtual

Definition at line 4167 of file il.h.

4167{ return false; }

◆ InferRange()

void dart::ConstraintInstr::InferRange ( RangeAnalysis analysis,
Range range 
)
virtual

Definition at line 2808 of file range_analysis.cc.

2808 {
2809 const Range* value_range = analysis->GetSmiRange(value());
2810 if (Range::IsUnknown(value_range)) {
2811 return;
2812 }
2813
2814 // TODO(vegorov) check if precision of the analysis can be improved by
2815 // recognizing intersections of the form:
2816 //
2817 // (..., S+x] ^ [S+x, ...) = [S+x, S+x]
2818 //
2819 Range result = value_range->Intersect(constraint());
2820
2821 if (result.IsUnsatisfiable()) {
2822 return;
2823 }
2824
2825 *range = result;
2826}
static bool IsUnknown(const Range *other)
GAsyncResult * result

◆ set_target()

void dart::ConstraintInstr::set_target ( TargetEntryInstr target)
inline

Definition at line 4182 of file il.h.

4182{ target_ = target; }
TargetEntryInstr * target() const
Definition il.h:4183

◆ target()

TargetEntryInstr * dart::ConstraintInstr::target ( ) const
inline

Definition at line 4183 of file il.h.

4183{ return target_; }

◆ value()

Value * dart::ConstraintInstr::value ( ) const
inline

Definition at line 4174 of file il.h.

4174{ return inputs_[0]; }
EmbeddedArray< Value *, N > inputs_
Definition il.h:2744

The documentation for this class was generated from the following files: