Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
dart::BlockLabel Class Reference

Convenience wrapper around a BlockEntryInstr pointer. More...

#include <regexp_assembler.h>

Inheritance diagram for dart::BlockLabel:
dart::ValueObject

Public Member Functions

 BlockLabel ()
 
 ~BlockLabel ()
 
intptr_t pos () const
 
bool is_bound () const
 
bool is_linked () const
 
JoinEntryInstrblock () const
 
void Unuse ()
 
void BindTo (intptr_t pos)
 
void LinkTo (intptr_t pos)
 
void SetLinked ()
 
- Public Member Functions inherited from dart::ValueObject
 ValueObject ()
 
 ~ValueObject ()
 

Detailed Description

Convenience wrapper around a BlockEntryInstr pointer.

Definition at line 37 of file regexp_assembler.h.

Constructor & Destructor Documentation

◆ BlockLabel()

dart::BlockLabel::BlockLabel ( )

Definition at line 100 of file regexp_assembler.cc.

100 {
101#if !defined(DART_PRECOMPILED_RUNTIME)
102 if (!FLAG_interpret_irregexp) {
103 // Only needed by the compiled IR backend.
104 block_ =
105 new JoinEntryInstr(-1, -1, CompilerState::Current().GetNextDeoptId());
106 }
107#endif
108}
static CompilerState & Current()

◆ ~BlockLabel()

dart::BlockLabel::~BlockLabel ( )
inline

Definition at line 41 of file regexp_assembler.h.

41{ ASSERT(!is_linked()); }
bool is_linked() const
#define ASSERT(E)

Member Function Documentation

◆ BindTo()

void dart::BlockLabel::BindTo ( intptr_t  pos)
inline

Definition at line 56 of file regexp_assembler.h.

56 {
57 pos_ = pos;
58#if !defined(DART_PRECOMPILED_RUNTIME)
59 if (block_ != nullptr) block_->set_block_id(pos);
60#endif // !defined(DART_PRECOMPILED_RUNTIME)
61 is_bound_ = true;
62 is_linked_ = false;
64 }
void set_block_id(intptr_t block_id)
Definition: il.h:1753
bool is_bound() const
intptr_t pos() const

◆ block()

JoinEntryInstr * dart::BlockLabel::block ( ) const
inline

Definition at line 47 of file regexp_assembler.h.

47{ return block_; }

◆ is_bound()

bool dart::BlockLabel::is_bound ( ) const
inline

Definition at line 44 of file regexp_assembler.h.

44{ return is_bound_; }

◆ is_linked()

bool dart::BlockLabel::is_linked ( ) const
inline

Definition at line 45 of file regexp_assembler.h.

45{ return !is_bound_ && is_linked_; }

◆ LinkTo()

void dart::BlockLabel::LinkTo ( intptr_t  pos)
inline

Definition at line 68 of file regexp_assembler.h.

68 {
69#if !defined(DART_PRECOMPILED_RUNTIME)
70 ASSERT(block_ == nullptr);
71#endif
72 ASSERT(!is_bound_);
73 pos_ = pos;
74 is_linked_ = true;
75 }

◆ pos()

intptr_t dart::BlockLabel::pos ( ) const
inline

Definition at line 43 of file regexp_assembler.h.

43{ return pos_; }

◆ SetLinked()

void dart::BlockLabel::SetLinked ( )
inline

Definition at line 78 of file regexp_assembler.h.

78 {
79#if !defined(DART_PRECOMPILED_RUNTIME)
80 ASSERT(block_ != nullptr);
81#endif
82 if (!is_bound_) {
83 is_linked_ = true;
84 }
85 }

◆ Unuse()

void dart::BlockLabel::Unuse ( )
inline

Definition at line 50 of file regexp_assembler.h.

50 {
51 pos_ = -1;
52 is_bound_ = false;
53 is_linked_ = false;
54 }

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