ART: Added dirty flag to optimizations
- Added a dirty flag to the PassMEDataHolder and use it to determine
if we want to perform the post-optimization passes or not.
Change-Id: I59a85f5198f9224d5fe8893397bfaf68a978d8f1
Signed-off-by: Jean Christophe Beyler <jean.christophe.beyler@intel.com>
diff --git a/compiler/dex/post_opt_passes.h b/compiler/dex/post_opt_passes.h
index a1b0df4..dfd2567 100644
--- a/compiler/dex/post_opt_passes.h
+++ b/compiler/dex/post_opt_passes.h
@@ -52,7 +52,7 @@
MethodUseCount() : PassME("UseCount") {
}
- bool Worker(const PassDataHolder* data) const;
+ bool Worker(PassDataHolder* data) const;
bool Gate(const PassDataHolder* data) const;
};
@@ -66,7 +66,7 @@
ClearPhiInstructions() : PassME("ClearPhiInstructions") {
}
- bool Worker(const PassDataHolder* data) const;
+ bool Worker(PassDataHolder* data) const;
};
/**
@@ -222,11 +222,11 @@
PhiNodeOperands() : PassME("PhiNodeOperands", kPreOrderDFSTraversal) {
}
- bool Worker(const PassDataHolder* data) const {
+ bool Worker(PassDataHolder* data) const {
DCHECK(data != nullptr);
- CompilationUnit* c_unit = down_cast<const PassMEDataHolder*>(data)->c_unit;
+ CompilationUnit* c_unit = down_cast<PassMEDataHolder*>(data)->c_unit;
DCHECK(c_unit != nullptr);
- BasicBlock* bb = down_cast<const PassMEDataHolder*>(data)->bb;
+ BasicBlock* bb = down_cast<PassMEDataHolder*>(data)->bb;
DCHECK(bb != nullptr);
c_unit->mir_graph->InsertPhiNodeOperands(bb);
// No need of repeating, so just return false.
@@ -260,11 +260,11 @@
ConstantPropagation() : PassME("ConstantPropagation") {
}
- bool Worker(const PassDataHolder* data) const {
+ bool Worker(PassDataHolder* data) const {
DCHECK(data != nullptr);
- CompilationUnit* c_unit = down_cast<const PassMEDataHolder*>(data)->c_unit;
+ CompilationUnit* c_unit = down_cast<PassMEDataHolder*>(data)->c_unit;
DCHECK(c_unit != nullptr);
- BasicBlock* bb = down_cast<const PassMEDataHolder*>(data)->bb;
+ BasicBlock* bb = down_cast<PassMEDataHolder*>(data)->bb;
DCHECK(bb != nullptr);
c_unit->mir_graph->DoConstantPropagation(bb);
// No need of repeating, so just return false.