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

#include <il.h>

Inheritance diagram for dart::DoubleToFloatInstr:
dart::TemplateDefinition< 1, NoThrow, Pure >

Public Member Functions

 DoubleToFloatInstr (Value *value, intptr_t deopt_id, SpeculativeMode speculative_mode=kGuardInputs)
 
Valuevalue () const
 
virtual bool ComputeCanDeoptimize () const
 
virtual Representation representation () const
 
virtual Representation RequiredInputRepresentation (intptr_t idx) const
 
virtual SpeculativeMode SpeculativeModeOfInput (intptr_t index) const
 
virtual intptr_t DeoptimizationTarget () const
 
virtual bool AttributesEqual (const Instruction &other) const
 
virtual DefinitionCanonicalize (FlowGraph *flow_graph)
 
- Public Member Functions inherited from dart::TemplateDefinition< 1, NoThrow, Pure >
 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, Pure >
using BaseClass = typename Pure< Definition, PureDefinition >::Base
 
- Protected Attributes inherited from dart::TemplateDefinition< 1, NoThrow, Pure >
EmbeddedArray< Value *, Ninputs_
 

Detailed Description

Definition at line 10081 of file il.h.

Constructor & Destructor Documentation

◆ DoubleToFloatInstr()

dart::DoubleToFloatInstr::DoubleToFloatInstr ( Value value,
intptr_t  deopt_id,
SpeculativeMode  speculative_mode = kGuardInputs 
)
inline

Definition at line 10083 of file il.h.

10086 : TemplateDefinition(deopt_id), speculative_mode_(speculative_mode) {
10087 SetInputAt(0, value);
10088 }
Value * value() const
Definition il.h:10090
TemplateDefinition(intptr_t deopt_id=DeoptId::kNone)
Definition il.h:2731

Member Function Documentation

◆ AttributesEqual()

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

Definition at line 10109 of file il.h.

10109{ return true; }

◆ Canonicalize()

Definition * dart::DoubleToFloatInstr::Canonicalize ( FlowGraph flow_graph)
virtual

Definition at line 2177 of file il.cc.

2177 {
2178 if (!HasUses()) return nullptr;
2179 if (value()->definition()->IsFloatToDouble()) {
2180 // F2D(D2F(v)) == v.
2181 return value()->definition()->AsFloatToDouble()->value()->definition();
2182 }
2183 if (value()->BindsToConstant()) {
2184 double narrowed_val =
2185 static_cast<float>(Double::Cast(value()->BoundConstant()).value());
2186 return flow_graph->GetConstant(
2187 Double::ZoneHandle(Double::NewCanonical(narrowed_val)), kUnboxedFloat);
2188 }
2189 return this;
2190}
static DoublePtr NewCanonical(double d)
Definition object.cc:23497
static Object & ZoneHandle()
Definition object.h:419
Definition * definition() const
Definition il.h:103

◆ ComputeCanDeoptimize()

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

Definition at line 10094 of file il.h.

10094{ return false; }

◆ DeoptimizationTarget()

virtual intptr_t dart::DoubleToFloatInstr::DeoptimizationTarget ( ) const
inlinevirtual

Definition at line 10107 of file il.h.

10107{ return GetDeoptId(); }

◆ representation()

virtual Representation dart::DoubleToFloatInstr::representation ( ) const
inlinevirtual

Definition at line 10096 of file il.h.

10096{ return kUnboxedFloat; }

◆ RequiredInputRepresentation()

virtual Representation dart::DoubleToFloatInstr::RequiredInputRepresentation ( intptr_t  idx) const
inlinevirtual

Definition at line 10098 of file il.h.

10098 {
10099 ASSERT(idx == 0);
10100 return kUnboxedDouble;
10101 }
#define ASSERT(E)

◆ SpeculativeModeOfInput()

virtual SpeculativeMode dart::DoubleToFloatInstr::SpeculativeModeOfInput ( intptr_t  index) const
inlinevirtual

Definition at line 10103 of file il.h.

10103 {
10104 return speculative_mode_;
10105 }

◆ value()

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

Definition at line 10090 of file il.h.

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

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