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}
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;
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?
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;
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(
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);
}