#include <flow_graph.h>
Definition at line 750 of file flow_graph.h.
◆ LivenessAnalysis()
Definition at line 682 of file flow_graph.cc.
689 kill_(postorder.length()),
const intptr_t variable_count_
GrowableArray< BitVector * > kill_
GrowableArray< BitVector * > live_out_
GrowableArray< BitVector * > live_in_
const GrowableArray< BlockEntryInstr * > & postorder_
static Thread * Current()
◆ ~LivenessAnalysis()
virtual dart::LivenessAnalysis::~LivenessAnalysis |
( |
| ) |
|
|
inlinevirtual |
◆ Analyze()
void dart::LivenessAnalysis::Analyze |
( |
| ) |
|
Definition at line 734 of file flow_graph.cc.
734 {
740 }
741
744}
static int block_count(const SkSBlockAllocator< N > &pool)
virtual void ComputeInitialSets()=0
void ComputeLiveInAndLiveOutSets()
◆ ComputeInitialSets()
virtual void dart::LivenessAnalysis::ComputeInitialSets |
( |
| ) |
|
|
protectedpure virtual |
◆ ComputeLiveInAndLiveOutSets()
void dart::LivenessAnalysis::ComputeLiveInAndLiveOutSets |
( |
| ) |
|
|
protected |
Definition at line 714 of file flow_graph.cc.
714 {
716 bool changed;
717 do {
718 changed = false;
719
721 const BlockEntryInstr& block = *
postorder_[i];
722
723
724
725
726
728 changed = true;
729 }
730 }
731 } while (changed);
732}
bool UpdateLiveOut(const BlockEntryInstr &instr)
bool UpdateLiveIn(const BlockEntryInstr &instr)
◆ Dump()
void dart::LivenessAnalysis::Dump |
( |
| ) |
|
Definition at line 754 of file flow_graph.cc.
754 {
758 THR_Print(
"block @%" Pd " -> ", block->block_id());
759
760 Instruction* last = block->last_instruction();
761 for (intptr_t j = 0; j < last->SuccessorCount(); j++) {
762 BlockEntryInstr* succ = last->SuccessorAt(j);
764 }
766
770 }
771}
#define THR_Print(format,...)
static void PrintBitVector(const char *tag, BitVector *v)
◆ GetKillSet()
Definition at line 771 of file flow_graph.h.
771 {
772 return kill_[block->postorder_number()];
773 }
◆ GetLiveInSet()
Definition at line 767 of file flow_graph.h.
767 {
769 }
BitVector * GetLiveInSetAt(intptr_t postorder_number) const
◆ GetLiveInSetAt()
BitVector * dart::LivenessAnalysis::GetLiveInSetAt |
( |
intptr_t |
postorder_number | ) |
const |
|
inline |
◆ GetLiveOutSet()
Definition at line 775 of file flow_graph.h.
775 {
777 }
BitVector * GetLiveOutSetAt(intptr_t postorder_number) const
◆ GetLiveOutSetAt()
BitVector * dart::LivenessAnalysis::GetLiveOutSetAt |
( |
intptr_t |
postorder_number | ) |
const |
|
inline |
◆ UpdateLiveIn()
Definition at line 707 of file flow_graph.cc.
707 {
708 BitVector* live_out =
live_out_[block.postorder_number()];
709 BitVector* kill =
kill_[block.postorder_number()];
710 BitVector* live_in =
live_in_[block.postorder_number()];
711 return live_in->KillAndAdd(kill, live_out);
712}
◆ UpdateLiveOut()
bool dart::LivenessAnalysis::UpdateLiveOut |
( |
const BlockEntryInstr & |
instr | ) |
|
|
protected |
Definition at line 692 of file flow_graph.cc.
692 {
693 BitVector* live_out =
live_out_[block.postorder_number()];
694 bool changed = false;
695 Instruction* last = block.last_instruction();
697 for (intptr_t i = 0; i < last->SuccessorCount(); i++) {
698 BlockEntryInstr* succ = last->SuccessorAt(i);
700 if (live_out->AddAll(
live_in_[succ->postorder_number()])) {
701 changed = true;
702 }
703 }
704 return changed;
705}
◆ zone()
Zone * dart::LivenessAnalysis::zone |
( |
| ) |
const |
|
inlineprotected |
◆ kill_
◆ live_in_
◆ live_out_
◆ postorder_
◆ variable_count_
const intptr_t dart::LivenessAnalysis::variable_count_ |
|
protected |
◆ zone_
Zone* dart::LivenessAnalysis::zone_ |
|
protected |
The documentation for this class was generated from the following files:
- third_party/dart-lang/sdk/runtime/vm/compiler/backend/flow_graph.h
- third_party/dart-lang/sdk/runtime/vm/compiler/backend/flow_graph.cc