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 |