Lines Matching refs:node

14 #include "src/compiler/node-matchers.h"
15 #include "src/compiler/node-properties.h"
29 Reduction JSIntrinsicLowering::Reduce(Node* node) {
30 if (node->opcode() != IrOpcode::kJSCallRuntime) return NoChange();
32 Runtime::FunctionForId(CallRuntimeParametersOf(node->op()).id());
35 return ReduceIsBeingInterpreted(node);
37 return ReduceTurbofanStaticAssert(node);
39 return ReduceVerifyType(node);
46 return ReduceCopyDataProperties(node);
48 return ReduceCopyDataPropertiesWithExcludedPropertiesOnStack(node);
50 return ReduceCreateIterResultObject(node);
52 return ReduceDeoptimizeNow(node);
54 return ReduceGeneratorClose(node);
56 return ReduceCreateJSGeneratorObject(node);
58 return ReduceAsyncFunctionAwaitCaught(node);
60 return ReduceAsyncFunctionAwaitUncaught(node);
62 return ReduceAsyncFunctionEnter(node);
64 return ReduceAsyncFunctionReject(node);
66 return ReduceAsyncFunctionResolve(node);
68 return ReduceAsyncGeneratorAwaitCaught(node);
70 return ReduceAsyncGeneratorAwaitUncaught(node);
72 return ReduceAsyncGeneratorReject(node);
74 return ReduceAsyncGeneratorResolve(node);
76 return ReduceAsyncGeneratorYield(node);
78 return ReduceGeneratorGetResumeMode(node);
80 return ReduceIncBlockCounter(node);
82 return ReduceGetImportMetaObject(node);
89 Reduction JSIntrinsicLowering::ReduceCopyDataProperties(Node* node) {
91 node, Builtins::CallableFor(isolate(), Builtin::kCopyDataProperties), 0);
96 Node* node) {
98 static_cast<int>(CallRuntimeParametersOf(node->op()).arity());
104 node->op()->properties());
105 node->InsertInput(graph()->zone(), 0,
107 node->InsertInput(graph()->zone(), 2,
109 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
110 return Changed(node);
113 Reduction JSIntrinsicLowering::ReduceCreateIterResultObject(Node* node) {
114 Node* const value = NodeProperties::GetValueInput(node, 0);
115 Node* const done = NodeProperties::GetValueInput(node, 1);
116 Node* const context = NodeProperties::GetContextInput(node);
117 Node* const effect = NodeProperties::GetEffectInput(node);
118 return Change(node, javascript()->CreateIterResultObject(), value, done,
122 Reduction JSIntrinsicLowering::ReduceDeoptimizeNow(Node* node) {
123 Node* const frame_state = NodeProperties::GetFrameStateInput(node);
124 Node* const effect = NodeProperties::GetEffectInput(node);
125 Node* const control = NodeProperties::GetControlInput(node);
134 node->TrimInputCount(0);
135 NodeProperties::ChangeOp(node, common()->Dead());
136 return Changed(node);
139 Reduction JSIntrinsicLowering::ReduceCreateJSGeneratorObject(Node* node) {
140 Node* const closure = NodeProperties::GetValueInput(node, 0);
141 Node* const receiver = NodeProperties::GetValueInput(node, 1);
142 Node* const context = NodeProperties::GetContextInput(node);
143 Node* const effect = NodeProperties::GetEffectInput(node);
144 Node* const control = NodeProperties::GetControlInput(node);
148 ReplaceWithValue(node, create_generator, create_generator);
152 Reduction JSIntrinsicLowering::ReduceGeneratorClose(Node* node) {
153 Node* const generator = NodeProperties::GetValueInput(node, 0);
154 Node* const effect = NodeProperties::GetEffectInput(node);
155 Node* const control = NodeProperties::GetControlInput(node);
161 ReplaceWithValue(node, undefined, node);
162 NodeProperties::RemoveType(node);
163 return Change(node, op, generator, closed, effect, control);
166 Reduction JSIntrinsicLowering::ReduceAsyncFunctionAwaitCaught(Node* node) {
168 node,
172 Reduction JSIntrinsicLowering::ReduceAsyncFunctionAwaitUncaught(Node* node) {
174 node,
179 Reduction JSIntrinsicLowering::ReduceAsyncFunctionEnter(Node* node) {
180 NodeProperties::ChangeOp(node, javascript()->AsyncFunctionEnter());
181 return Changed(node);
184 Reduction JSIntrinsicLowering::ReduceAsyncFunctionReject(Node* node) {
185 RelaxControls(node);
186 NodeProperties::ChangeOp(node, javascript()->AsyncFunctionReject());
187 return Changed(node);
190 Reduction JSIntrinsicLowering::ReduceAsyncFunctionResolve(Node* node) {
191 RelaxControls(node);
192 NodeProperties::ChangeOp(node, javascript()->AsyncFunctionResolve());
193 return Changed(node);
196 Reduction JSIntrinsicLowering::ReduceAsyncGeneratorAwaitCaught(Node* node) {
198 node,
202 Reduction JSIntrinsicLowering::ReduceAsyncGeneratorAwaitUncaught(Node* node) {
204 node,
209 Reduction JSIntrinsicLowering::ReduceAsyncGeneratorReject(Node* node) {
211 node, Builtins::CallableFor(isolate(), Builtin::kAsyncGeneratorReject),
215 Reduction JSIntrinsicLowering::ReduceAsyncGeneratorResolve(Node* node) {
217 node, Builtins::CallableFor(isolate(), Builtin::kAsyncGeneratorResolve),
221 Reduction JSIntrinsicLowering::ReduceAsyncGeneratorYield(Node* node) {
223 node, Builtins::CallableFor(isolate(), Builtin::kAsyncGeneratorYield), 0);
226 Reduction JSIntrinsicLowering::ReduceGeneratorGetResumeMode(Node* node) {
227 Node* const generator = NodeProperties::GetValueInput(node, 0);
228 Node* const effect = NodeProperties::GetEffectInput(node);
229 Node* const control = NodeProperties::GetControlInput(node);
233 return Change(node, op, generator, effect, control);
237 Node* node, InstanceType instance_type) {
243 Node* value = NodeProperties::GetValueInput(node, 0);
244 Node* effect = NodeProperties::GetEffectInput(node);
245 Node* control = NodeProperties::GetControlInput(node);
268 // Replace all effect uses of {node} with the {ephi}.
270 ReplaceWithValue(node, node, ephi, merge);
272 // Turn the {node} into a Phi.
273 return Change(node, common()->Phi(MachineRepresentation::kTagged, 2), vtrue,
277 Reduction JSIntrinsicLowering::ReduceIsJSReceiver(Node* node) {
278 return Change(node, simplified()->ObjectIsReceiver());
281 Reduction JSIntrinsicLowering::ReduceTurbofanStaticAssert(Node* node) {
284 RelaxEffectsAndControls(node);
286 Node* value = NodeProperties::GetValueInput(node, 0);
287 Node* effect = NodeProperties::GetEffectInput(node);
290 ReplaceWithValue(node, node, assert, nullptr);
295 Reduction JSIntrinsicLowering::ReduceVerifyType(Node* node) {
296 return Change(node, simplified()->VerifyType());
299 Reduction JSIntrinsicLowering::ReduceIsBeingInterpreted(Node* node) {
300 RelaxEffectsAndControls(node);
304 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op) {
305 // Replace all effect uses of {node} with the effect dependency.
306 RelaxEffectsAndControls(node);
308 NodeProperties::RemoveNonValueInputs(node);
310 NodeProperties::ChangeOp(node, op);
311 return Changed(node);
314 Reduction JSIntrinsicLowering::ReduceToLength(Node* node) {
315 NodeProperties::ChangeOp(node, javascript()->ToLength());
316 return Changed(node);
319 Reduction JSIntrinsicLowering::ReduceToObject(Node* node) {
320 NodeProperties::ChangeOp(node, javascript()->ToObject());
321 return Changed(node);
324 Reduction JSIntrinsicLowering::ReduceToString(Node* node) {
326 HeapObjectMatcher m(NodeProperties::GetValueInput(node, 0));
328 ReplaceWithValue(node, m.node());
329 return Replace(m.node());
331 NodeProperties::ChangeOp(node, javascript()->ToString());
332 return Changed(node);
335 Reduction JSIntrinsicLowering::ReduceCall(Node* node) {
337 static_cast<int>(CallRuntimeParametersOf(node->op()).arity());
341 node->InsertInput(graph()->zone(), arity, feedback);
343 node,
345 return Changed(node);
348 Reduction JSIntrinsicLowering::ReduceIncBlockCounter(Node* node) {
351 return Change(node,
356 Reduction JSIntrinsicLowering::ReduceGetImportMetaObject(Node* node) {
357 NodeProperties::ChangeOp(node, javascript()->GetImportMeta());
358 return Changed(node);
361 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a,
363 RelaxControls(node);
364 node->ReplaceInput(0, a);
365 node->ReplaceInput(1, b);
366 node->TrimInputCount(2);
367 NodeProperties::ChangeOp(node, op);
368 return Changed(node);
371 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a,
373 RelaxControls(node);
374 node->ReplaceInput(0, a);
375 node->ReplaceInput(1, b);
376 node->ReplaceInput(2, c);
377 node->TrimInputCount(3);
378 NodeProperties::ChangeOp(node, op);
379 return Changed(node);
382 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a,
384 RelaxControls(node);
385 node->ReplaceInput(0, a);
386 node->ReplaceInput(1, b);
387 node->ReplaceInput(2, c);
388 node->ReplaceInput(3, d);
389 node->TrimInputCount(4);
390 NodeProperties::ChangeOp(node, op);
391 return Changed(node);
394 Reduction JSIntrinsicLowering::Change(Node* node, Callable const& callable,
402 node->op()->properties());
403 node->InsertInput(graph()->zone(), 0,
405 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
406 return Changed(node);