mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
// Copyright 2015 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef V8_COMPILER_DEAD_CODE_ELIMINATION_H_
|
|
#define V8_COMPILER_DEAD_CODE_ELIMINATION_H_
|
|
|
|
#include "src/compiler/graph-reducer.h"
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
namespace compiler {
|
|
|
|
// Forward declarations.
|
|
class CommonOperatorBuilder;
|
|
|
|
|
|
// Propagates {Dead} control through the graph and thereby removes dead code.
|
|
// Note that this does not include trimming dead uses from the graph, and it
|
|
// also does not include detecting dead code by any other means than seeing a
|
|
// {Dead} control input; that is left to other reducers.
|
|
class DeadCodeElimination final : public AdvancedReducer {
|
|
public:
|
|
DeadCodeElimination(Editor* editor, Graph* graph,
|
|
CommonOperatorBuilder* common);
|
|
~DeadCodeElimination() final {}
|
|
|
|
Reduction Reduce(Node* node) final;
|
|
|
|
private:
|
|
Reduction ReduceEnd(Node* node);
|
|
Reduction ReduceLoopOrMerge(Node* node);
|
|
Reduction ReduceNode(Node* node);
|
|
|
|
void TrimMergeOrPhi(Node* node, int size);
|
|
|
|
Graph* graph() const { return graph_; }
|
|
CommonOperatorBuilder* common() const { return common_; }
|
|
Node* dead() const { return dead_; }
|
|
|
|
Graph* const graph_;
|
|
CommonOperatorBuilder* const common_;
|
|
Node* const dead_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(DeadCodeElimination);
|
|
};
|
|
|
|
} // namespace compiler
|
|
} // namespace internal
|
|
} // namespace v8
|
|
|
|
#endif // V8_COMPILER_DEAD_CODE_ELIMINATION_H_
|
|
|