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

#include <il.h>

Inheritance diagram for dart::GuardFieldClassInstr:
dart::GuardFieldInstr dart::TemplateInstruction< 1, NoThrow, Pure >

Public Member Functions

 GuardFieldClassInstr (Value *value, const Field &field, intptr_t deopt_id)
 
virtual InstructionCanonicalize (FlowGraph *flow_graph)
 
virtual bool AttributesEqual (const Instruction &other) const
 
- Public Member Functions inherited from dart::GuardFieldInstr
 GuardFieldInstr (Value *value, const Field &field, intptr_t deopt_id)
 
Valuevalue () const
 
const Fieldfield () const
 
virtual bool ComputeCanDeoptimize () const
 
virtual bool CanBecomeDeoptimizationTarget () const
 
- Public Member Functions inherited from dart::TemplateInstruction< 1, NoThrow, Pure >
 TemplateInstruction (intptr_t deopt_id=DeoptId::kNone)
 
 TemplateInstruction (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::TemplateInstruction< 1, NoThrow, Pure >
using BaseClass = typename Pure< Instruction, PureInstruction >::Base
 
- Protected Attributes inherited from dart::TemplateInstruction< 1, NoThrow, Pure >
EmbeddedArray< Value *, Ninputs_
 

Detailed Description

Definition at line 6497 of file il.h.

Constructor & Destructor Documentation

◆ GuardFieldClassInstr()

dart::GuardFieldClassInstr::GuardFieldClassInstr ( Value value,
const Field field,
intptr_t  deopt_id 
)
inline

Definition at line 6499 of file il.h.

6500 : GuardFieldInstr(value, field, deopt_id) {
6501 CheckField(field);
6502 }
const Field & field() const
Definition il.h:6476
Value * value() const
Definition il.h:6474
GuardFieldInstr(Value *value, const Field &field, intptr_t deopt_id)
Definition il.h:6468

Member Function Documentation

◆ AttributesEqual()

bool dart::GuardFieldClassInstr::AttributesEqual ( const Instruction other) const
virtual

Definition at line 1050 of file il.cc.

1050 {
1051 return field().ptr() == other.AsGuardFieldClass()->field().ptr();
1052}
ObjectPtr ptr() const
Definition object.h:332

◆ Canonicalize()

Instruction * dart::GuardFieldClassInstr::Canonicalize ( FlowGraph flow_graph)
virtual

Definition at line 3929 of file il.cc.

3929 {
3930 if (field().guarded_cid() == kDynamicCid) {
3931 return nullptr; // Nothing to guard.
3932 }
3933
3934 if (field().is_nullable() && value()->Type()->IsNull()) {
3935 return nullptr;
3936 }
3937
3938 const intptr_t cid = field().is_nullable() ? value()->Type()->ToNullableCid()
3939 : value()->Type()->ToCid();
3940 if (field().guarded_cid() == cid) {
3941 return nullptr; // Value is guaranteed to have this cid.
3942 }
3943
3944 return this;
3945}
bool is_nullable() const
Definition object.cc:11821
CompileType * Type()
DART_EXPORT bool IsNull(Dart_Handle object)
@ kDynamicCid
Definition class_id.h:253
const intptr_t cid

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