#include <flow_graph.h>
Definition at line 748 of file flow_graph.h.
◆ LivenessAnalysis()
Definition at line 679 of file flow_graph.cc.
686 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 731 of file flow_graph.cc.
731 {
737 }
738
741}
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 711 of file flow_graph.cc.
711 {
713 bool changed;
714 do {
715 changed = false;
716
719
720
721
722
723
725 changed = true;
726 }
727 }
728 } while (changed);
729}
bool UpdateLiveOut(const BlockEntryInstr &instr)
bool UpdateLiveIn(const BlockEntryInstr &instr)
◆ Dump()
void dart::LivenessAnalysis::Dump |
( |
| ) |
|
Definition at line 751 of file flow_graph.cc.
751 {
755 THR_Print(
"block @%" Pd " -> ", block->block_id());
756
757 Instruction* last = block->last_instruction();
758 for (intptr_t j = 0; j < last->SuccessorCount(); j++) {
759 BlockEntryInstr* succ = last->SuccessorAt(j);
761 }
763
767 }
768}
#define THR_Print(format,...)
static void PrintBitVector(const char *tag, BitVector *v)
◆ GetKillSet()
Definition at line 769 of file flow_graph.h.
769 {
770 return kill_[block->postorder_number()];
771 }
◆ GetLiveInSet()
Definition at line 765 of file flow_graph.h.
765 {
767 }
BitVector * GetLiveInSetAt(intptr_t postorder_number) const
◆ GetLiveInSetAt()
BitVector * dart::LivenessAnalysis::GetLiveInSetAt |
( |
intptr_t |
postorder_number | ) |
const |
|
inline |
◆ GetLiveOutSet()
Definition at line 773 of file flow_graph.h.
773 {
775 }
BitVector * GetLiveOutSetAt(intptr_t postorder_number) const
◆ GetLiveOutSetAt()
BitVector * dart::LivenessAnalysis::GetLiveOutSetAt |
( |
intptr_t |
postorder_number | ) |
const |
|
inline |
◆ UpdateLiveIn()
Definition at line 704 of file flow_graph.cc.
704 {
705 BitVector* live_out =
live_out_[block.postorder_number()];
706 BitVector* kill =
kill_[block.postorder_number()];
707 BitVector* live_in =
live_in_[block.postorder_number()];
708 return live_in->KillAndAdd(kill, live_out);
709}
◆ UpdateLiveOut()
bool dart::LivenessAnalysis::UpdateLiveOut |
( |
const BlockEntryInstr & |
instr | ) |
|
|
protected |
Definition at line 689 of file flow_graph.cc.
689 {
690 BitVector* live_out =
live_out_[block.postorder_number()];
691 bool changed = false;
692 Instruction* last = block.last_instruction();
694 for (intptr_t
i = 0;
i < last->SuccessorCount();
i++) {
695 BlockEntryInstr* succ = last->SuccessorAt(
i);
697 if (live_out->AddAll(
live_in_[succ->postorder_number()])) {
698 changed = true;
699 }
700 }
701 return changed;
702}
◆ 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