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

#include <il.h>

Inheritance diagram for dart::BinaryDoubleOpInstr:
dart::TemplateDefinition< 2, NoThrow, Pure >

Public Member Functions

 BinaryDoubleOpInstr (Token::Kind op_kind, Value *left, Value *right, intptr_t deopt_id, const InstructionSource &source, SpeculativeMode speculative_mode=kGuardInputs, Representation representation=kUnboxedDouble)
 
Valueleft () const
 
Valueright () const
 
Token::Kind op_kind () const
 
virtual TokenPosition token_pos () 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 PRINT_OPERANDS_TO_SUPPORT DefinitionCanonicalize (FlowGraph *flow_graph)
 
virtual bool AttributesEqual (const Instruction &other) const
 
- Public Member Functions inherited from dart::TemplateDefinition< 2, 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< 2, NoThrow, Pure >
using BaseClass = typename Pure< Definition, PureDefinition >::Base
 
- Protected Attributes inherited from dart::TemplateDefinition< 2, NoThrow, Pure >
EmbeddedArray< Value *, Ninputs_
 

Detailed Description

Definition at line 8967 of file il.h.

Constructor & Destructor Documentation

◆ BinaryDoubleOpInstr()

dart::BinaryDoubleOpInstr::BinaryDoubleOpInstr ( Token::Kind  op_kind,
Value left,
Value right,
intptr_t  deopt_id,
const InstructionSource source,
SpeculativeMode  speculative_mode = kGuardInputs,
Representation  representation = kUnboxedDouble 
)
inline

Definition at line 8969 of file il.h.

8976 : TemplateDefinition(source, deopt_id),
8977 op_kind_(op_kind),
8978 token_pos_(source.token_pos),
8979 speculative_mode_(speculative_mode),
8980 representation_(representation) {
8981 ASSERT((representation == kUnboxedFloat) ||
8982 (representation == kUnboxedDouble));
8983 SetInputAt(0, left);
8984 SetInputAt(1, right);
8985 }
Token::Kind op_kind() const
Definition il.h:8990
Value * right() const
Definition il.h:8988
virtual Representation representation() const
Definition il.h:8996
Value * left() const
Definition il.h:8987
TemplateDefinition(intptr_t deopt_id=DeoptId::kNone)
Definition il.h:2731
#define ASSERT(E)
SkBitmap source
Definition examples.cpp:28

Member Function Documentation

◆ AttributesEqual()

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

Definition at line 9021 of file il.h.

9021 {
9022 auto const other_bin_op = other.AsBinaryDoubleOp();
9023 return (op_kind() == other_bin_op->op_kind()) &&
9024 (speculative_mode_ == other_bin_op->speculative_mode_) &&
9025 (representation_ == other_bin_op->representation_);
9026 }

◆ Canonicalize()

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

Definition at line 2200 of file il.cc.

2200 {
2201 if (!HasUses()) return nullptr;
2202
2203 Definition* result = nullptr;
2204
2206 if (result != nullptr) {
2207 return result;
2208 }
2209
2211 if (result != nullptr) {
2212 return result;
2213 }
2214
2215 if ((op_kind() == Token::kMUL) &&
2216 (left()->definition() == right()->definition())) {
2217 UnaryDoubleOpInstr* square = new UnaryDoubleOpInstr(
2218 Token::kSQUARE, new Value(left()->definition()), DeoptimizationTarget(),
2219 speculative_mode_, representation());
2220 flow_graph->InsertBefore(this, square, env(), FlowGraph::kValue);
2221 return square;
2222 }
2223
2224 return this;
2225}
virtual intptr_t DeoptimizationTarget() const
Definition il.h:9007
static int square(int x)
Definition etc1.cpp:302
GAsyncResult * result
static Definition * CanonicalizeCommutativeDoubleArithmetic(Token::Kind op, Value *left, Value *right)
Definition il.cc:2145
Definition __init__.py:1

◆ ComputeCanDeoptimize()

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

Definition at line 8994 of file il.h.

8994{ return false; }

◆ DeoptimizationTarget()

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

Definition at line 9007 of file il.h.

9007 {
9008 // Direct access since this instruction cannot deoptimize, and the deopt-id
9009 // was inherited from another instruction that could deoptimize.
9010 return GetDeoptId();
9011 }

◆ left()

Value * dart::BinaryDoubleOpInstr::left ( ) const
inline

Definition at line 8987 of file il.h.

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

◆ op_kind()

Token::Kind dart::BinaryDoubleOpInstr::op_kind ( ) const
inline

Definition at line 8990 of file il.h.

8990{ return op_kind_; }

◆ representation()

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

Definition at line 8996 of file il.h.

8996{ return representation_; }

◆ RequiredInputRepresentation()

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

Definition at line 8998 of file il.h.

8998 {
8999 ASSERT((idx == 0) || (idx == 1));
9000 return representation_;
9001 }

◆ right()

Value * dart::BinaryDoubleOpInstr::right ( ) const
inline

Definition at line 8988 of file il.h.

8988{ return inputs_[1]; }

◆ SpeculativeModeOfInput()

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

Definition at line 9003 of file il.h.

9003 {
9004 return speculative_mode_;
9005 }

◆ token_pos()

virtual TokenPosition dart::BinaryDoubleOpInstr::token_pos ( ) const
inlinevirtual

Definition at line 8992 of file il.h.

8992{ return token_pos_; }

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