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

#include <il.h>

Inheritance diagram for dart::IndirectGotoInstr:
dart::TemplateInstruction< 1, NoThrow >

Public Member Functions

 IndirectGotoInstr (intptr_t target_count, Value *target_index)
 
virtual Representation RequiredInputRepresentation (intptr_t idx) const
 
void AddSuccessor (TargetEntryInstr *successor)
 
virtual intptr_t SuccessorCount () const
 
virtual TargetEntryInstrSuccessorAt (intptr_t index) const
 
virtual bool ComputeCanDeoptimize () const
 
virtual bool CanBecomeDeoptimizationTarget () const
 
virtual bool HasUnknownSideEffects () const
 
Valueoffset () const
 
void ComputeOffsetTable (FlowGraphCompiler *compiler)
 
- Public Member Functions inherited from dart::TemplateInstruction< 1, NoThrow >
 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 >
using BaseClass = typename NoCSE< Instruction, PureInstruction >::Base
 
- Protected Attributes inherited from dart::TemplateInstruction< 1, NoThrow >
EmbeddedArray< Value *, Ninputs_
 

Detailed Description

Definition at line 3778 of file il.h.

Constructor & Destructor Documentation

◆ IndirectGotoInstr()

dart::IndirectGotoInstr::IndirectGotoInstr ( intptr_t  target_count,
Value target_index 
)
inline

Definition at line 3780 of file il.h.

3781 : offsets_(TypedData::ZoneHandle(TypedData::New(kTypedDataInt32ArrayCid,
3782 target_count,
3783 Heap::kOld))) {
3784 SetInputAt(0, target_index);
3785 }
@ kOld
Definition heap.h:39
static Object & ZoneHandle()
Definition object.h:419
static TypedDataPtr New(intptr_t class_id, intptr_t len, Heap::Space space=Heap::kNew)
Definition object.cc:25666

Member Function Documentation

◆ AddSuccessor()

void dart::IndirectGotoInstr::AddSuccessor ( TargetEntryInstr successor)
inline

Definition at line 3794 of file il.h.

3794 {
3795 ASSERT(successor->next()->IsGoto());
3796 ASSERT(successor->next()->AsGoto()->successor()->IsIndirectEntry());
3797 successors_.Add(successor);
3798 }
#define ASSERT(E)

◆ CanBecomeDeoptimizationTarget()

virtual bool dart::IndirectGotoInstr::CanBecomeDeoptimizationTarget ( ) const
inlinevirtual

Definition at line 3807 of file il.h.

3807{ return false; }

◆ ComputeCanDeoptimize()

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

Definition at line 3806 of file il.h.

3806{ return false; }

◆ ComputeOffsetTable()

void dart::IndirectGotoInstr::ComputeOffsetTable ( FlowGraphCompiler compiler)

Definition at line 4499 of file il.cc.

4499 {
4500 ASSERT(SuccessorCount() == offsets_.Length());
4501 intptr_t element_size = offsets_.ElementSizeInBytes();
4502 for (intptr_t i = 0; i < SuccessorCount(); i++) {
4503 TargetEntryInstr* target = SuccessorAt(i);
4504 auto* label = compiler->GetJumpLabel(target);
4505 RELEASE_ASSERT(label != nullptr);
4506 RELEASE_ASSERT(label->IsBound());
4507 intptr_t offset = label->Position();
4509 offsets_.SetInt32(i * element_size, offset);
4510 }
4511}
static size_t element_size(Layout layout, SkSLType type)
#define RELEASE_ASSERT(cond)
Definition assert.h:327
virtual intptr_t SuccessorCount() const
Definition il.h:3800
virtual TargetEntryInstr * SuccessorAt(intptr_t index) const
Definition il.h:3801
Value * offset() const
Definition il.h:3811
intptr_t Length() const
Definition object.h:11492
intptr_t ElementSizeInBytes() const
Definition object.h:11505
uint32_t * target

◆ HasUnknownSideEffects()

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

Definition at line 3809 of file il.h.

3809{ return false; }

◆ offset()

Value * dart::IndirectGotoInstr::offset ( ) const
inline

Definition at line 3811 of file il.h.

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

◆ RequiredInputRepresentation()

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

Definition at line 3789 of file il.h.

3789 {
3790 ASSERT(idx == 0);
3791 return kTagged;
3792 }

◆ SuccessorAt()

virtual TargetEntryInstr * dart::IndirectGotoInstr::SuccessorAt ( intptr_t  index) const
inlinevirtual

Definition at line 3801 of file il.h.

3801 {
3802 ASSERT(index < SuccessorCount());
3803 return successors_[index];
3804 }

◆ SuccessorCount()

virtual intptr_t dart::IndirectGotoInstr::SuccessorCount ( ) const
inlinevirtual

Definition at line 3800 of file il.h.

3800{ return successors_.length(); }

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