Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(708)

Unified Diff: runtime/vm/flow_graph_optimizer.h

Issue 1679853002: VM: Move redundancy elimination phases into a separate file. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fixed indentation Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/flow_graph.cc ('k') | runtime/vm/flow_graph_optimizer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/flow_graph_optimizer.h
diff --git a/runtime/vm/flow_graph_optimizer.h b/runtime/vm/flow_graph_optimizer.h
index 95605784c12bc5055aebfc51210b99f1071b78fe..9bbcbdffabff4bd35490efee99616367d5c21726 100644
--- a/runtime/vm/flow_graph_optimizer.h
+++ b/runtime/vm/flow_graph_optimizer.h
@@ -283,138 +283,6 @@ class FlowGraphOptimizer : public FlowGraphVisitor {
};
-// Loop invariant code motion.
-class LICM : public ValueObject {
- public:
- explicit LICM(FlowGraph* flow_graph);
-
- void Optimize();
-
- void OptimisticallySpecializeSmiPhis();
-
- private:
- FlowGraph* flow_graph() const { return flow_graph_; }
-
- void Hoist(ForwardInstructionIterator* it,
- BlockEntryInstr* pre_header,
- Instruction* current);
-
- void TrySpecializeSmiPhi(PhiInstr* phi,
- BlockEntryInstr* header,
- BlockEntryInstr* pre_header);
-
- FlowGraph* const flow_graph_;
-};
-
-
-// A simple common subexpression elimination based
-// on the dominator tree.
-class DominatorBasedCSE : public AllStatic {
- public:
- // Return true, if the optimization changed the flow graph.
- // False, if nothing changed.
- static bool Optimize(FlowGraph* graph);
-
- private:
- static bool OptimizeRecursive(
- FlowGraph* graph,
- BlockEntryInstr* entry,
- CSEInstructionMap* map);
-};
-
-
-class DeadStoreElimination : public AllStatic {
- public:
- static void Optimize(FlowGraph* graph);
-};
-
-
-class DeadCodeElimination : public AllStatic {
- public:
- static void EliminateDeadPhis(FlowGraph* graph);
-};
-
-
-class AllocationSinking : public ZoneAllocated {
- public:
- explicit AllocationSinking(FlowGraph* flow_graph)
- : flow_graph_(flow_graph),
- candidates_(5),
- materializations_(5) { }
-
- const GrowableArray<Definition*>& candidates() const {
- return candidates_;
- }
-
- // Find the materialization insterted for the given allocation
- // at the given exit.
- MaterializeObjectInstr* MaterializationFor(Definition* alloc,
- Instruction* exit);
-
- void Optimize();
-
- void DetachMaterializations();
-
- private:
- // Helper class to collect deoptimization exits that might need to
- // rematerialize an object: that is either instructions that reference
- // this object explicitly in their deoptimization environment or
- // reference some other allocation sinking candidate that points to
- // this object.
- class ExitsCollector : public ValueObject {
- public:
- ExitsCollector() : exits_(10), worklist_(3) { }
-
- const GrowableArray<Instruction*>& exits() const { return exits_; }
-
- void CollectTransitively(Definition* alloc);
-
- private:
- // Collect immediate uses of this object in the environments.
- // If this object is stored into other allocation sinking candidates
- // put them onto worklist so that CollectTransitively will process them.
- void Collect(Definition* alloc);
-
- GrowableArray<Instruction*> exits_;
- GrowableArray<Definition*> worklist_;
- };
-
- void CollectCandidates();
-
- void NormalizeMaterializations();
-
- void RemoveUnusedMaterializations();
-
- void DiscoverFailedCandidates();
-
- void InsertMaterializations(Definition* alloc);
-
- void CreateMaterializationAt(
- Instruction* exit,
- Definition* alloc,
- const ZoneGrowableArray<const Object*>& fields);
-
- void EliminateAllocation(Definition* alloc);
-
- Isolate* isolate() const { return flow_graph_->isolate(); }
- Zone* zone() const { return flow_graph_->zone(); }
-
- FlowGraph* flow_graph_;
-
- GrowableArray<Definition*> candidates_;
- GrowableArray<MaterializeObjectInstr*> materializations_;
-
- ExitsCollector exits_collector_;
-};
-
-
-// Optimize spill stores inside try-blocks by identifying values that always
-// contain a single known constant at catch block entry.
-class TryCatchAnalyzer : public AllStatic {
- public:
- static void Optimize(FlowGraph* flow_graph);
-};
-
} // namespace dart
#endif // VM_FLOW_GRAPH_OPTIMIZER_H_
« no previous file with comments | « runtime/vm/flow_graph.cc ('k') | runtime/vm/flow_graph_optimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698