Revision: 19150
Author: bmeu...@chromium.org
Date: Thu Feb 6 12:35:17 2014 UTC
Log: Cosmetic cleanup for GVN.
R=hpa...@chromium.org
Review URL: https://codereview.chromium.org/153563006
http://code.google.com/p/v8/source/detail?r=19150
Modified:
/branches/bleeding_edge/src/hydrogen-gvn.cc
/branches/bleeding_edge/src/hydrogen-gvn.h
=======================================
--- /branches/bleeding_edge/src/hydrogen-gvn.cc Thu Feb 6 09:54:59 2014 UTC
+++ /branches/bleeding_edge/src/hydrogen-gvn.cc Thu Feb 6 12:35:17 2014 UTC
@@ -364,47 +364,48 @@
HGlobalValueNumberingPhase::HGlobalValueNumberingPhase(HGraph* graph)
- : HPhase("H_Global value numbering", graph),
- removed_side_effects_(false),
- block_side_effects_(graph->blocks()->length(), zone()),
- loop_side_effects_(graph->blocks()->length(), zone()),
- visited_on_paths_(graph->blocks()->length(), zone()) {
- ASSERT(!AllowHandleAllocation::IsAllowed());
- block_side_effects_.AddBlock(GVNFlagSet(), graph->blocks()->length(),
- zone());
- loop_side_effects_.AddBlock(GVNFlagSet(), graph->blocks()->length(),
+ : HPhase("H_Global value numbering", graph),
+ removed_side_effects_(false),
+ block_side_effects_(graph->blocks()->length(), zone()),
+ loop_side_effects_(graph->blocks()->length(), zone()),
+ visited_on_paths_(graph->blocks()->length(), zone()) {
+ ASSERT(!AllowHandleAllocation::IsAllowed());
+ block_side_effects_.AddBlock(GVNFlagSet(), graph->blocks()->length(),
zone());
+ loop_side_effects_.AddBlock(GVNFlagSet(), graph->blocks()->length(),
+ zone());
}
-void HGlobalValueNumberingPhase::Reset() {
- ASSERT(block_side_effects_.length() == graph()->blocks()->length());
- ASSERT(loop_side_effects_.length() == graph()->blocks()->length());
- for (int i = 0; i < graph()->blocks()->length(); ++i) {
- block_side_effects_[i] = GVNFlagSet();
- loop_side_effects_[i] = GVNFlagSet();
- }
- visited_on_paths_.Clear();
-}
+void HGlobalValueNumberingPhase::Run() {
+ ASSERT(!removed_side_effects_);
+ for (int i = FLAG_gvn_iterations; i > 0; --i) {
+ // Compute the side effects.
+ ComputeBlockSideEffects();
+
+ // Perform loop invariant code motion if requested.
+ if (FLAG_loop_invariant_code_motion) LoopInvariantCodeMotion();
+
+ // Perform the actual value numbering.
+ AnalyzeGraph();
+ // Continue GVN if we removed any side effects.
+ if (!removed_side_effects_) break;
+ removed_side_effects_ = false;
-void HGlobalValueNumberingPhase::Analyze() {
- removed_side_effects_ = false;
- ComputeBlockSideEffects();
- if (FLAG_loop_invariant_code_motion) {
- LoopInvariantCodeMotion();
+ // Clear all side effects.
+ ASSERT_EQ(block_side_effects_.length(), graph()->blocks()->length());
+ ASSERT_EQ(loop_side_effects_.length(), graph()->blocks()->length());
+ for (int i = 0; i < graph()->blocks()->length(); ++i) {
+ block_side_effects_[i].RemoveAll();
+ loop_side_effects_[i].RemoveAll();
+ }
+ visited_on_paths_.Clear();
}
- AnalyzeGraph();
}
void HGlobalValueNumberingPhase::ComputeBlockSideEffects() {
- // The Analyze phase of GVN can be called multiple times. Clear loop side
- // effects before computing them to erase the contents from previous
Analyze
- // passes.
- for (int i = 0; i < loop_side_effects_.length(); ++i) {
- loop_side_effects_[i].RemoveAll();
- }
for (int i = graph()->blocks()->length() - 1; i >= 0; --i) {
// Compute side effects for the block.
HBasicBlock* block = graph()->blocks()->at(i);
=======================================
--- /branches/bleeding_edge/src/hydrogen-gvn.h Wed Feb 5 17:21:34 2014 UTC
+++ /branches/bleeding_edge/src/hydrogen-gvn.h Thu Feb 6 12:35:17 2014 UTC
@@ -41,18 +41,9 @@
public:
explicit HGlobalValueNumberingPhase(HGraph* graph);
- void Run() {
- int max_fixpoint_iteration_count = FLAG_gvn_iterations;
- for (int i = 0; i < max_fixpoint_iteration_count; i++) {
- Analyze();
- if (!removed_side_effects_) break;
- Reset();
- }
- }
+ void Run();
private:
- void Reset();
- void Analyze();
GVNFlagSet CollectSideEffectsOnPathsToDominatedBlock(
HBasicBlock* dominator,
HBasicBlock* dominated);
--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.