Lines Matching refs:node
16 #include "src/compiler/node-matchers.h"
17 #include "src/compiler/node-properties.h"
32 CallDescriptor::Flags FrameStateFlagForCall(Node* node) {
33 return OperatorProperties::HasFrameStateInput(node->op())
47 Reduction JSGenericLowering::Reduce(Node* node) {
48 switch (node->opcode()) {
51 Lower##x(node); \
59 return Changed(node);
63 void JSGenericLowering::LowerJS##Name(Node* node) { \
64 ReplaceWithBuiltinCall(node, Builtin::k##Name); \
84 void JSGenericLowering::ReplaceWithBuiltinCall(Node* node, Builtin builtin) {
85 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
87 ReplaceWithBuiltinCall(node, callable, flags);
90 void JSGenericLowering::ReplaceWithBuiltinCall(Node* node, Callable callable,
92 ReplaceWithBuiltinCall(node, callable, flags, node->op()->properties());
96 Node* node, Callable callable, CallDescriptor::Flags flags,
103 node->InsertInput(zone(), 0, stub_code);
104 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
107 void JSGenericLowering::ReplaceWithRuntimeCall(Node* node,
110 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
111 Operator::Properties properties = node->op()->properties();
118 node->InsertInput(zone(), 0, jsgraph()->CEntryStubConstant(fun->result_size));
119 node->InsertInput(zone(), nargs + 1, ref);
120 node->InsertInput(zone(), nargs + 2, arity);
121 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
125 Node* node, Builtin builtin_without_feedback,
127 DCHECK(JSOperator::IsUnaryWithFeedback(node->opcode()));
128 const FeedbackParameter& p = FeedbackParameterOf(node->op());
133 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
136 node->op()->properties());
140 DCHECK_EQ(node->op()->ValueInputCount(), 2);
141 node->InsertInput(zone(), 0, stub_code);
142 node->InsertInput(zone(), 2, slot);
143 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
145 node->RemoveInput(JSUnaryOpNode::FeedbackVectorIndex());
146 ReplaceWithBuiltinCall(node, builtin_without_feedback);
151 void JSGenericLowering::LowerJS##Name(Node* node) { \
152 ReplaceUnaryOpWithBuiltinCall(node, Builtin::k##Name, \
162 Node* node, Builtin builtin_without_feedback,
164 DCHECK(JSOperator::IsBinaryWithFeedback(node->opcode()));
166 const FeedbackParameter& p = FeedbackParameterOf(node->op());
172 DCHECK_EQ(node->op()->ValueInputCount(), 3);
173 node->InsertInput(zone(), 2, slot);
176 node->RemoveInput(JSBinaryOpNode::FeedbackVectorIndex());
180 ReplaceWithBuiltinCall(node, builtin);
184 void JSGenericLowering::LowerJS##Name(Node* node) { \
185 ReplaceBinaryOpWithBuiltinCall(node, Builtin::k##Name, \
210 void JSGenericLowering::LowerJSStrictEqual(Node* node) {
212 NodeProperties::ReplaceContextInput(node, jsgraph()->NoContextConstant());
213 DCHECK_EQ(node->op()->ControlInputCount(), 1);
214 node->RemoveInput(NodeProperties::FirstControlIndex(node));
217 const FeedbackParameter& p = FeedbackParameterOf(node->op());
223 DCHECK_EQ(node->op()->ValueInputCount(), 3);
224 node->InsertInput(zone(), 2, slot);
227 node->RemoveInput(JSStrictEqualNode::FeedbackVectorIndex());
232 ReplaceWithBuiltinCall(node, callable, CallDescriptor::kNoFlags,
259 void JSGenericLowering::LowerJSHasProperty(Node* node) {
260 JSHasPropertyNode n(node);
263 node->RemoveInput(JSHasPropertyNode::FeedbackVectorIndex());
264 ReplaceWithBuiltinCall(node, Builtin::kHasProperty);
269 ReplaceWithBuiltinCall(node, Builtin::kKeyedHasIC);
273 void JSGenericLowering::LowerJSLoadProperty(Node* node) {
274 JSLoadPropertyNode n(node);
284 node, ShouldUseMegamorphicLoadBuiltin(p.feedback(), {}, broker())
291 node, ShouldUseMegamorphicLoadBuiltin(p.feedback(), {}, broker())
297 void JSGenericLowering::LowerJSLoadNamed(Node* node) {
298 JSLoadNamedNode n(node);
305 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
306 ReplaceWithBuiltinCall(node, Builtin::kGetProperty);
309 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
310 node->InsertInput(zone(), 2,
312 ReplaceWithBuiltinCall(node, ShouldUseMegamorphicLoadBuiltin(
317 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
318 node->InsertInput(zone(), 2,
320 ReplaceWithBuiltinCall(node, ShouldUseMegamorphicLoadBuiltin(
327 void JSGenericLowering::LowerJSLoadNamedFromSuper(Node* node) {
328 JSLoadNamedFromSuperNode n(node);
330 Node* effect = NodeProperties::GetEffectInput(node);
331 Node* control = NodeProperties::GetControlInput(node);
342 NodeProperties::ReplaceEffectInput(node, effect);
348 node->InsertInput(zone(), 2, jsgraph()->Constant(p.name(broker())));
349 node->InsertInput(zone(), 3,
351 ReplaceWithBuiltinCall(node, Builtin::kLoadSuperIC);
354 void JSGenericLowering::LowerJSLoadGlobal(Node* node) {
355 JSLoadGlobalNode n(node);
357 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
363 node->InsertInput(zone(), 0, jsgraph()->Constant(p.name(broker())));
364 node->InsertInput(zone(), 1,
367 ReplaceWithBuiltinCall(node, callable, flags);
369 node->InsertInput(zone(), 0, jsgraph()->Constant(p.name(broker())));
370 node->InsertInput(zone(), 1,
374 ReplaceWithBuiltinCall(node, callable, flags);
378 void JSGenericLowering::LowerJSGetIterator(Node* node) {
389 JSGetIteratorNode n(node);
396 node->InsertInput(zone(), 1, load_slot);
397 node->InsertInput(zone(), 2, call_slot);
399 ReplaceWithBuiltinCall(node, Builtin::kGetIteratorWithFeedback);
402 void JSGenericLowering::LowerJSSetKeyedProperty(Node* node) {
403 JSSetKeyedPropertyNode n(node);
410 node->InsertInput(zone(), 3,
418 ReplaceWithBuiltinCall(node, Builtin::kKeyedStoreICTrampoline);
420 node->InsertInput(zone(), 3,
422 ReplaceWithBuiltinCall(node, Builtin::kKeyedStoreIC);
426 void JSGenericLowering::LowerJSDefineKeyedOwnProperty(Node* node) {
427 JSDefineKeyedOwnPropertyNode n(node);
434 node->InsertInput(zone(), 3,
436 ReplaceWithBuiltinCall(node, Builtin::kDefineKeyedOwnICTrampoline);
438 node->InsertInput(zone(), 3,
440 ReplaceWithBuiltinCall(node, Builtin::kDefineKeyedOwnIC);
444 void JSGenericLowering::LowerJSSetNamedProperty(Node* node) {
445 JSSetNamedPropertyNode n(node);
452 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
453 ReplaceWithRuntimeCall(node, Runtime::kSetNamedProperty);
456 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
457 node->InsertInput(zone(), 3,
464 ReplaceWithBuiltinCall(node, Builtin::kStoreICTrampoline);
466 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
467 node->InsertInput(zone(), 3,
469 ReplaceWithBuiltinCall(node, Builtin::kStoreIC);
473 void JSGenericLowering::LowerJSDefineNamedOwnProperty(Node* node) {
474 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
475 JSDefineNamedOwnPropertyNode n(node);
482 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
483 node->InsertInput(zone(), 3,
486 ReplaceWithBuiltinCall(node, callable, flags);
488 node->InsertInput(zone(), 1, jsgraph()->Constant(p.name(broker())));
489 node->InsertInput(zone(), 3,
492 ReplaceWithBuiltinCall(node, callable, flags);
496 void JSGenericLowering::LowerJSStoreGlobal(Node* node) {
497 JSStoreGlobalNode n(node);
504 node->InsertInput(zone(), 0, jsgraph()->Constant(p.name(broker())));
505 node->InsertInput(zone(), 2,
507 ReplaceWithBuiltinCall(node, Builtin::kStoreGlobalICTrampoline);
509 node->InsertInput(zone(), 0, jsgraph()->Constant(p.name(broker())));
510 node->InsertInput(zone(), 2,
512 ReplaceWithBuiltinCall(node, Builtin::kStoreGlobalIC);
516 void JSGenericLowering::LowerJSDefineKeyedOwnPropertyInLiteral(Node* node) {
517 JSDefineKeyedOwnPropertyInLiteralNode n(node);
520 RelaxControls(node);
521 node->InsertInput(zone(), 5,
523 ReplaceWithRuntimeCall(node, Runtime::kDefineKeyedOwnPropertyInLiteral);
526 void JSGenericLowering::LowerJSStoreInArrayLiteral(Node* node) {
527 JSStoreInArrayLiteralNode n(node);
530 RelaxControls(node);
531 node->InsertInput(zone(), 3,
533 ReplaceWithBuiltinCall(node, Builtin::kStoreInArrayLiteralIC);
536 void JSGenericLowering::LowerJSDeleteProperty(Node* node) {
537 ReplaceWithBuiltinCall(node, Builtin::kDeleteProperty);
540 void JSGenericLowering::LowerJSGetSuperConstructor(Node* node) {
541 Node* active_function = NodeProperties::GetValueInput(node, 0);
542 Node* effect = NodeProperties::GetEffectInput(node);
543 Node* control = NodeProperties::GetControlInput(node);
549 RelaxControls(node);
550 node->ReplaceInput(0, function_map);
551 node->ReplaceInput(1, effect);
552 node->ReplaceInput(2, control);
553 node->TrimInputCount(3);
554 NodeProperties::ChangeOp(node, jsgraph()->simplified()->LoadField(
558 void JSGenericLowering::LowerJSHasInPrototypeChain(Node* node) {
559 ReplaceWithRuntimeCall(node, Runtime::kHasInPrototypeChain);
562 void JSGenericLowering::LowerJSOrdinaryHasInstance(Node* node) {
563 ReplaceWithBuiltinCall(node, Builtin::kOrdinaryHasInstance);
566 void JSGenericLowering::LowerJSHasContextExtension(Node* node) {
570 void JSGenericLowering::LowerJSLoadContext(Node* node) {
575 void JSGenericLowering::LowerJSStoreContext(Node* node) {
580 void JSGenericLowering::LowerJSCreate(Node* node) {
581 ReplaceWithBuiltinCall(node, Builtin::kFastNewObject);
585 void JSGenericLowering::LowerJSCreateArguments(Node* node) {
586 CreateArgumentsType const type = CreateArgumentsTypeOf(node->op());
589 ReplaceWithRuntimeCall(node, Runtime::kNewSloppyArguments);
592 ReplaceWithRuntimeCall(node, Runtime::kNewStrictArguments);
595 ReplaceWithRuntimeCall(node, Runtime::kNewRestParameter);
601 void JSGenericLowering::LowerJSCreateArray(Node* node) {
602 CreateArrayParameters const& p = CreateArrayParametersOf(node->op());
607 node->op()->properties());
618 node->InsertInput(zone(), 0, stub_code);
619 node->InsertInput(zone(), 3, stub_arity);
620 node->InsertInput(zone(), 4, type_info);
621 node->InsertInput(zone(), 5, receiver);
622 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
625 void JSGenericLowering::LowerJSCreateArrayIterator(Node* node) {
629 void JSGenericLowering::LowerJSCreateAsyncFunctionObject(Node* node) {
633 void JSGenericLowering::LowerJSCreateCollectionIterator(Node* node) {
637 void JSGenericLowering::LowerJSCreateBoundFunction(Node* node) {
641 void JSGenericLowering::LowerJSObjectIsArray(Node* node) {
645 void JSGenericLowering::LowerJSCreateObject(Node* node) {
646 ReplaceWithBuiltinCall(node, Builtin::kCreateObjectWithoutProperties);
649 void JSGenericLowering::LowerJSParseInt(Node* node) {
650 ReplaceWithBuiltinCall(node, Builtin::kParseInt);
653 void JSGenericLowering::LowerJSRegExpTest(Node* node) {
654 ReplaceWithBuiltinCall(node, Builtin::kRegExpPrototypeTestFast);
657 void JSGenericLowering::LowerJSCreateClosure(Node* node) {
658 JSCreateClosureNode n(node);
662 node->InsertInput(zone(), 0, jsgraph()->Constant(shared_info));
663 node->RemoveInput(4); // control
667 ReplaceWithBuiltinCall(node, Builtin::kFastNewClosure);
669 ReplaceWithRuntimeCall(node, Runtime::kNewClosure_Tenured);
673 void JSGenericLowering::LowerJSCreateFunctionContext(Node* node) {
675 CreateFunctionContextParametersOf(node->op());
679 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
684 node->InsertInput(zone(), 0, jsgraph()->Constant(scope_info));
685 node->InsertInput(zone(), 1, jsgraph()->Int32Constant(slot_count));
686 ReplaceWithBuiltinCall(node, callable, flags);
688 node->InsertInput(zone(), 0, jsgraph()->Constant(scope_info));
689 ReplaceWithRuntimeCall(node, Runtime::kNewFunctionContext);
693 void JSGenericLowering::LowerJSCreateGeneratorObject(Node* node) {
694 node->RemoveInput(4); // control
695 ReplaceWithBuiltinCall(node, Builtin::kCreateGeneratorObject);
698 void JSGenericLowering::LowerJSCreateIterResultObject(Node* node) {
699 ReplaceWithBuiltinCall(node, Builtin::kCreateIterResultObject);
702 void JSGenericLowering::LowerJSCreateStringIterator(Node* node) {
706 void JSGenericLowering::LowerJSCreateKeyValueArray(Node* node) {
710 void JSGenericLowering::LowerJSCreatePromise(Node* node) {
714 void JSGenericLowering::LowerJSCreateTypedArray(Node* node) {
715 ReplaceWithBuiltinCall(node, Builtin::kCreateTypedArray);
718 void JSGenericLowering::LowerJSCreateLiteralArray(Node* node) {
719 JSCreateLiteralArrayNode n(node);
722 node->InsertInput(zone(), 1,
724 node->InsertInput(zone(), 2, jsgraph()->Constant(p.constant(broker())));
725 node->InsertInput(zone(), 3, jsgraph()->SmiConstant(p.flags()));
731 ReplaceWithBuiltinCall(node, Builtin::kCreateShallowArrayLiteral);
733 ReplaceWithRuntimeCall(node, Runtime::kCreateArrayLiteral);
737 void JSGenericLowering::LowerJSGetTemplateObject(Node* node) {
738 JSGetTemplateObjectNode n(node);
743 DCHECK_EQ(node->op()->ControlInputCount(), 1);
744 node->RemoveInput(NodeProperties::FirstControlIndex(node));
747 node->InsertInput(zone(), 0, jsgraph()->Constant(shared));
748 node->InsertInput(zone(), 1, jsgraph()->Constant(description));
749 node->InsertInput(zone(), 2,
752 ReplaceWithBuiltinCall(node, Builtin::kGetTemplateObject);
755 void JSGenericLowering::LowerJSCreateEmptyLiteralArray(Node* node) {
756 JSCreateEmptyLiteralArrayNode n(node);
759 node->InsertInput(zone(), 1,
761 node->RemoveInput(4); // control
762 ReplaceWithBuiltinCall(node, Builtin::kCreateEmptyArrayLiteral);
765 void JSGenericLowering::LowerJSCreateArrayFromIterable(Node* node) {
766 ReplaceWithBuiltinCall(node, Builtin::kIterableToListWithSymbolLookup);
769 void JSGenericLowering::LowerJSCreateLiteralObject(Node* node) {
770 JSCreateLiteralObjectNode n(node);
773 node->InsertInput(zone(), 1,
775 node->InsertInput(zone(), 2, jsgraph()->Constant(p.constant(broker())));
776 node->InsertInput(zone(), 3, jsgraph()->SmiConstant(p.flags()));
783 ReplaceWithBuiltinCall(node, Builtin::kCreateShallowObjectLiteral);
785 ReplaceWithRuntimeCall(node, Runtime::kCreateObjectLiteral);
789 void JSGenericLowering::LowerJSCloneObject(Node* node) {
790 JSCloneObjectNode n(node);
793 node->InsertInput(zone(), 1, jsgraph()->SmiConstant(p.flags()));
794 node->InsertInput(zone(), 2,
796 ReplaceWithBuiltinCall(node, Builtin::kCloneObjectIC);
799 void JSGenericLowering::LowerJSCreateEmptyLiteralObject(Node* node) {
800 ReplaceWithBuiltinCall(node, Builtin::kCreateEmptyLiteralObject);
803 void JSGenericLowering::LowerJSCreateLiteralRegExp(Node* node) {
804 JSCreateLiteralRegExpNode n(node);
807 node->InsertInput(zone(), 1,
809 node->InsertInput(zone(), 2, jsgraph()->Constant(p.constant(broker())));
810 node->InsertInput(zone(), 3, jsgraph()->SmiConstant(p.flags()));
811 ReplaceWithBuiltinCall(node, Builtin::kCreateRegExpLiteral);
815 void JSGenericLowering::LowerJSCreateCatchContext(Node* node) {
816 ScopeInfoRef scope_info = ScopeInfoOf(broker(), node->op());
817 node->InsertInput(zone(), 1, jsgraph()->Constant(scope_info));
818 ReplaceWithRuntimeCall(node, Runtime::kPushCatchContext);
821 void JSGenericLowering::LowerJSCreateWithContext(Node* node) {
822 ScopeInfoRef scope_info = ScopeInfoOf(broker(), node->op());
823 node->InsertInput(zone(), 1, jsgraph()->Constant(scope_info));
824 ReplaceWithRuntimeCall(node, Runtime::kPushWithContext);
827 void JSGenericLowering::LowerJSCreateBlockContext(Node* node) {
828 ScopeInfoRef scope_info = ScopeInfoOf(broker(), node->op());
829 node->InsertInput(zone(), 0, jsgraph()->Constant(scope_info));
830 ReplaceWithRuntimeCall(node, Runtime::kPushBlockContext);
834 void JSGenericLowering::LowerJSConstructForwardVarargs(Node* node) {
836 ConstructForwardVarargsParametersOf(node->op());
838 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
850 node->InsertInput(zone(), 0, stub_code);
851 node->InsertInput(zone(), 3, stub_arity);
852 node->InsertInput(zone(), 4, start_index);
853 node->InsertInput(zone(), 5, receiver);
854 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
857 void JSGenericLowering::LowerJSConstruct(Node* node) {
858 JSConstructNode n(node);
861 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
872 node->RemoveInput(n.FeedbackVectorIndex());
873 node->InsertInput(zone(), 0, stub_code);
874 node->InsertInput(zone(), 3, stub_arity);
875 node->InsertInput(zone(), 4, receiver);
879 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
882 void JSGenericLowering::LowerJSConstructWithArrayLike(Node* node) {
883 JSConstructWithArrayLikeNode n(node);
885 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
903 node->RemoveInput(n.FeedbackVectorIndex());
904 node->InsertInput(zone(), 0, stub_code);
905 node->InsertInput(zone(), 4, receiver);
909 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
912 void JSGenericLowering::LowerJSConstructWithSpread(Node* node) {
913 JSConstructWithSpreadNode n(node);
917 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
937 node->RemoveInput(n.FeedbackVectorIndex());
938 Node* spread = node->RemoveInput(n.LastArgumentIndex());
940 node->InsertInput(zone(), 0, stub_code);
941 node->InsertInput(zone(), 3, stub_arity);
942 node->InsertInput(zone(), 4, spread);
943 node->InsertInput(zone(), 5, receiver);
947 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
950 void JSGenericLowering::LowerJSCallForwardVarargs(Node* node) {
951 CallForwardVarargsParameters p = CallForwardVarargsParametersOf(node->op());
953 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
960 node->InsertInput(zone(), 0, stub_code);
961 node->InsertInput(zone(), 2, stub_arity);
962 node->InsertInput(zone(), 3, start_index);
963 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
966 void JSGenericLowering::LowerJSCall(Node* node) {
967 JSCallNode n(node);
972 node->RemoveInput(n.FeedbackVectorIndex());
975 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
980 node->InsertInput(zone(), 0, stub_code);
981 node->InsertInput(zone(), 2, stub_arity);
982 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
985 void JSGenericLowering::LowerJSCallWithArrayLike(Node* node) {
986 JSCallWithArrayLikeNode n(node);
990 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
1006 node->RemoveInput(n.FeedbackVectorIndex());
1007 node->InsertInput(zone(), 0, stub_code);
1008 node->ReplaceInput(2, arguments_list);
1009 node->ReplaceInput(3, receiver);
1013 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
1016 void JSGenericLowering::LowerJSCallWithSpread(Node* node) {
1017 JSCallWithSpreadNode n(node);
1021 CallDescriptor::Flags flags = FrameStateFlagForCall(node);
1043 node->RemoveInput(n.FeedbackVectorIndex());
1044 Node* spread = node->RemoveInput(n.LastArgumentIndex());
1046 node->InsertInput(zone(), 0, stub_code);
1047 node->InsertInput(zone(), 2, stub_arity);
1048 node->InsertInput(zone(), 3, spread);
1052 NodeProperties::ChangeOp(node, common()->Call(call_descriptor));
1055 void JSGenericLowering::LowerJSCallRuntime(Node* node) {
1056 const CallRuntimeParameters& p = CallRuntimeParametersOf(node->op());
1057 ReplaceWithRuntimeCall(node, p.id(), static_cast<int>(p.arity()));
1062 void JSGenericLowering::LowerJSWasmCall(Node* node) {}
1065 void JSGenericLowering::LowerJSForInPrepare(Node* node) {
1066 JSForInPrepareNode n(node);
1067 Effect effect(node); // {node} is kept in the effect chain.
1074 for (Edge edge : node->use_edges()) use_edges.push_back(edge);
1076 // {node} will be changed to a builtin call (see below). The returned value
1083 Node* result_fixed_array = node;
1099 // Update the uses of {node}.
1124 // Finally, change the original node into a builtin call. This happens here,
1128 node->InsertInput(zone(), n.FeedbackVectorIndex(), slot);
1129 ReplaceWithBuiltinCall(node, Builtin::kForInPrepare);
1132 void JSGenericLowering::LowerJSForInNext(Node* node) {
1133 JSForInNextNode n(node);
1134 node->InsertInput(
1137 ReplaceWithBuiltinCall(node, Builtin::kForInNext);
1140 void JSGenericLowering::LowerJSLoadMessage(Node* node) {
1145 void JSGenericLowering::LowerJSStoreMessage(Node* node) {
1149 void JSGenericLowering::LowerJSLoadModule(Node* node) {
1153 void JSGenericLowering::LowerJSStoreModule(Node* node) {
1157 void JSGenericLowering::LowerJSGetImportMeta(Node* node) {
1158 ReplaceWithRuntimeCall(node, Runtime::kGetImportMetaObject);
1161 void JSGenericLowering::LowerJSGeneratorStore(Node* node) {
1165 void JSGenericLowering::LowerJSGeneratorRestoreContinuation(Node* node) {
1169 void JSGenericLowering::LowerJSGeneratorRestoreContext(Node* node) {
1173 void JSGenericLowering::LowerJSGeneratorRestoreInputOrDebugPos(Node* node) {
1177 void JSGenericLowering::LowerJSGeneratorRestoreRegister(Node* node) {
1190 void JSGenericLowering::LowerJSStackCheck(Node* node) {
1191 Node* effect = NodeProperties::GetEffectInput(node);
1192 Node* control = NodeProperties::GetControlInput(node);
1200 StackCheckKind stack_check_kind = StackCheckKindOfJSStackCheck(node->op());
1210 NodeProperties::ReplaceControlInput(node, if_false);
1211 NodeProperties::ReplaceEffectInput(node, effect);
1212 Node* efalse = if_false = node;
1217 // Wire the new diamond into the graph, {node} can still throw.
1218 NodeProperties::ReplaceUses(node, node, ephi, merge, merge);
1223 // uses of the original node and places them inside the diamond, so that we
1224 // can change the original {node} into the slow-path runtime call.
1230 edge.UpdateTo(node);
1233 NodeProperties::ReplaceEffectInput(edge.from(), node);
1234 edge.UpdateTo(node);
1243 node->InsertInput(zone(), 0,
1245 ReplaceWithRuntimeCall(node, Runtime::kStackGuardWithGap);
1247 ReplaceWithRuntimeCall(node, Runtime::kStackGuard);
1251 void JSGenericLowering::LowerJSDebugger(Node* node) {
1252 ReplaceWithRuntimeCall(node, Runtime::kHandleDebuggerStatement);