Home | History | Annotate | Download | only in compiler

Lines Matching refs:Node

13 #include "src/compiler/node-matchers.h"
14 #include "src/compiler/node-properties.h"
27 Reduction JSIntrinsicLowering::Reduce(Node* node) {
28 if (node->opcode() != IrOpcode::kJSCallRuntime) return NoChange();
30 Runtime::FunctionForId(CallRuntimeParametersOf(node->op()).id());
34 return ReduceCreateIterResultObject(node);
36 return ReduceDebugIsActive(node);
38 return ReduceDeoptimizeNow(node);
40 return ReduceGeneratorClose(node);
42 return ReduceGeneratorGetInputOrDebugPos(node);
44 return ReduceGeneratorGetResumeMode(node);
46 return ReduceGeneratorGetContext(node);
48 return ReduceIsInstanceType(node, JS_ARRAY_TYPE);
50 return ReduceIsInstanceType(node, JS_TYPED_ARRAY_TYPE);
52 return ReduceIsInstanceType(node, JS_PROXY_TYPE);
54 return ReduceIsJSReceiver(node);
56 return ReduceIsSmi(node);
58 return ReduceFixedArrayGet(node);
60 return ReduceFixedArraySet(node);
62 return ReduceSubString(node);
64 return ReduceToInteger(node);
66 return ReduceToLength(node);
68 return ReduceToNumber(node);
70 return ReduceToObject(node);
72 return ReduceToString(node);
74 return ReduceCall(node);
76 return ReduceGetSuperConstructor(node);
79 node, AccessBuilder::ForJSArrayBufferViewByteLength());
82 node, AccessBuilder::ForJSArrayBufferViewByteOffset());
84 return ReduceMaxSmi(node);
86 return ReduceArrayBufferViewField(node,
89 return ReduceTypedArrayMaxSizeInHeap(node);
91 return ReduceJSCollectionGetTable(node);
93 return ReduceStringGetRawHashField(node);
95 return ReduceTheHole(node);
97 return ReduceClassOf(node);
105 Reduction JSIntrinsicLowering::ReduceCreateIterResultObject(Node* node) {
106 Node* const value = NodeProperties::GetValueInput(node, 0);
107 Node* const done = NodeProperties::GetValueInput(node, 1);
108 Node* const context = NodeProperties::GetContextInput(node);
109 Node* const effect = NodeProperties::GetEffectInput(node);
110 return Change(node, javascript()->CreateIterResultObject(), value, done,
114 Reduction JSIntrinsicLowering::ReduceDebugIsActive(Node* node) {
115 Node* const value = jsgraph()->ExternalConstant(
117 Node* const effect = NodeProperties::GetEffectInput(node);
118 Node* const control = NodeProperties::GetControlInput(node);
121 return Change(node, op, value, effect, control);
124 Reduction JSIntrinsicLowering::ReduceDeoptimizeNow(Node* node) {
126 Node* const frame_state = NodeProperties::GetFrameStateInput(node);
127 Node* const effect = NodeProperties::GetEffectInput(node);
128 Node* const control = NodeProperties::GetControlInput(node);
131 Node* deoptimize = graph()->NewNode(
137 node->TrimInputCount(0);
138 NodeProperties::ChangeOp(node, common()->Dead());
139 return Changed(node);
142 Reduction JSIntrinsicLowering::ReduceGeneratorClose(Node* node) {
143 Node* const generator = NodeProperties::GetValueInput(node, 0);
144 Node* const effect = NodeProperties::GetEffectInput(node);
145 Node* const control = NodeProperties::GetControlInput(node);
146 Node* const closed = jsgraph()->Constant(JSGeneratorObject::kGeneratorClosed);
147 Node* const undefined = jsgraph()->UndefinedConstant();
151 ReplaceWithValue(node, undefined, node);
152 NodeProperties::RemoveType(node);
153 return Change(node, op, generator, closed, effect, control);
156 Reduction JSIntrinsicLowering::ReduceGeneratorGetInputOrDebugPos(Node* node) {
157 Node* const generator = NodeProperties::GetValueInput(node, 0);
158 Node* const effect = NodeProperties::GetEffectInput(node);
159 Node* const control = NodeProperties::GetControlInput(node);
163 return Change(node, op, generator, effect, control);
166 Reduction JSIntrinsicLowering::ReduceGeneratorGetContext(Node* node) {
167 Node* const generator = NodeProperties::GetValueInput(node, 0);
168 Node* const effect = NodeProperties::GetEffectInput(node);
169 Node* const control = NodeProperties::GetControlInput(node);
173 return Change(node, op, generator, effect, control);
176 Reduction JSIntrinsicLowering::ReduceGeneratorGetResumeMode(Node* node) {
177 Node* const generator = NodeProperties::GetValueInput(node, 0);
178 Node* const effect = NodeProperties::GetEffectInput(node);
179 Node* const control = NodeProperties::GetControlInput(node);
183 return Change(node, op, generator, effect, control);
187 Node* node, InstanceType instance_type) {
193 Node* value = NodeProperties::GetValueInput(node, 0);
194 Node* effect = NodeProperties::GetEffectInput(node);
195 Node* control = NodeProperties::GetControlInput(node);
197 Node* check = graph()->NewNode(simplified()->ObjectIsSmi(), value);
198 Node* branch = graph()->NewNode(common()->Branch(), check, control);
200 Node* if_true = graph()->NewNode(common()->IfTrue(), branch);
201 Node* etrue = effect;
202 Node* vtrue = jsgraph()->FalseConstant();
204 Node* if_false = graph()->NewNode(common()->IfFalse(), branch);
205 Node* efalse = graph()->NewNode(
210 Node* vfalse = graph()->NewNode(simplified()->NumberEqual(), efalse,
213 Node* merge = graph()->NewNode(common()->Merge(2), if_true, if_false);
215 // Replace all effect uses of {node} with the {ephi}.
216 Node* ephi = graph()->NewNode(common()->EffectPhi(2), etrue, efalse, merge);
217 ReplaceWithValue(node, node, ephi);
219 // Turn the {node} into a Phi.
220 return Change(node, common()->Phi(MachineRepresentation::kTagged, 2), vtrue,
225 Reduction JSIntrinsicLowering::ReduceIsJSReceiver(Node* node) {
226 return Change(node, simplified()->ObjectIsReceiver());
230 Reduction JSIntrinsicLowering::ReduceIsSmi(Node* node) {
231 return Change(node, simplified()->ObjectIsSmi());
235 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op) {
236 // Replace all effect uses of {node} with the effect dependency.
237 RelaxEffectsAndControls(node);
239 NodeProperties::RemoveNonValueInputs(node);
241 NodeProperties::ChangeOp(node, op);
242 return Changed(node);
246 Reduction JSIntrinsicLowering::ReduceFixedArrayGet(Node* node) {
247 Node* base = node->InputAt(0);
248 Node* index = node->InputAt(1);
249 Node* effect = NodeProperties::GetEffectInput(node);
250 Node* control = NodeProperties::GetControlInput(node);
252 node, simplified()->LoadElement(AccessBuilder::ForFixedArrayElement()),
257 Reduction JSIntrinsicLowering::ReduceFixedArraySet(Node* node) {
258 Node* base = node->InputAt(0);
259 Node* index = node->InputAt(1);
260 Node* value = node->InputAt(2);
261 Node* effect = NodeProperties::GetEffectInput(node);
262 Node* control = NodeProperties::GetControlInput(node);
263 Node* store = (graph()->NewNode(
266 ReplaceWithValue(node, value, store);
271 Reduction JSIntrinsicLowering::ReduceSubString(Node* node) {
272 return Change(node, CodeFactory::SubString(isolate()), 3);
276 Reduction JSIntrinsicLowering::ReduceToInteger(Node* node) {
277 NodeProperties::ChangeOp(node, javascript()->ToInteger());
278 return Changed(node);
282 Reduction JSIntrinsicLowering::ReduceToNumber(Node* node) {
283 NodeProperties::ChangeOp(node, javascript()->ToNumber());
284 return Changed(node);
288 Reduction JSIntrinsicLowering::ReduceToLength(Node* node) {
289 NodeProperties::ChangeOp(node, javascript()->ToLength());
290 return Changed(node);
294 Reduction JSIntrinsicLowering::ReduceToObject(Node* node) {
295 NodeProperties::ChangeOp(node, javascript()->ToObject());
296 return Changed(node);
300 Reduction JSIntrinsicLowering::ReduceToString(Node* node) {
301 NodeProperties::ChangeOp(node, javascript()->ToString());
302 return Changed(node);
306 Reduction JSIntrinsicLowering::ReduceCall(Node* node) {
307 size_t const arity = CallRuntimeParametersOf(node->op()).arity();
309 node,
312 return Changed(node);
315 Reduction JSIntrinsicLowering::ReduceGetSuperConstructor(Node* node) {
316 Node* active_function = NodeProperties::GetValueInput(node, 0);
317 Node* effect = NodeProperties::GetEffectInput(node);
318 Node* control = NodeProperties::GetControlInput(node);
319 Node* active_function_map = effect =
322 return Change(node, simplified()->LoadField(AccessBuilder::ForMapPrototype()),
327 Node* node, FieldAccess const& access) {
328 Node* receiver = NodeProperties::GetValueInput(node, 0);
329 Node* effect = NodeProperties::GetEffectInput(node);
330 Node* control = NodeProperties::GetControlInput(node);
333 Node* value = effect = graph()->NewNode(simplified()->LoadField(access),
337 Node* receiver_buffer = effect = graph()->NewNode(
340 Node* check = effect = graph()->NewNode(
348 ReplaceWithValue(node, value, effect, control);
352 Reduction JSIntrinsicLowering::ReduceMaxSmi(Node* node) {
353 Node* value = jsgraph()->Constant(Smi::kMaxValue);
354 ReplaceWithValue(node, value);
358 Reduction JSIntrinsicLowering::ReduceTypedArrayMaxSizeInHeap(Node* node) {
359 Node* value = jsgraph()->Constant(FLAG_typed_array_max_size_in_heap);
360 ReplaceWithValue(node, value);
364 Reduction JSIntrinsicLowering::ReduceJSCollectionGetTable(Node* node) {
365 Node* collection = NodeProperties::GetValueInput(node, 0);
366 Node* effect = NodeProperties::GetEffectInput(node);
367 Node* control = NodeProperties::GetControlInput(node);
368 return Change(node,
373 Reduction JSIntrinsicLowering::ReduceStringGetRawHashField(Node* node) {
374 Node* string = NodeProperties::GetValueInput(node, 0);
375 Node* effect = NodeProperties::GetEffectInput(node);
376 Node* control = NodeProperties::GetControlInput(node);
377 return Change(node,
382 Reduction JSIntrinsicLowering::ReduceTheHole(Node* node) {
383 Node* value = jsgraph()->TheHoleConstant();
384 ReplaceWithValue(node, value);
388 Reduction JSIntrinsicLowering::ReduceClassOf(Node* node) {
389 RelaxEffectsAndControls(node);
390 node->TrimInputCount(2);
391 NodeProperties::ChangeOp(node, javascript()->ClassOf());
392 return Changed(node);
395 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a,
396 Node* b) {
397 RelaxControls(node);
398 node->ReplaceInput(0, a);
399 node->ReplaceInput(1, b);
400 node->TrimInputCount(2);
401 NodeProperties::ChangeOp(node, op);
402 return Changed(node);
406 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a,
407 Node* b, Node* c) {
408 RelaxControls(node);
409 node->ReplaceInput(0, a);
410 node->ReplaceInput(1, b);
411 node->ReplaceInput(2, c);
412 node->TrimInputCount(3);
413 NodeProperties::ChangeOp(node, op);
414 return Changed(node);
418 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a,
419 Node* b, Node* c, Node* d) {
420 RelaxControls(node);
421 node->ReplaceInput(0, a);
422 node->ReplaceInput(1, b);
423 node->ReplaceInput(2, c);
424 node->ReplaceInput(3, d);
425 node->TrimInputCount(4);
426 NodeProperties::ChangeOp(node, op);
427 return Changed(node);
431 Reduction JSIntrinsicLowering::Change(Node* node, Callable const& callable,
435 CallDescriptor::kNeedsFrameState, node
436 node->InsertInput(graph()->zone(), 0,
438 NodeProperties::ChangeOp(node, common()->Call(desc));
439 return Changed(node);