| OLD | NEW |
| 1 // Copyright 2017 the V8 project authors. All rights reserved. | 1 // Copyright 2017 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/builtins/builtins-utils-gen.h" | 5 #include "src/builtins/builtins-utils-gen.h" |
| 6 #include "src/builtins/builtins.h" | 6 #include "src/builtins/builtins.h" |
| 7 #include "src/code-stub-assembler.h" | 7 #include "src/code-stub-assembler.h" |
| 8 | 8 |
| 9 namespace v8 { | 9 namespace v8 { |
| 10 namespace internal { | 10 namespace internal { |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 SmiConstant(MessageTemplate::kReduceNoInitial)); | 121 SmiConstant(MessageTemplate::kReduceNoInitial)); |
| 122 Unreachable(); | 122 Unreachable(); |
| 123 Bind(&ok); | 123 Bind(&ok); |
| 124 } | 124 } |
| 125 | 125 |
| 126 Node* FilterResultGenerator() { | 126 Node* FilterResultGenerator() { |
| 127 // 7. Let A be ArraySpeciesCreate(O, 0). | 127 // 7. Let A be ArraySpeciesCreate(O, 0). |
| 128 return ArraySpeciesCreate(context(), o(), SmiConstant(0)); | 128 return ArraySpeciesCreate(context(), o(), SmiConstant(0)); |
| 129 } | 129 } |
| 130 | 130 |
| 131 void FilterResultIndexReinitializer() { | |
| 132 Variable merged_length(this, MachineRepresentation::kTagged); | |
| 133 Label has_length(this, &merged_length), not_js_array(this); | |
| 134 GotoIf(DoesntHaveInstanceType(a(), JS_ARRAY_TYPE), ¬_js_array); | |
| 135 merged_length.Bind(LoadJSArrayLength(a())); | |
| 136 Goto(&has_length); | |
| 137 Bind(¬_js_array); | |
| 138 Node* len_property = | |
| 139 GetProperty(context(), a(), isolate()->factory()->length_string()); | |
| 140 merged_length.Bind( | |
| 141 CallStub(CodeFactory::ToLength(isolate()), context(), len_property)); | |
| 142 Goto(&has_length); | |
| 143 Bind(&has_length); | |
| 144 Node* len = merged_length.value(); | |
| 145 | |
| 146 to_.Bind(len); | |
| 147 } | |
| 148 | |
| 149 Node* FilterProcessor(Node* k_value, Node* k) { | 131 Node* FilterProcessor(Node* k_value, Node* k) { |
| 150 Node* callback_result = CallJS(CodeFactory::Call(isolate()), context(), | 132 Node* callback_result = CallJS(CodeFactory::Call(isolate()), context(), |
| 151 callbackfn(), this_arg(), k_value, k, o()); | 133 callbackfn(), this_arg(), k_value, k, o()); |
| 152 Label true_continue(this, &to_), false_continue(this); | 134 Label true_continue(this, &to_), false_continue(this); |
| 153 BranchIfToBooleanIsTrue(callback_result, &true_continue, &false_continue); | 135 BranchIfToBooleanIsTrue(callback_result, &true_continue, &false_continue); |
| 154 Bind(&true_continue); | 136 Bind(&true_continue); |
| 155 | 137 |
| 156 // 1. let status be CreateDataPropertyOrThrow(A, ToString(to), kValue). | 138 // 1. let status be CreateDataPropertyOrThrow(A, ToString(to), kValue). |
| 157 // 2. ReturnIfAbrupt(status) | 139 // 2. ReturnIfAbrupt(status) |
| 158 Node* const p_to = ToString(context(), to_.value()); | 140 Node* const p_to = ToString(context(), to_.value()); |
| 159 CallRuntime(Runtime::kCreateDataProperty, context(), a(), p_to, k_value); | 141 CallRuntime(Runtime::kCreateDataProperty, context(), a(), p_to, k_value); |
| 160 | 142 |
| 161 // 3. Increase to by 1. | 143 // 3. Increase to by 1. |
| 162 to_.Bind(NumberInc(to_.value())); | 144 to_.Bind(NumberInc(to_.value())); |
| 163 Goto(&false_continue); | 145 Goto(&false_continue); |
| 164 Bind(&false_continue); | 146 Bind(&false_continue); |
| 165 return a(); | 147 return a(); |
| 166 } | 148 } |
| 167 | 149 |
| 168 void NullPostLoopAction() {} | 150 void NullPostLoopAction() {} |
| 169 | 151 |
| 170 void NullResultIndexReinitializer() {} | |
| 171 | |
| 172 protected: | 152 protected: |
| 173 Node* context() { return context_; } | 153 Node* context() { return context_; } |
| 174 Node* receiver() { return receiver_; } | 154 Node* receiver() { return receiver_; } |
| 175 Node* new_target() { return new_target_; } | 155 Node* new_target() { return new_target_; } |
| 176 Node* o() { return o_; } | 156 Node* o() { return o_; } |
| 177 Node* len() { return len_; } | 157 Node* len() { return len_; } |
| 178 Node* callbackfn() { return callbackfn_; } | 158 Node* callbackfn() { return callbackfn_; } |
| 179 Node* this_arg() { return this_arg_; } | 159 Node* this_arg() { return this_arg_; } |
| 180 Node* k() { return k_.value(); } | 160 Node* k() { return k_.value(); } |
| 181 Node* a() { return a_.value(); } | 161 Node* a() { return a_.value(); } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 HandleFastElements(processor, action, &slow); | 246 HandleFastElements(processor, action, &slow); |
| 267 | 247 |
| 268 Bind(&slow); | 248 Bind(&slow); |
| 269 | 249 |
| 270 Node* target = LoadFromFrame(StandardFrameConstants::kFunctionOffset, | 250 Node* target = LoadFromFrame(StandardFrameConstants::kFunctionOffset, |
| 271 MachineType::TaggedPointer()); | 251 MachineType::TaggedPointer()); |
| 272 TailCallStub( | 252 TailCallStub( |
| 273 slow_case_continuation, context(), target, new_target(), | 253 slow_case_continuation, context(), target, new_target(), |
| 274 Int32Constant(IteratingArrayBuiltinLoopContinuationDescriptor::kArity), | 254 Int32Constant(IteratingArrayBuiltinLoopContinuationDescriptor::kArity), |
| 275 receiver(), callbackfn(), this_arg(), a_.value(), o(), k_.value(), | 255 receiver(), callbackfn(), this_arg(), a_.value(), o(), k_.value(), |
| 276 len()); | 256 len(), to_.value()); |
| 277 } | 257 } |
| 278 | 258 |
| 279 void InitIteratingArrayBuiltinLoopContinuation(Node* context, Node* receiver, | 259 void InitIteratingArrayBuiltinLoopContinuation(Node* context, Node* receiver, |
| 280 Node* callbackfn, | 260 Node* callbackfn, |
| 281 Node* this_arg, Node* a, | 261 Node* this_arg, Node* a, |
| 282 Node* o, Node* initial_k, | 262 Node* o, Node* initial_k, |
| 283 Node* len) { | 263 Node* len, Node* to) { |
| 284 context_ = context; | 264 context_ = context; |
| 285 this_arg_ = this_arg; | 265 this_arg_ = this_arg; |
| 286 callbackfn_ = callbackfn; | 266 callbackfn_ = callbackfn; |
| 287 a_.Bind(a); | 267 a_.Bind(a); |
| 288 k_.Bind(initial_k); | 268 k_.Bind(initial_k); |
| 289 o_ = o; | 269 o_ = o; |
| 290 len_ = len; | 270 len_ = len; |
| 271 to_.Bind(to); |
| 291 } | 272 } |
| 292 | 273 |
| 293 void GenerateIteratingArrayBuiltinLoopContinuation( | 274 void GenerateIteratingArrayBuiltinLoopContinuation( |
| 294 const BuiltinResultIndexInitializer& index_initializer, | |
| 295 const CallResultProcessor& processor, const PostLoopAction& action) { | 275 const CallResultProcessor& processor, const PostLoopAction& action) { |
| 296 index_initializer(this); | |
| 297 | |
| 298 // 8. Repeat, while k < len | 276 // 8. Repeat, while k < len |
| 299 Label loop(this, {&k_, &a_, &to_}); | 277 Label loop(this, {&k_, &a_, &to_}); |
| 300 Label after_loop(this); | 278 Label after_loop(this); |
| 301 Goto(&loop); | 279 Goto(&loop); |
| 302 Bind(&loop); | 280 Bind(&loop); |
| 303 { | 281 { |
| 304 GotoUnlessNumberLessThan(k(), len_, &after_loop); | 282 GotoUnlessNumberLessThan(k(), len_, &after_loop); |
| 305 | 283 |
| 306 Label done_element(this, &to_); | 284 Label done_element(this, &to_); |
| 307 // a. Let Pk be ToString(k). | 285 // a. Let Pk be ToString(k). |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 | 589 |
| 612 TF_BUILTIN(ArrayForEachLoopContinuation, ArrayBuiltinCodeStubAssembler) { | 590 TF_BUILTIN(ArrayForEachLoopContinuation, ArrayBuiltinCodeStubAssembler) { |
| 613 Node* context = Parameter(Descriptor::kContext); | 591 Node* context = Parameter(Descriptor::kContext); |
| 614 Node* receiver = Parameter(Descriptor::kReceiver); | 592 Node* receiver = Parameter(Descriptor::kReceiver); |
| 615 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 593 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 616 Node* this_arg = Parameter(Descriptor::kThisArg); | 594 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 617 Node* array = Parameter(Descriptor::kArray); | 595 Node* array = Parameter(Descriptor::kArray); |
| 618 Node* object = Parameter(Descriptor::kObject); | 596 Node* object = Parameter(Descriptor::kObject); |
| 619 Node* initial_k = Parameter(Descriptor::kInitialK); | 597 Node* initial_k = Parameter(Descriptor::kInitialK); |
| 620 Node* len = Parameter(Descriptor::kLength); | 598 Node* len = Parameter(Descriptor::kLength); |
| 599 Node* to = Parameter(Descriptor::kTo); |
| 621 | 600 |
| 622 InitIteratingArrayBuiltinLoopContinuation( | 601 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, |
| 623 context, receiver, callbackfn, this_arg, array, object, initial_k, len); | 602 this_arg, array, object, initial_k, |
| 603 len, to); |
| 624 | 604 |
| 625 GenerateIteratingArrayBuiltinLoopContinuation( | 605 GenerateIteratingArrayBuiltinLoopContinuation( |
| 626 &ArrayBuiltinCodeStubAssembler::NullResultIndexReinitializer, | |
| 627 &ArrayBuiltinCodeStubAssembler::ForEachProcessor, | 606 &ArrayBuiltinCodeStubAssembler::ForEachProcessor, |
| 628 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); | 607 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); |
| 629 } | 608 } |
| 630 | 609 |
| 631 TF_BUILTIN(ArrayForEach, ArrayBuiltinCodeStubAssembler) { | 610 TF_BUILTIN(ArrayForEach, ArrayBuiltinCodeStubAssembler) { |
| 632 Node* context = Parameter(Descriptor::kContext); | 611 Node* context = Parameter(Descriptor::kContext); |
| 633 Node* receiver = Parameter(Descriptor::kReceiver); | 612 Node* receiver = Parameter(Descriptor::kReceiver); |
| 634 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 613 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 635 Node* this_arg = Parameter(Descriptor::kThisArg); | 614 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 636 Node* new_target = Parameter(Descriptor::kNewTarget); | 615 Node* new_target = Parameter(Descriptor::kNewTarget); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 648 | 627 |
| 649 TF_BUILTIN(ArraySomeLoopContinuation, ArrayBuiltinCodeStubAssembler) { | 628 TF_BUILTIN(ArraySomeLoopContinuation, ArrayBuiltinCodeStubAssembler) { |
| 650 Node* context = Parameter(Descriptor::kContext); | 629 Node* context = Parameter(Descriptor::kContext); |
| 651 Node* receiver = Parameter(Descriptor::kReceiver); | 630 Node* receiver = Parameter(Descriptor::kReceiver); |
| 652 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 631 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 653 Node* this_arg = Parameter(Descriptor::kThisArg); | 632 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 654 Node* array = Parameter(Descriptor::kArray); | 633 Node* array = Parameter(Descriptor::kArray); |
| 655 Node* object = Parameter(Descriptor::kObject); | 634 Node* object = Parameter(Descriptor::kObject); |
| 656 Node* initial_k = Parameter(Descriptor::kInitialK); | 635 Node* initial_k = Parameter(Descriptor::kInitialK); |
| 657 Node* len = Parameter(Descriptor::kLength); | 636 Node* len = Parameter(Descriptor::kLength); |
| 637 Node* to = Parameter(Descriptor::kTo); |
| 658 | 638 |
| 659 InitIteratingArrayBuiltinLoopContinuation( | 639 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, |
| 660 context, receiver, callbackfn, this_arg, array, object, initial_k, len); | 640 this_arg, array, object, initial_k, |
| 641 len, to); |
| 661 | 642 |
| 662 GenerateIteratingArrayBuiltinLoopContinuation( | 643 GenerateIteratingArrayBuiltinLoopContinuation( |
| 663 &ArrayBuiltinCodeStubAssembler::NullResultIndexReinitializer, | |
| 664 &ArrayBuiltinCodeStubAssembler::SomeProcessor, | 644 &ArrayBuiltinCodeStubAssembler::SomeProcessor, |
| 665 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); | 645 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); |
| 666 } | 646 } |
| 667 | 647 |
| 668 TF_BUILTIN(ArraySome, ArrayBuiltinCodeStubAssembler) { | 648 TF_BUILTIN(ArraySome, ArrayBuiltinCodeStubAssembler) { |
| 669 Node* context = Parameter(Descriptor::kContext); | 649 Node* context = Parameter(Descriptor::kContext); |
| 670 Node* receiver = Parameter(Descriptor::kReceiver); | 650 Node* receiver = Parameter(Descriptor::kReceiver); |
| 671 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 651 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 672 Node* this_arg = Parameter(Descriptor::kThisArg); | 652 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 673 Node* new_target = Parameter(Descriptor::kNewTarget); | 653 Node* new_target = Parameter(Descriptor::kNewTarget); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 685 | 665 |
| 686 TF_BUILTIN(ArrayEveryLoopContinuation, ArrayBuiltinCodeStubAssembler) { | 666 TF_BUILTIN(ArrayEveryLoopContinuation, ArrayBuiltinCodeStubAssembler) { |
| 687 Node* context = Parameter(Descriptor::kContext); | 667 Node* context = Parameter(Descriptor::kContext); |
| 688 Node* receiver = Parameter(Descriptor::kReceiver); | 668 Node* receiver = Parameter(Descriptor::kReceiver); |
| 689 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 669 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 690 Node* this_arg = Parameter(Descriptor::kThisArg); | 670 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 691 Node* array = Parameter(Descriptor::kArray); | 671 Node* array = Parameter(Descriptor::kArray); |
| 692 Node* object = Parameter(Descriptor::kObject); | 672 Node* object = Parameter(Descriptor::kObject); |
| 693 Node* initial_k = Parameter(Descriptor::kInitialK); | 673 Node* initial_k = Parameter(Descriptor::kInitialK); |
| 694 Node* len = Parameter(Descriptor::kLength); | 674 Node* len = Parameter(Descriptor::kLength); |
| 675 Node* to = Parameter(Descriptor::kTo); |
| 695 | 676 |
| 696 InitIteratingArrayBuiltinLoopContinuation( | 677 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, |
| 697 context, receiver, callbackfn, this_arg, array, object, initial_k, len); | 678 this_arg, array, object, initial_k, |
| 679 len, to); |
| 698 | 680 |
| 699 GenerateIteratingArrayBuiltinLoopContinuation( | 681 GenerateIteratingArrayBuiltinLoopContinuation( |
| 700 &ArrayBuiltinCodeStubAssembler::NullResultIndexReinitializer, | |
| 701 &ArrayBuiltinCodeStubAssembler::EveryProcessor, | 682 &ArrayBuiltinCodeStubAssembler::EveryProcessor, |
| 702 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); | 683 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); |
| 703 } | 684 } |
| 704 | 685 |
| 705 TF_BUILTIN(ArrayEvery, ArrayBuiltinCodeStubAssembler) { | 686 TF_BUILTIN(ArrayEvery, ArrayBuiltinCodeStubAssembler) { |
| 706 Node* context = Parameter(Descriptor::kContext); | 687 Node* context = Parameter(Descriptor::kContext); |
| 707 Node* receiver = Parameter(Descriptor::kReceiver); | 688 Node* receiver = Parameter(Descriptor::kReceiver); |
| 708 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 689 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 709 Node* this_arg = Parameter(Descriptor::kThisArg); | 690 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 710 Node* new_target = Parameter(Descriptor::kNewTarget); | 691 Node* new_target = Parameter(Descriptor::kNewTarget); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 722 | 703 |
| 723 TF_BUILTIN(ArrayReduceLoopContinuation, ArrayBuiltinCodeStubAssembler) { | 704 TF_BUILTIN(ArrayReduceLoopContinuation, ArrayBuiltinCodeStubAssembler) { |
| 724 Node* context = Parameter(Descriptor::kContext); | 705 Node* context = Parameter(Descriptor::kContext); |
| 725 Node* receiver = Parameter(Descriptor::kReceiver); | 706 Node* receiver = Parameter(Descriptor::kReceiver); |
| 726 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 707 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 727 Node* this_arg = Parameter(Descriptor::kThisArg); | 708 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 728 Node* accumulator = Parameter(Descriptor::kAccumulator); | 709 Node* accumulator = Parameter(Descriptor::kAccumulator); |
| 729 Node* object = Parameter(Descriptor::kObject); | 710 Node* object = Parameter(Descriptor::kObject); |
| 730 Node* initial_k = Parameter(Descriptor::kInitialK); | 711 Node* initial_k = Parameter(Descriptor::kInitialK); |
| 731 Node* len = Parameter(Descriptor::kLength); | 712 Node* len = Parameter(Descriptor::kLength); |
| 713 Node* to = Parameter(Descriptor::kTo); |
| 732 | 714 |
| 733 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, | 715 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, |
| 734 this_arg, accumulator, object, | 716 this_arg, accumulator, object, |
| 735 initial_k, len); | 717 initial_k, len, to); |
| 736 | 718 |
| 737 GenerateIteratingArrayBuiltinLoopContinuation( | 719 GenerateIteratingArrayBuiltinLoopContinuation( |
| 738 &ArrayBuiltinCodeStubAssembler::NullResultIndexReinitializer, | |
| 739 &ArrayBuiltinCodeStubAssembler::ReduceProcessor, | 720 &ArrayBuiltinCodeStubAssembler::ReduceProcessor, |
| 740 &ArrayBuiltinCodeStubAssembler::ReducePostLoopAction); | 721 &ArrayBuiltinCodeStubAssembler::ReducePostLoopAction); |
| 741 } | 722 } |
| 742 | 723 |
| 743 TF_BUILTIN(ArrayReduce, ArrayBuiltinCodeStubAssembler) { | 724 TF_BUILTIN(ArrayReduce, ArrayBuiltinCodeStubAssembler) { |
| 744 Node* context = Parameter(Descriptor::kContext); | 725 Node* context = Parameter(Descriptor::kContext); |
| 745 Node* receiver = Parameter(Descriptor::kReceiver); | 726 Node* receiver = Parameter(Descriptor::kReceiver); |
| 746 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 727 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 747 Node* initial_value = Parameter(Descriptor::kInitialValue); | 728 Node* initial_value = Parameter(Descriptor::kInitialValue); |
| 748 Node* new_target = Parameter(Descriptor::kNewTarget); | 729 Node* new_target = Parameter(Descriptor::kNewTarget); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 760 | 741 |
| 761 TF_BUILTIN(ArrayFilterLoopContinuation, ArrayBuiltinCodeStubAssembler) { | 742 TF_BUILTIN(ArrayFilterLoopContinuation, ArrayBuiltinCodeStubAssembler) { |
| 762 Node* context = Parameter(Descriptor::kContext); | 743 Node* context = Parameter(Descriptor::kContext); |
| 763 Node* receiver = Parameter(Descriptor::kReceiver); | 744 Node* receiver = Parameter(Descriptor::kReceiver); |
| 764 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 745 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 765 Node* this_arg = Parameter(Descriptor::kThisArg); | 746 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 766 Node* array = Parameter(Descriptor::kArray); | 747 Node* array = Parameter(Descriptor::kArray); |
| 767 Node* object = Parameter(Descriptor::kObject); | 748 Node* object = Parameter(Descriptor::kObject); |
| 768 Node* initial_k = Parameter(Descriptor::kInitialK); | 749 Node* initial_k = Parameter(Descriptor::kInitialK); |
| 769 Node* len = Parameter(Descriptor::kLength); | 750 Node* len = Parameter(Descriptor::kLength); |
| 751 Node* to = Parameter(Descriptor::kTo); |
| 770 | 752 |
| 771 InitIteratingArrayBuiltinLoopContinuation( | 753 InitIteratingArrayBuiltinLoopContinuation(context, receiver, callbackfn, |
| 772 context, receiver, callbackfn, this_arg, array, object, initial_k, len); | 754 this_arg, array, object, initial_k, |
| 755 len, to); |
| 773 | 756 |
| 774 GenerateIteratingArrayBuiltinLoopContinuation( | 757 GenerateIteratingArrayBuiltinLoopContinuation( |
| 775 &ArrayBuiltinCodeStubAssembler::FilterResultIndexReinitializer, | |
| 776 &ArrayBuiltinCodeStubAssembler::FilterProcessor, | 758 &ArrayBuiltinCodeStubAssembler::FilterProcessor, |
| 777 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); | 759 &ArrayBuiltinCodeStubAssembler::NullPostLoopAction); |
| 778 } | 760 } |
| 779 | 761 |
| 780 TF_BUILTIN(ArrayFilter, ArrayBuiltinCodeStubAssembler) { | 762 TF_BUILTIN(ArrayFilter, ArrayBuiltinCodeStubAssembler) { |
| 781 Node* context = Parameter(Descriptor::kContext); | 763 Node* context = Parameter(Descriptor::kContext); |
| 782 Node* receiver = Parameter(Descriptor::kReceiver); | 764 Node* receiver = Parameter(Descriptor::kReceiver); |
| 783 Node* callbackfn = Parameter(Descriptor::kCallbackFn); | 765 Node* callbackfn = Parameter(Descriptor::kCallbackFn); |
| 784 Node* this_arg = Parameter(Descriptor::kThisArg); | 766 Node* this_arg = Parameter(Descriptor::kThisArg); |
| 785 Node* new_target = Parameter(Descriptor::kNewTarget); | 767 Node* new_target = Parameter(Descriptor::kNewTarget); |
| (...skipping 1063 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1849 { | 1831 { |
| 1850 Node* message = SmiConstant(MessageTemplate::kDetachedOperation); | 1832 Node* message = SmiConstant(MessageTemplate::kDetachedOperation); |
| 1851 CallRuntime(Runtime::kThrowTypeError, context, message, | 1833 CallRuntime(Runtime::kThrowTypeError, context, message, |
| 1852 HeapConstant(operation)); | 1834 HeapConstant(operation)); |
| 1853 Unreachable(); | 1835 Unreachable(); |
| 1854 } | 1836 } |
| 1855 } | 1837 } |
| 1856 | 1838 |
| 1857 } // namespace internal | 1839 } // namespace internal |
| 1858 } // namespace v8 | 1840 } // namespace v8 |
| OLD | NEW |