Lines Matching refs:node
8 #include "src/compiler/node.h"
19 // A facade that simplifies access to the different kinds of inputs to a node.
25 // 0 [ values, context, frame state, effects, control ] node->InputCount()
27 static int FirstValueIndex(Node* node) { return 0; }
28 static int FirstContextIndex(Node* node) { return PastValueIndex(node); }
29 static int FirstFrameStateIndex(Node* node) { return PastContextIndex(node); }
30 static int FirstEffectIndex(Node* node) { return PastFrameStateIndex(node); }
31 static int FirstControlIndex(Node* node) { return PastEffectIndex(node); }
32 static int PastValueIndex(Node* node);
33 static int PastContextIndex(Node* node);
34 static int PastFrameStateIndex(Node* node);
35 static int PastEffectIndex(Node* node);
36 static int PastControlIndex(Node* node);
42 static Node* GetValueInput(Node* node, int index);
43 static Node* GetContextInput(Node* node);
44 static Node* GetFrameStateInput(Node* node, int index);
45 static Node* GetEffectInput(Node* node, int index = 0);
46 static Node* GetControlInput(Node* node, int index = 0);
62 static bool IsCommon(Node* node) {
63 return IrOpcode::IsCommonOpcode(node->opcode());
65 static bool IsControl(Node* node) {
66 return IrOpcode::IsControlOpcode(node->opcode());
68 static bool IsConstant(Node* node) {
69 return IrOpcode::IsConstantOpcode(node->opcode());
71 static bool IsPhi(Node* node) {
72 return IrOpcode::IsPhiOpcode(node->opcode());
75 // Determines whether exceptions thrown by the given node are handled locally
77 static bool IsExceptionalCall(Node* node);
82 static void ReplaceValueInput(Node* node, Node* value, int index);
83 static void ReplaceContextInput(Node* node, Node* context);
84 static void ReplaceControlInput(Node* node, Node* control, int index = 0);
85 static void ReplaceEffectInput(Node* node, Node* effect, int index = 0);
86 static void ReplaceFrameStateInput(Node* node, int index, Node* frame_state);
87 static void RemoveNonValueInputs(Node* node);
88 static void RemoveValueInputs(Node* node);
90 // Replaces all value inputs of {node} with the single input {value}.
91 static void ReplaceValueInputs(Node* node, Node* value);
93 // Merge the control node {node} into the end of the graph, introducing a
94 // merge node or expanding an existing merge node if necessary.
96 Node* node);
98 // Replace all uses of {node} with the given replacement nodes. All occurring
101 static void ReplaceUses(Node* node, Node* value, Node* effect = nullptr,
102 Node* success = nullptr, Node* exception = nullptr);
104 // Safe wrapper to mutate the operator of a node. Checks that the node is
106 static void ChangeOp(Node* node, const Operator* new_op);
111 // Find the last frame state that is effect-wise before the given node. This
112 // assumes a linear effect-chain up to a {CheckPoint} node in the graph.
113 static Node* FindFrameStateBefore(Node* node);
116 static Node* FindProjection(Node* node, size_t projection_index);
118 // Collect the branch-related projections from a node, such as IfTrue,
123 static void CollectControlProjections(Node* node, Node** proj, size_t count);
128 // Try to retrieve the specialization context from the given {node},
132 Node* node, MaybeHandle<Context> context = MaybeHandle<Context>());
135 // {node}, optionally utilizing the knowledge about the (outermost)
138 Node* node, MaybeHandle<Context> native_context = MaybeHandle<Context>());
141 // {node}, optionally utilizing the knowledge about the (outermost)
144 Node* node, MaybeHandle<Context> native_context = MaybeHandle<Context>());
149 static bool IsTyped(Node* node) { return node->type() != nullptr; }
150 static Type* GetType(Node* node) {
151 DCHECK(IsTyped(node));
152 return node->type();
154 static Type* GetTypeOrAny(Node* node);
155 static void SetType(Node* node, Type* type) {
157 node->set_type(type);
159 static void RemoveType(Node* node) { node->set_type(nullptr); }
160 static bool AllValueInputsAreTyped(Node* node);