[turbofan] Turn LoadElimination into an AdvancedReducer.
authormstarzinger <mstarzinger@chromium.org>
Fri, 5 Jun 2015 16:40:42 +0000 (09:40 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 5 Jun 2015 16:40:58 +0000 (16:40 +0000)
This in turn allows usage of AdvancedReducer::ReplaceWithValue which
has access to the underlying graph reducer.

R=titzer@chromium.org

Review URL: https://codereview.chromium.org/1158723005

Cr-Commit-Position: refs/heads/master@{#28817}

src/compiler/load-elimination.cc
src/compiler/load-elimination.h
src/compiler/pipeline.cc
test/unittests/compiler/load-elimination-unittest.cc

index b76b187..c78a283 100644 (file)
@@ -36,7 +36,7 @@ Reduction LoadElimination::ReduceLoadField(Node* node) {
         if (object == NodeProperties::GetValueInput(effect, 0) &&
             access == FieldAccessOf(effect->op())) {
           Node* const value = effect;
-          NodeProperties::ReplaceWithValue(node, value);
+          ReplaceWithValue(node, value);
           return Replace(value);
         }
         break;
@@ -45,7 +45,7 @@ Reduction LoadElimination::ReduceLoadField(Node* node) {
         if (access == FieldAccessOf(effect->op())) {
           if (object == NodeProperties::GetValueInput(effect, 0)) {
             Node* const value = NodeProperties::GetValueInput(effect, 1);
-            NodeProperties::ReplaceWithValue(node, value);
+            ReplaceWithValue(node, value);
             return Replace(value);
           }
           // TODO(turbofan): Alias analysis to the rescue?
index 7f819dc..db87d9a 100644 (file)
@@ -11,9 +11,9 @@ namespace v8 {
 namespace internal {
 namespace compiler {
 
-class LoadElimination final : public Reducer {
+class LoadElimination final : public AdvancedReducer {
  public:
-  LoadElimination() {}
+  explicit LoadElimination(Editor* editor) : AdvancedReducer(editor) {}
   ~LoadElimination() final;
 
   Reduction Reduce(Node* node) final;
index 20f3d60..1d9b329 100644 (file)
@@ -569,7 +569,7 @@ struct TypedLoweringPhase {
 
   void Run(PipelineData* data, Zone* temp_zone) {
     JSGraphReducer graph_reducer(data->jsgraph(), temp_zone);
-    LoadElimination load_elimination;
+    LoadElimination load_elimination(&graph_reducer);
     JSBuiltinReducer builtin_reducer(&graph_reducer, data->jsgraph());
     JSTypedLowering typed_lowering(&graph_reducer, data->jsgraph(), temp_zone);
     JSIntrinsicLowering intrinsic_lowering(
index 52c3143..3ad11cf 100644 (file)
@@ -19,7 +19,9 @@ class LoadEliminationTest : public GraphTest {
 
  protected:
   Reduction Reduce(Node* node) {
-    LoadElimination reducer;
+    // TODO(titzer): mock the GraphReducer here for better unit testing.
+    GraphReducer graph_reducer(zone(), graph());
+    LoadElimination reducer(&graph_reducer);
     return reducer.Reduce(node);
   }