Reviewers: titzer,

Description:
[turbofan] Turn LoadElimination into an AdvancedReducer.

This in turn allows usage of AdvancedReducer::ReplaceWithValue which
has access to the underlying graph reducer.

[email protected]

Please review this at https://codereview.chromium.org/1158723005/

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+8, -6 lines):
  M src/compiler/load-elimination.h
  M src/compiler/load-elimination.cc
  M src/compiler/pipeline.cc
  M test/unittests/compiler/load-elimination-unittest.cc


Index: src/compiler/load-elimination.cc
diff --git a/src/compiler/load-elimination.cc b/src/compiler/load-elimination.cc index b76b187d5d1942571b7f36f132f0f710f19fa6f6..c78a283ca097847202e1b66ff79c62723ffbb133 100644
--- a/src/compiler/load-elimination.cc
+++ b/src/compiler/load-elimination.cc
@@ -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: src/compiler/load-elimination.h
diff --git a/src/compiler/load-elimination.h b/src/compiler/load-elimination.h index 7f819dc94cec39f517d02deebffd6e857ab2ab60..db87d9a082095432fbcd14c5ccfe6fe80fc53305 100644
--- a/src/compiler/load-elimination.h
+++ b/src/compiler/load-elimination.h
@@ -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: src/compiler/pipeline.cc
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc
index 20f3d60daab8cd33f27a6c5d61c3be0fd71a4fc7..1d9b329c5be6354eeec9f8dcb3031bc2f6da32b7 100644
--- a/src/compiler/pipeline.cc
+++ b/src/compiler/pipeline.cc
@@ -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: test/unittests/compiler/load-elimination-unittest.cc
diff --git a/test/unittests/compiler/load-elimination-unittest.cc b/test/unittests/compiler/load-elimination-unittest.cc index 52c3143e2aebe78caa4f8728f3170e51618b0ed2..3ad11cf43fd924a5d6f514bc5503f7184fc626b4 100644
--- a/test/unittests/compiler/load-elimination-unittest.cc
+++ b/test/unittests/compiler/load-elimination-unittest.cc
@@ -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);
   }



--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to