5#ifndef V8_COMPILER_GRAPH_REDUCER_H_
6#define V8_COMPILER_GRAPH_REDUCER_H_
24class ObserveNodeManager;
41 if (next.
Changed())
return next;
68 virtual void Finalize();
120 Node* control =
nullptr) {
163 void AddReducer(
Reducer* reducer);
166 void ReduceNode(
Node*
const);
171 enum class State : uint8_t;
183 void Replace(
Node* node,
Node* replacement)
final;
188 void ReplaceWithValue(
Node* node,
Node* value,
Node* effect,
189 Node* control)
final;
198 void Push(
Node* node);
201 bool Recurse(
Node* node);
202 void Revisit(
Node* node)
final;
virtual void Replace(Node *node, Node *replacement, NodeId max_id)=0
virtual ~Editor()=default
virtual void ReplaceWithValue(Node *node, Node *value, Node *effect, Node *control)=0
virtual void Replace(Node *node, Node *replacement)=0
virtual void Revisit(Node *node)=0
void ReplaceWithValue(Node *node, Node *value, Node *effect=nullptr, Node *control=nullptr)
void RelaxEffectsAndControls(Node *node)
void Replace(Node *node, Node *replacement)
void MergeControlToEnd(TFGraph *graph, CommonOperatorBuilder *common, Node *node)
static Reduction Replace(Node *node)
AdvancedReducer(Editor *editor)
void RelaxControls(Node *node, Node *control=nullptr)
void Replace(Node *node, Node *replacement, NodeId max_id)
JSHeapBroker *const broker_
NodeMarker< State > state_
ObserveNodeManager *const observe_node_manager_
TickCounter *const tick_counter_
GraphReducer & operator=(const GraphReducer &)=delete
ZoneVector< Reducer * > reducers_
ZoneStack< NodeState > stack_
ZoneQueue< Node * > revisit_
GraphReducer(const GraphReducer &)=delete
static void MergeControlToEnd(TFGraph *graph, CommonOperatorBuilder *common, Node *node)
virtual ~Reducer()=default
virtual const char * reducer_name() const =0
static Reduction Replace(Node *node)
static Reduction Changed(Node *node)
virtual Reduction Reduce(Node *node)=0
static Reduction NoChange()
Reduction(Node *replacement=nullptr)
Reduction FollowedBy(Reduction next) const
Node * replacement() const
#define NON_EXPORTED_BASE(code)
#define DCHECK_NOT_NULL(val)
#define V8_EXPORT_PRIVATE