%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
#include "src/ast/ast.h" #include "src/builtins/builtins-array-gen.h" #include "src/builtins/builtins-bigint-gen.h" #include "src/builtins/builtins-collections-gen.h" #include "src/builtins/builtins-constructor-gen.h" #include "src/builtins/builtins-data-view-gen.h" #include "src/builtins/builtins-iterator-gen.h" #include "src/builtins/builtins-promise-gen.h" #include "src/builtins/builtins-promise.h" #include "src/builtins/builtins-proxy-gen.h" #include "src/builtins/builtins-regexp-gen.h" #include "src/builtins/builtins-string-gen.h" #include "src/builtins/builtins-typed-array-gen.h" #include "src/builtins/builtins-utils-gen.h" #include "src/builtins/builtins-wasm-gen.h" #include "src/builtins/builtins.h" #include "src/codegen/code-factory.h" #include "src/debug/debug-wasm-objects.h" #include "src/heap/factory-inl.h" #include "src/ic/binary-op-assembler.h" #include "src/ic/handler-configuration-inl.h" #include "src/objects/arguments.h" #include "src/objects/bigint.h" #include "src/objects/elements-kind.h" #include "src/objects/free-space.h" #include "src/objects/js-break-iterator.h" #include "src/objects/js-collator.h" #include "src/objects/js-date-time-format.h" #include "src/objects/js-display-names.h" #include "src/objects/js-function.h" #include "src/objects/js-generator.h" #include "src/objects/js-list-format.h" #include "src/objects/js-locale.h" #include "src/objects/js-number-format.h" #include "src/objects/js-objects.h" #include "src/objects/js-plural-rules.h" #include "src/objects/js-promise.h" #include "src/objects/js-regexp-string-iterator.h" #include "src/objects/js-relative-time-format.h" #include "src/objects/js-segment-iterator.h" #include "src/objects/js-segmenter.h" #include "src/objects/js-segments.h" #include "src/objects/js-weak-refs.h" #include "src/objects/objects.h" #include "src/objects/ordered-hash-table.h" #include "src/objects/property-array.h" #include "src/objects/property-descriptor-object.h" #include "src/objects/source-text-module.h" #include "src/objects/stack-frame-info.h" #include "src/objects/swiss-hash-table-helpers.h" #include "src/objects/swiss-name-dictionary.h" #include "src/objects/synthetic-module.h" #include "src/objects/template-objects.h" #include "src/objects/torque-defined-classes.h" #include "src/torque/runtime-support.h" // Required Builtins: #include "torque-generated/src/builtins/constructor-tq-csa.h" #include "torque-generated/src/builtins/base-tq-csa.h" #include "torque-generated/src/builtins/boolean-tq-csa.h" #include "torque-generated/src/builtins/constructor-tq-csa.h" #include "torque-generated/src/builtins/convert-tq-csa.h" #include "torque-generated/src/builtins/frames-tq-csa.h" #include "torque-generated/src/builtins/frame-arguments-tq-csa.h" #include "torque-generated/src/objects/feedback-vector-tq-csa.h" namespace v8 { namespace internal { TF_BUILTIN(FastNewClosureBaseline, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<SharedFunctionInfo> parameter0 = UncheckedParameter<SharedFunctionInfo>(Descriptor::kSharedFunctionInfo); USE(parameter0); TNode<FeedbackCell> parameter1 = UncheckedParameter<FeedbackCell>(Descriptor::kFeedbackCell); USE(parameter1); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<Context> tmp0; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = CodeStubAssembler(state_).LoadContextFromBaseline(); CodeStubAssembler(state_).TailCallBuiltin(Builtin::kFastNewClosure, tmp0, parameter0, parameter1); } } TF_BUILTIN(FastNewFunctionContextEval, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); TNode<ScopeInfo> parameter1 = UncheckedParameter<ScopeInfo>(Descriptor::kScopeInfo); USE(parameter1); TNode<Uint32T> parameter2 = UncheckedParameter<Uint32T>(Descriptor::kSlots); USE(parameter2); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<Context> tmp0; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = ConstructorBuiltinsAssembler(state_).FastNewFunctionContext(TNode<ScopeInfo>{parameter1}, TNode<Uint32T>{parameter2}, TNode<Context>{parameter0}, ScopeType::EVAL_SCOPE); CodeStubAssembler(state_).Return(tmp0); } } TF_BUILTIN(FastNewFunctionContextFunction, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); TNode<ScopeInfo> parameter1 = UncheckedParameter<ScopeInfo>(Descriptor::kScopeInfo); USE(parameter1); TNode<Uint32T> parameter2 = UncheckedParameter<Uint32T>(Descriptor::kSlots); USE(parameter2); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<Context> tmp0; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = ConstructorBuiltinsAssembler(state_).FastNewFunctionContext(TNode<ScopeInfo>{parameter1}, TNode<Uint32T>{parameter2}, TNode<Context>{parameter0}, ScopeType::FUNCTION_SCOPE); CodeStubAssembler(state_).Return(tmp0); } } TF_BUILTIN(CreateRegExpLiteral, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); TNode<HeapObject> parameter1 = UncheckedParameter<HeapObject>(Descriptor::kMaybeFeedbackVector); USE(parameter1); TNode<TaggedIndex> parameter2 = UncheckedParameter<TaggedIndex>(Descriptor::kSlot); USE(parameter2); TNode<Object> parameter3 = UncheckedParameter<Object>(Descriptor::kPattern); USE(parameter3); TNode<Smi> parameter4 = UncheckedParameter<Smi>(Descriptor::kFlags); USE(parameter4); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<JSRegExp> tmp0; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = ConstructorBuiltinsAssembler(state_).CreateRegExpLiteral(TNode<HeapObject>{parameter1}, TNode<TaggedIndex>{parameter2}, TNode<Object>{parameter3}, TNode<Smi>{parameter4}, TNode<Context>{parameter0}); CodeStubAssembler(state_).Return(tmp0); } } TF_BUILTIN(CreateShallowArrayLiteral, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); TNode<HeapObject> parameter1 = UncheckedParameter<HeapObject>(Descriptor::kMaybeFeedbackVector); USE(parameter1); TNode<TaggedIndex> parameter2 = UncheckedParameter<TaggedIndex>(Descriptor::kSlot); USE(parameter2); TNode<ArrayBoilerplateDescription> parameter3 = UncheckedParameter<ArrayBoilerplateDescription>(Descriptor::kConstantElements); USE(parameter3); TNode<Smi> parameter4 = UncheckedParameter<Smi>(Descriptor::kFlags); USE(parameter4); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block2(&ca_, compiler::CodeAssemblerLabel::kDeferred); ca_.Goto(&block0); TNode<FeedbackVector> tmp0; if (block0.is_used()) { ca_.Bind(&block0); compiler::CodeAssemblerLabel label1(&ca_); tmp0 = Cast_FeedbackVector_0(state_, TNode<HeapObject>{parameter1}, &label1); ca_.Goto(&block3); if (label1.is_used()) { ca_.Bind(&label1); ca_.Goto(&block4); } } if (block4.is_used()) { ca_.Bind(&block4); ca_.Goto(&block2); } TNode<HeapObject> tmp2; if (block3.is_used()) { ca_.Bind(&block3); compiler::CodeAssemblerLabel label3(&ca_); tmp2 = ConstructorBuiltinsAssembler(state_).CreateShallowArrayLiteral(TNode<FeedbackVector>{tmp0}, TNode<TaggedIndex>{parameter2}, TNode<Context>{parameter0}, AllocationSiteMode::TRACK_ALLOCATION_SITE, &label3); ca_.Goto(&block5); if (label3.is_used()) { ca_.Bind(&label3); ca_.Goto(&block6); } } if (block6.is_used()) { ca_.Bind(&block6); ca_.Goto(&block2); } if (block5.is_used()) { ca_.Bind(&block5); CodeStubAssembler(state_).Return(tmp2); } if (block2.is_used()) { ca_.Bind(&block2); CodeStubAssembler(state_).TailCallRuntime(Runtime::kCreateArrayLiteral, parameter0, parameter1, parameter2, parameter3, parameter4); } } TF_BUILTIN(CreateEmptyArrayLiteral, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); TNode<FeedbackVector> parameter1 = UncheckedParameter<FeedbackVector>(Descriptor::kFeedbackVector); USE(parameter1); TNode<TaggedIndex> parameter2 = UncheckedParameter<TaggedIndex>(Descriptor::kSlot); USE(parameter2); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<HeapObject> tmp0; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = ConstructorBuiltinsAssembler(state_).CreateEmptyArrayLiteral(TNode<FeedbackVector>{parameter1}, TNode<TaggedIndex>{parameter2}, TNode<Context>{parameter0}); CodeStubAssembler(state_).Return(tmp0); } } TF_BUILTIN(CreateShallowObjectLiteral, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); TNode<HeapObject> parameter1 = UncheckedParameter<HeapObject>(Descriptor::kMaybeFeedbackVector); USE(parameter1); TNode<TaggedIndex> parameter2 = UncheckedParameter<TaggedIndex>(Descriptor::kSlot); USE(parameter2); TNode<ObjectBoilerplateDescription> parameter3 = UncheckedParameter<ObjectBoilerplateDescription>(Descriptor::kDesc); USE(parameter3); TNode<Smi> parameter4 = UncheckedParameter<Smi>(Descriptor::kFlags); USE(parameter4); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block6(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block2(&ca_, compiler::CodeAssemblerLabel::kDeferred); ca_.Goto(&block0); TNode<FeedbackVector> tmp0; if (block0.is_used()) { ca_.Bind(&block0); compiler::CodeAssemblerLabel label1(&ca_); tmp0 = Cast_FeedbackVector_0(state_, TNode<HeapObject>{parameter1}, &label1); ca_.Goto(&block3); if (label1.is_used()) { ca_.Bind(&label1); ca_.Goto(&block4); } } if (block4.is_used()) { ca_.Bind(&block4); ca_.Goto(&block2); } TNode<HeapObject> tmp2; if (block3.is_used()) { ca_.Bind(&block3); compiler::CodeAssemblerLabel label3(&ca_); tmp2 = ConstructorBuiltinsAssembler(state_).CreateShallowObjectLiteral(TNode<FeedbackVector>{tmp0}, TNode<TaggedIndex>{parameter2}, &label3); ca_.Goto(&block5); if (label3.is_used()) { ca_.Bind(&label3); ca_.Goto(&block6); } } if (block6.is_used()) { ca_.Bind(&block6); ca_.Goto(&block2); } if (block5.is_used()) { ca_.Bind(&block5); CodeStubAssembler(state_).Return(tmp2); } if (block2.is_used()) { ca_.Bind(&block2); CodeStubAssembler(state_).TailCallRuntime(Runtime::kCreateObjectLiteral, parameter0, parameter1, parameter2, parameter3, parameter4); } } TF_BUILTIN(ObjectConstructor, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Word32T> argc = UncheckedParameter<Word32T>(Descriptor::kJSActualArgumentsCount); TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(UncheckedCast<Int32T>(argc))); TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer()); TorqueStructArguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length)); CodeStubArguments arguments(this, torque_arguments); TNode<NativeContext> parameter0 = UncheckedParameter<NativeContext>(Descriptor::kContext); USE(parameter0); TNode<Object> parameter1 = arguments.GetReceiver(); USE(parameter1); TNode<Object> parameter2 = UncheckedParameter<Object>(Descriptor::kJSNewTarget); USE(parameter2); TNode<JSFunction> parameter3 = UncheckedParameter<JSFunction>(Descriptor::kJSTarget); USE(parameter3); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<BoolT> block5(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block9(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block10(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<BoolT> block11(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block12(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block13(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<BoolT> block14(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block7(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block8(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<Oddball> tmp0; TNode<BoolT> tmp1; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = Undefined_0(state_); tmp1 = CodeStubAssembler(state_).TaggedEqual(TNode<Object>{parameter2}, TNode<HeapObject>{tmp0}); ca_.Branch(tmp1, &block3, std::vector<compiler::Node*>{}, &block4, std::vector<compiler::Node*>{}); } TNode<BoolT> tmp2; if (block3.is_used()) { ca_.Bind(&block3); tmp2 = FromConstexpr_bool_constexpr_bool_0(state_, true); ca_.Goto(&block5, tmp2); } TNode<BoolT> tmp3; if (block4.is_used()) { ca_.Bind(&block4); tmp3 = CodeStubAssembler(state_).TaggedEqual(TNode<Object>{parameter2}, TNode<HeapObject>{parameter3}); ca_.Goto(&block5, tmp3); } TNode<BoolT> phi_bb5_8; if (block5.is_used()) { ca_.Bind(&block5, &phi_bb5_8); ca_.Branch(phi_bb5_8, &block1, std::vector<compiler::Node*>{}, &block2, std::vector<compiler::Node*>{}); } TNode<IntPtrT> tmp4; TNode<Object> tmp5; TNode<IntPtrT> tmp6; TNode<BoolT> tmp7; if (block1.is_used()) { ca_.Bind(&block1); tmp4 = FromConstexpr_intptr_constexpr_int31_0(state_, 0); tmp5 = CodeStubAssembler(state_).GetArgumentValue(TorqueStructArguments{TNode<RawPtrT>{torque_arguments.frame}, TNode<RawPtrT>{torque_arguments.base}, TNode<IntPtrT>{torque_arguments.length}}, TNode<IntPtrT>{tmp4}); tmp6 = FromConstexpr_intptr_constexpr_int31_0(state_, 0); tmp7 = CodeStubAssembler(state_).IntPtrLessThanOrEqual(TNode<IntPtrT>{torque_arguments.length}, TNode<IntPtrT>{tmp6}); ca_.Branch(tmp7, &block9, std::vector<compiler::Node*>{}, &block10, std::vector<compiler::Node*>{}); } TNode<BoolT> tmp8; if (block9.is_used()) { ca_.Bind(&block9); tmp8 = FromConstexpr_bool_constexpr_bool_0(state_, true); ca_.Goto(&block11, tmp8); } TNode<Oddball> tmp9; TNode<BoolT> tmp10; if (block10.is_used()) { ca_.Bind(&block10); tmp9 = Undefined_0(state_); tmp10 = CodeStubAssembler(state_).TaggedEqual(TNode<Object>{tmp5}, TNode<HeapObject>{tmp9}); ca_.Goto(&block11, tmp10); } TNode<BoolT> phi_bb11_9; if (block11.is_used()) { ca_.Bind(&block11, &phi_bb11_9); ca_.Branch(phi_bb11_9, &block12, std::vector<compiler::Node*>{}, &block13, std::vector<compiler::Node*>{}); } TNode<BoolT> tmp11; if (block12.is_used()) { ca_.Bind(&block12); tmp11 = FromConstexpr_bool_constexpr_bool_0(state_, true); ca_.Goto(&block14, tmp11); } TNode<Oddball> tmp12; TNode<BoolT> tmp13; if (block13.is_used()) { ca_.Bind(&block13); tmp12 = Null_0(state_); tmp13 = CodeStubAssembler(state_).TaggedEqual(TNode<Object>{tmp5}, TNode<HeapObject>{tmp12}); ca_.Goto(&block14, tmp13); } TNode<BoolT> phi_bb14_9; if (block14.is_used()) { ca_.Bind(&block14, &phi_bb14_9); ca_.Branch(phi_bb14_9, &block7, std::vector<compiler::Node*>{}, &block8, std::vector<compiler::Node*>{}); } TNode<JSObject> tmp14; if (block7.is_used()) { ca_.Bind(&block7); tmp14 = ConstructorBuiltinsAssembler(state_).CreateEmptyObjectLiteral(TNode<Context>{parameter0}); arguments.PopAndReturn(tmp14); } TNode<JSReceiver> tmp15; if (block8.is_used()) { ca_.Bind(&block8); tmp15 = ca_.CallStub<JSReceiver>(Builtins::CallableFor(ca_.isolate(), Builtin::kToObject), parameter0, tmp5); arguments.PopAndReturn(tmp15); } TNode<JSReceiver> tmp16; TNode<JSObject> tmp17; if (block2.is_used()) { ca_.Bind(&block2); tmp16 = UnsafeCast_JSReceiver_0(state_, TNode<Context>{parameter0}, TNode<Object>{parameter2}); tmp17 = ca_.CallStub<JSObject>(Builtins::CallableFor(ca_.isolate(), Builtin::kFastNewObject), parameter0, parameter3, tmp16); arguments.PopAndReturn(tmp17); } } TF_BUILTIN(CreateEmptyLiteralObject, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Context> parameter0 = UncheckedParameter<Context>(Descriptor::kContext); USE(parameter0); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<JSObject> tmp0; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = ConstructorBuiltinsAssembler(state_).CreateEmptyObjectLiteral(TNode<Context>{parameter0}); CodeStubAssembler(state_).Return(tmp0); } } TF_BUILTIN(NumberConstructor, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<Word32T> argc = UncheckedParameter<Word32T>(Descriptor::kJSActualArgumentsCount); TNode<IntPtrT> arguments_length(ChangeInt32ToIntPtr(UncheckedCast<Int32T>(argc))); TNode<RawPtrT> arguments_frame = UncheckedCast<RawPtrT>(LoadFramePointer()); TorqueStructArguments torque_arguments(GetFrameArguments(arguments_frame, arguments_length)); CodeStubArguments arguments(this, torque_arguments); TNode<NativeContext> parameter0 = UncheckedParameter<NativeContext>(Descriptor::kContext); USE(parameter0); TNode<Object> parameter1 = arguments.GetReceiver(); USE(parameter1); TNode<Object> parameter2 = UncheckedParameter<Object>(Descriptor::kJSNewTarget); USE(parameter2); TNode<JSFunction> parameter3 = UncheckedParameter<JSFunction>(Descriptor::kJSTarget); USE(parameter3); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block1(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<Number> block2(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block3(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); compiler::CodeAssemblerParameterizedLabel<> block4(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); TNode<Number> tmp0; TNode<IntPtrT> tmp1; TNode<BoolT> tmp2; if (block0.is_used()) { ca_.Bind(&block0); tmp0 = FromConstexpr_Number_constexpr_int31_0(state_, 0); tmp1 = FromConstexpr_intptr_constexpr_int31_0(state_, 0); tmp2 = CodeStubAssembler(state_).IntPtrGreaterThan(TNode<IntPtrT>{torque_arguments.length}, TNode<IntPtrT>{tmp1}); ca_.Branch(tmp2, &block1, std::vector<compiler::Node*>{}, &block2, std::vector<compiler::Node*>{tmp0}); } TNode<IntPtrT> tmp3; TNode<Object> tmp4; TNode<Number> tmp5; if (block1.is_used()) { ca_.Bind(&block1); tmp3 = FromConstexpr_intptr_constexpr_int31_0(state_, 0); tmp4 = CodeStubAssembler(state_).GetArgumentValue(TorqueStructArguments{TNode<RawPtrT>{torque_arguments.frame}, TNode<RawPtrT>{torque_arguments.base}, TNode<IntPtrT>{torque_arguments.length}}, TNode<IntPtrT>{tmp3}); tmp5 = CodeStubAssembler(state_).ToNumber(TNode<Context>{parameter0}, TNode<Object>{tmp4}, CodeStubAssembler::BigIntHandling::kConvertToNumber); ca_.Goto(&block2, tmp5); } TNode<Number> phi_bb2_7; TNode<Oddball> tmp6; TNode<BoolT> tmp7; if (block2.is_used()) { ca_.Bind(&block2, &phi_bb2_7); tmp6 = Undefined_0(state_); tmp7 = CodeStubAssembler(state_).TaggedEqual(TNode<Object>{parameter2}, TNode<HeapObject>{tmp6}); ca_.Branch(tmp7, &block3, std::vector<compiler::Node*>{}, &block4, std::vector<compiler::Node*>{}); } if (block3.is_used()) { ca_.Bind(&block3); arguments.PopAndReturn(phi_bb2_7); } TNode<JSFunction> tmp8; TNode<JSReceiver> tmp9; TNode<JSObject> tmp10; TNode<JSPrimitiveWrapper> tmp11; TNode<IntPtrT> tmp12; if (block4.is_used()) { ca_.Bind(&block4); tmp8 = LoadTargetFromFrame_0(state_); tmp9 = UnsafeCast_JSReceiver_0(state_, TNode<Context>{parameter0}, TNode<Object>{parameter2}); tmp10 = ca_.CallStub<JSObject>(Builtins::CallableFor(ca_.isolate(), Builtin::kFastNewObject), parameter0, tmp8, tmp9); tmp11 = UnsafeCast_JSPrimitiveWrapper_0(state_, TNode<Context>{parameter0}, TNode<Object>{tmp10}); tmp12 = FromConstexpr_intptr_constexpr_int31_0(state_, 24); CodeStubAssembler(state_).StoreReference<Object>(CodeStubAssembler::Reference{tmp11, tmp12}, phi_bb2_7); arguments.PopAndReturn(tmp11); } } TF_BUILTIN(GenericLazyDeoptContinuation, CodeStubAssembler) { compiler::CodeAssemblerState* state_ = state(); compiler::CodeAssembler ca_(state()); TNode<NativeContext> parameter0 = UncheckedParameter<NativeContext>(Descriptor::kContext); USE(parameter0); TNode<Object> parameter1 = UncheckedParameter<Object>(Descriptor::kResult); USE(parameter1); compiler::CodeAssemblerParameterizedLabel<> block0(&ca_, compiler::CodeAssemblerLabel::kNonDeferred); ca_.Goto(&block0); if (block0.is_used()) { ca_.Bind(&block0); CodeStubAssembler(state_).Return(parameter1); } } } // namespace internal } // namespace v8