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.