Lines Matching refs:__
40 #define __ ACCESS_MASM(masm) macro
62 __ pop(kScratchRegister); // Save return address. in Generate_Adaptor()
63 __ push(rdi); in Generate_Adaptor()
64 __ push(kScratchRegister); // Restore return address. in Generate_Adaptor()
71 __ addq(rax, Immediate(num_extra_args + 1)); in Generate_Adaptor()
72 __ JumpToExternalReference(ExternalReference(id, masm->isolate()), 1); in Generate_Adaptor()
92 __ Integer32ToSmi(rax, rax); in Generate_JSConstructStubHelper()
93 __ push(rax); in Generate_JSConstructStubHelper()
96 __ push(rdi); in Generate_JSConstructStubHelper()
107 __ movq(kScratchRegister, debug_step_in_fp); in Generate_JSConstructStubHelper()
108 __ cmpq(Operand(kScratchRegister, 0), Immediate(0)); in Generate_JSConstructStubHelper()
109 __ j(not_equal, &rt_call); in Generate_JSConstructStubHelper()
115 __ movq(rax, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_JSConstructStubHelper()
118 __ JumpIfSmi(rax, &rt_call); in Generate_JSConstructStubHelper()
121 __ CmpObjectType(rax, MAP_TYPE, rbx); in Generate_JSConstructStubHelper()
122 __ j(not_equal, &rt_call); in Generate_JSConstructStubHelper()
129 __ CmpInstanceType(rax, JS_FUNCTION_TYPE); in Generate_JSConstructStubHelper()
130 __ j(equal, &rt_call); in Generate_JSConstructStubHelper()
135 __ movq(rcx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_JSConstructStubHelper()
136 __ decb(FieldOperand(rcx, in Generate_JSConstructStubHelper()
138 __ j(not_zero, &allocate); in Generate_JSConstructStubHelper()
140 __ push(rax); in Generate_JSConstructStubHelper()
141 __ push(rdi); in Generate_JSConstructStubHelper()
143 __ push(rdi); // constructor in Generate_JSConstructStubHelper()
145 __ CallRuntime(Runtime::kFinalizeInstanceSize, 1); in Generate_JSConstructStubHelper()
147 __ pop(rdi); in Generate_JSConstructStubHelper()
148 __ pop(rax); in Generate_JSConstructStubHelper()
150 __ bind(&allocate); in Generate_JSConstructStubHelper()
154 __ movzxbq(rdi, FieldOperand(rax, Map::kInstanceSizeOffset)); in Generate_JSConstructStubHelper()
155 __ shl(rdi, Immediate(kPointerSizeLog2)); in Generate_JSConstructStubHelper()
157 __ AllocateInNewSpace(rdi, in Generate_JSConstructStubHelper()
167 __ movq(Operand(rbx, JSObject::kMapOffset), rax); in Generate_JSConstructStubHelper()
168 __ LoadRoot(rcx, Heap::kEmptyFixedArrayRootIndex); in Generate_JSConstructStubHelper()
169 __ movq(Operand(rbx, JSObject::kPropertiesOffset), rcx); in Generate_JSConstructStubHelper()
170 __ movq(Operand(rbx, JSObject::kElementsOffset), rcx); in Generate_JSConstructStubHelper()
175 __ lea(rcx, Operand(rbx, JSObject::kHeaderSize)); in Generate_JSConstructStubHelper()
176 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_JSConstructStubHelper()
178 __ movzxbq(rsi, in Generate_JSConstructStubHelper()
180 __ lea(rsi, in Generate_JSConstructStubHelper()
184 __ cmpq(rsi, rdi); in Generate_JSConstructStubHelper()
185 __ Assert(less_equal, in Generate_JSConstructStubHelper()
188 __ InitializeFieldsWithFiller(rcx, rsi, rdx); in Generate_JSConstructStubHelper()
189 __ LoadRoot(rdx, Heap::kOnePointerFillerMapRootIndex); in Generate_JSConstructStubHelper()
191 __ InitializeFieldsWithFiller(rcx, rdi, rdx); in Generate_JSConstructStubHelper()
200 __ or_(rbx, Immediate(kHeapObjectTag)); in Generate_JSConstructStubHelper()
208 __ movzxbq(rdx, FieldOperand(rax, Map::kUnusedPropertyFieldsOffset)); in Generate_JSConstructStubHelper()
209 __ movzxbq(rcx, in Generate_JSConstructStubHelper()
211 __ addq(rdx, rcx); in Generate_JSConstructStubHelper()
213 __ movzxbq(rcx, FieldOperand(rax, Map::kInObjectPropertiesOffset)); in Generate_JSConstructStubHelper()
214 __ subq(rdx, rcx); in Generate_JSConstructStubHelper()
216 __ j(zero, &allocated); in Generate_JSConstructStubHelper()
217 __ Assert(positive, "Property allocation count failed."); in Generate_JSConstructStubHelper()
224 __ AllocateInNewSpace(FixedArray::kHeaderSize, in Generate_JSConstructStubHelper()
238 __ LoadRoot(rcx, Heap::kFixedArrayMapRootIndex); in Generate_JSConstructStubHelper()
239 __ movq(Operand(rdi, HeapObject::kMapOffset), rcx); // setup the map in Generate_JSConstructStubHelper()
240 __ Integer32ToSmi(rdx, rdx); in Generate_JSConstructStubHelper()
241 __ movq(Operand(rdi, FixedArray::kLengthOffset), rdx); // and length in Generate_JSConstructStubHelper()
249 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_JSConstructStubHelper()
250 __ lea(rcx, Operand(rdi, FixedArray::kHeaderSize)); in Generate_JSConstructStubHelper()
251 __ jmp(&entry); in Generate_JSConstructStubHelper()
252 __ bind(&loop); in Generate_JSConstructStubHelper()
253 __ movq(Operand(rcx, 0), rdx); in Generate_JSConstructStubHelper()
254 __ addq(rcx, Immediate(kPointerSize)); in Generate_JSConstructStubHelper()
255 __ bind(&entry); in Generate_JSConstructStubHelper()
256 __ cmpq(rcx, rax); in Generate_JSConstructStubHelper()
257 __ j(below, &loop); in Generate_JSConstructStubHelper()
264 __ or_(rdi, Immediate(kHeapObjectTag)); // add the heap tag in Generate_JSConstructStubHelper()
265 __ movq(FieldOperand(rbx, JSObject::kPropertiesOffset), rdi); in Generate_JSConstructStubHelper()
270 __ jmp(&allocated); in Generate_JSConstructStubHelper()
276 __ bind(&undo_allocation); in Generate_JSConstructStubHelper()
277 __ UndoAllocationInNewSpace(rbx); in Generate_JSConstructStubHelper()
282 __ bind(&rt_call); in Generate_JSConstructStubHelper()
284 __ movq(rdi, Operand(rsp, 0)); in Generate_JSConstructStubHelper()
285 __ push(rdi); in Generate_JSConstructStubHelper()
286 __ CallRuntime(Runtime::kNewObject, 1); in Generate_JSConstructStubHelper()
287 __ movq(rbx, rax); // store result in rbx in Generate_JSConstructStubHelper()
291 __ bind(&allocated); in Generate_JSConstructStubHelper()
293 __ pop(rdi); in Generate_JSConstructStubHelper()
296 __ movq(rax, Operand(rsp, 0)); in Generate_JSConstructStubHelper()
297 __ SmiToInteger32(rax, rax); in Generate_JSConstructStubHelper()
302 __ push(rbx); in Generate_JSConstructStubHelper()
303 __ push(rbx); in Generate_JSConstructStubHelper()
306 __ lea(rbx, Operand(rbp, StandardFrameConstants::kCallerSPOffset)); in Generate_JSConstructStubHelper()
310 __ movq(rcx, rax); in Generate_JSConstructStubHelper()
311 __ jmp(&entry); in Generate_JSConstructStubHelper()
312 __ bind(&loop); in Generate_JSConstructStubHelper()
313 __ push(Operand(rbx, rcx, times_pointer_size, 0)); in Generate_JSConstructStubHelper()
314 __ bind(&entry); in Generate_JSConstructStubHelper()
315 __ decq(rcx); in Generate_JSConstructStubHelper()
316 __ j(greater_equal, &loop); in Generate_JSConstructStubHelper()
320 __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_JSConstructStubHelper()
324 __ InvokeCode(code, expected, expected, RelocInfo::CODE_TARGET, in Generate_JSConstructStubHelper()
328 __ InvokeFunction(rdi, actual, CALL_FUNCTION, in Generate_JSConstructStubHelper()
338 __ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset)); in Generate_JSConstructStubHelper()
345 __ JumpIfSmi(rax, &use_receiver); in Generate_JSConstructStubHelper()
350 __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rcx); in Generate_JSConstructStubHelper()
351 __ j(above_equal, &exit); in Generate_JSConstructStubHelper()
355 __ bind(&use_receiver); in Generate_JSConstructStubHelper()
356 __ movq(rax, Operand(rsp, 0)); in Generate_JSConstructStubHelper()
359 __ bind(&exit); in Generate_JSConstructStubHelper()
360 __ movq(rbx, Operand(rsp, kPointerSize)); // Get arguments count. in Generate_JSConstructStubHelper()
366 __ pop(rcx); in Generate_JSConstructStubHelper()
368 __ lea(rsp, Operand(rsp, index.reg, index.scale, 1 * kPointerSize)); in Generate_JSConstructStubHelper()
369 __ push(rcx); in Generate_JSConstructStubHelper()
371 __ IncrementCounter(counters->constructed_objects(), 1); in Generate_JSConstructStubHelper()
372 __ ret(0); in Generate_JSConstructStubHelper()
417 __ Set(rsi, 0); in Generate_JSEntryTrampolineHelper()
422 __ movq(rsi, FieldOperand(rdx, JSFunction::kContextOffset)); in Generate_JSEntryTrampolineHelper()
425 __ push(rdx); in Generate_JSEntryTrampolineHelper()
426 __ push(r8); in Generate_JSEntryTrampolineHelper()
429 __ movq(rax, r9); in Generate_JSEntryTrampolineHelper()
431 __ movq(kScratchRegister, Operand(rbp, 0)); in Generate_JSEntryTrampolineHelper()
432 __ movq(rbx, Operand(kScratchRegister, EntryFrameConstants::kArgvOffset)); in Generate_JSEntryTrampolineHelper()
434 __ movq(rdi, rdx); in Generate_JSEntryTrampolineHelper()
443 __ movq(rdi, rsi); in Generate_JSEntryTrampolineHelper()
447 __ Set(rsi, 0); in Generate_JSEntryTrampolineHelper()
452 __ push(rdi); in Generate_JSEntryTrampolineHelper()
453 __ push(rdx); in Generate_JSEntryTrampolineHelper()
454 __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_JSEntryTrampolineHelper()
457 __ movq(rax, rcx); in Generate_JSEntryTrampolineHelper()
458 __ movq(rbx, r8); in Generate_JSEntryTrampolineHelper()
475 __ Set(rcx, 0); // Set loop variable to 0. in Generate_JSEntryTrampolineHelper()
476 __ jmp(&entry); in Generate_JSEntryTrampolineHelper()
477 __ bind(&loop); in Generate_JSEntryTrampolineHelper()
478 __ movq(kScratchRegister, Operand(rbx, rcx, times_pointer_size, 0)); in Generate_JSEntryTrampolineHelper()
479 __ push(Operand(kScratchRegister, 0)); // dereference handle in Generate_JSEntryTrampolineHelper()
480 __ addq(rcx, Immediate(1)); in Generate_JSEntryTrampolineHelper()
481 __ bind(&entry); in Generate_JSEntryTrampolineHelper()
482 __ cmpq(rcx, rax); in Generate_JSEntryTrampolineHelper()
483 __ j(not_equal, &loop); in Generate_JSEntryTrampolineHelper()
489 __ CallStub(&stub); in Generate_JSEntryTrampolineHelper()
493 __ InvokeFunction(rdi, actual, CALL_FUNCTION, in Generate_JSEntryTrampolineHelper()
502 __ ret(1 * kPointerSize); // Remove receiver. in Generate_JSEntryTrampolineHelper()
522 __ push(rdi); in Generate_LazyCompile()
524 __ push(rcx); in Generate_LazyCompile()
526 __ push(rdi); // Function is also the parameter to the runtime call. in Generate_LazyCompile()
527 __ CallRuntime(Runtime::kLazyCompile, 1); in Generate_LazyCompile()
530 __ pop(rcx); in Generate_LazyCompile()
532 __ pop(rdi); in Generate_LazyCompile()
538 __ lea(rax, FieldOperand(rax, Code::kHeaderSize)); in Generate_LazyCompile()
539 __ jmp(rax); in Generate_LazyCompile()
549 __ push(rdi); in Generate_LazyRecompile()
551 __ push(rcx); in Generate_LazyRecompile()
553 __ push(rdi); // Function is also the parameter to the runtime call. in Generate_LazyRecompile()
554 __ CallRuntime(Runtime::kLazyRecompile, 1); in Generate_LazyRecompile()
557 __ pop(rcx); in Generate_LazyRecompile()
559 __ pop(rdi); in Generate_LazyRecompile()
565 __ lea(rax, FieldOperand(rax, Code::kHeaderSize)); in Generate_LazyRecompile()
566 __ jmp(rax); in Generate_LazyRecompile()
577 __ Push(Smi::FromInt(static_cast<int>(type))); in Generate_NotifyDeoptimizedHelper()
579 __ CallRuntime(Runtime::kNotifyDeoptimized, 1); in Generate_NotifyDeoptimizedHelper()
584 __ SmiToInteger32(rcx, Operand(rsp, 1 * kPointerSize)); in Generate_NotifyDeoptimizedHelper()
588 __ cmpq(rcx, Immediate(FullCodeGenerator::NO_REGISTERS)); in Generate_NotifyDeoptimizedHelper()
589 __ j(not_equal, ¬_no_registers, Label::kNear); in Generate_NotifyDeoptimizedHelper()
590 __ ret(1 * kPointerSize); // Remove state. in Generate_NotifyDeoptimizedHelper()
592 __ bind(¬_no_registers); in Generate_NotifyDeoptimizedHelper()
593 __ movq(rax, Operand(rsp, 2 * kPointerSize)); in Generate_NotifyDeoptimizedHelper()
594 __ cmpq(rcx, Immediate(FullCodeGenerator::TOS_REG)); in Generate_NotifyDeoptimizedHelper()
595 __ j(not_equal, ¬_tos_rax, Label::kNear); in Generate_NotifyDeoptimizedHelper()
596 __ ret(2 * kPointerSize); // Remove state, rax. in Generate_NotifyDeoptimizedHelper()
598 __ bind(¬_tos_rax); in Generate_NotifyDeoptimizedHelper()
599 __ Abort("no cases left"); in Generate_NotifyDeoptimizedHelper()
617 __ Pushad(); in Generate_NotifyOSR()
620 __ CallRuntime(Runtime::kNotifyOSR, 0); in Generate_NotifyOSR()
622 __ Popad(); in Generate_NotifyOSR()
623 __ ret(0); in Generate_NotifyOSR()
640 __ testq(rax, rax); in Generate_FunctionCall()
641 __ j(not_zero, &done); in Generate_FunctionCall()
642 __ pop(rbx); in Generate_FunctionCall()
643 __ Push(masm->isolate()->factory()->undefined_value()); in Generate_FunctionCall()
644 __ push(rbx); in Generate_FunctionCall()
645 __ incq(rax); in Generate_FunctionCall()
646 __ bind(&done); in Generate_FunctionCall()
653 __ movq(rdi, Operand(rsp, rax, times_pointer_size, 1 * kPointerSize)); in Generate_FunctionCall()
654 __ JumpIfSmi(rdi, &non_function); in Generate_FunctionCall()
655 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx); in Generate_FunctionCall()
656 __ j(not_equal, &slow); in Generate_FunctionCall()
660 __ Set(rdx, 0); // indicate regular JS_FUNCTION in Generate_FunctionCall()
663 __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_FunctionCall()
666 __ movq(rbx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_FunctionCall()
667 __ testb(FieldOperand(rbx, SharedFunctionInfo::kStrictModeByteOffset), in Generate_FunctionCall()
669 __ j(not_equal, &shift_arguments); in Generate_FunctionCall()
673 __ testb(FieldOperand(rbx, SharedFunctionInfo::kNativeByteOffset), in Generate_FunctionCall()
675 __ j(not_zero, &shift_arguments); in Generate_FunctionCall()
678 __ movq(rbx, Operand(rsp, rax, times_pointer_size, 0)); in Generate_FunctionCall()
679 __ JumpIfSmi(rbx, &convert_to_object, Label::kNear); in Generate_FunctionCall()
681 __ CompareRoot(rbx, Heap::kNullValueRootIndex); in Generate_FunctionCall()
682 __ j(equal, &use_global_receiver); in Generate_FunctionCall()
683 __ CompareRoot(rbx, Heap::kUndefinedValueRootIndex); in Generate_FunctionCall()
684 __ j(equal, &use_global_receiver); in Generate_FunctionCall()
687 __ CmpObjectType(rbx, FIRST_SPEC_OBJECT_TYPE, rcx); in Generate_FunctionCall()
688 __ j(above_equal, &shift_arguments); in Generate_FunctionCall()
690 __ bind(&convert_to_object); in Generate_FunctionCall()
694 __ Integer32ToSmi(rax, rax); in Generate_FunctionCall()
695 __ push(rax); in Generate_FunctionCall()
697 __ push(rbx); in Generate_FunctionCall()
698 __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); in Generate_FunctionCall()
699 __ movq(rbx, rax); in Generate_FunctionCall()
700 __ Set(rdx, 0); // indicate regular JS_FUNCTION in Generate_FunctionCall()
702 __ pop(rax); in Generate_FunctionCall()
703 __ SmiToInteger32(rax, rax); in Generate_FunctionCall()
707 __ movq(rdi, Operand(rsp, rax, times_pointer_size, 1 * kPointerSize)); in Generate_FunctionCall()
708 __ jmp(&patch_receiver, Label::kNear); in Generate_FunctionCall()
712 __ bind(&use_global_receiver); in Generate_FunctionCall()
715 __ movq(rbx, FieldOperand(rsi, kGlobalIndex)); in Generate_FunctionCall()
716 __ movq(rbx, FieldOperand(rbx, GlobalObject::kGlobalContextOffset)); in Generate_FunctionCall()
717 __ movq(rbx, FieldOperand(rbx, kGlobalIndex)); in Generate_FunctionCall()
718 __ movq(rbx, FieldOperand(rbx, GlobalObject::kGlobalReceiverOffset)); in Generate_FunctionCall()
720 __ bind(&patch_receiver); in Generate_FunctionCall()
721 __ movq(Operand(rsp, rax, times_pointer_size, 0), rbx); in Generate_FunctionCall()
723 __ jmp(&shift_arguments); in Generate_FunctionCall()
727 __ bind(&slow); in Generate_FunctionCall()
728 __ Set(rdx, 1); // indicate function proxy in Generate_FunctionCall()
729 __ CmpInstanceType(rcx, JS_FUNCTION_PROXY_TYPE); in Generate_FunctionCall()
730 __ j(equal, &shift_arguments); in Generate_FunctionCall()
731 __ bind(&non_function); in Generate_FunctionCall()
732 __ Set(rdx, 2); // indicate non-function in Generate_FunctionCall()
738 __ movq(Operand(rsp, rax, times_pointer_size, 0), rdi); in Generate_FunctionCall()
743 __ bind(&shift_arguments); in Generate_FunctionCall()
745 __ movq(rcx, rax); in Generate_FunctionCall()
746 __ bind(&loop); in Generate_FunctionCall()
747 __ movq(rbx, Operand(rsp, rcx, times_pointer_size, 0)); in Generate_FunctionCall()
748 __ movq(Operand(rsp, rcx, times_pointer_size, 1 * kPointerSize), rbx); in Generate_FunctionCall()
749 __ decq(rcx); in Generate_FunctionCall()
750 __ j(not_sign, &loop); // While non-negative (to copy return address). in Generate_FunctionCall()
751 __ pop(rbx); // Discard copy of return address. in Generate_FunctionCall()
752 __ decq(rax); // One fewer argument (first argument is new receiver). in Generate_FunctionCall()
758 __ testq(rdx, rdx); in Generate_FunctionCall()
759 __ j(zero, &function); in Generate_FunctionCall()
760 __ Set(rbx, 0); in Generate_FunctionCall()
761 __ SetCallKind(rcx, CALL_AS_METHOD); in Generate_FunctionCall()
762 __ cmpq(rdx, Immediate(1)); in Generate_FunctionCall()
763 __ j(not_equal, &non_proxy); in Generate_FunctionCall()
765 __ pop(rdx); // return address in Generate_FunctionCall()
766 __ push(rdi); // re-add proxy object as additional argument in Generate_FunctionCall()
767 __ push(rdx); in Generate_FunctionCall()
768 __ incq(rax); in Generate_FunctionCall()
769 __ GetBuiltinEntry(rdx, Builtins::CALL_FUNCTION_PROXY); in Generate_FunctionCall()
770 __ jmp(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(), in Generate_FunctionCall()
773 __ bind(&non_proxy); in Generate_FunctionCall()
774 __ GetBuiltinEntry(rdx, Builtins::CALL_NON_FUNCTION); in Generate_FunctionCall()
775 __ Jump(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(), in Generate_FunctionCall()
777 __ bind(&function); in Generate_FunctionCall()
783 __ movq(rdx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_FunctionCall()
784 __ movsxlq(rbx, in Generate_FunctionCall()
787 __ movq(rdx, FieldOperand(rdi, JSFunction::kCodeEntryOffset)); in Generate_FunctionCall()
788 __ SetCallKind(rcx, CALL_AS_METHOD); in Generate_FunctionCall()
789 __ cmpq(rax, rbx); in Generate_FunctionCall()
790 __ j(not_equal, in Generate_FunctionCall()
795 __ InvokeCode(rdx, expected, expected, JUMP_FUNCTION, in Generate_FunctionCall()
818 __ push(Operand(rbp, kFunctionOffset)); in Generate_FunctionApply()
819 __ push(Operand(rbp, kArgumentsOffset)); in Generate_FunctionApply()
820 __ InvokeBuiltin(Builtins::APPLY_PREPARE, CALL_FUNCTION); in Generate_FunctionApply()
826 __ LoadRoot(kScratchRegister, Heap::kRealStackLimitRootIndex); in Generate_FunctionApply()
827 __ movq(rcx, rsp); in Generate_FunctionApply()
830 __ subq(rcx, kScratchRegister); in Generate_FunctionApply()
833 __ PositiveSmiTimesPowerOfTwoToInteger64(rdx, rax, kPointerSizeLog2); in Generate_FunctionApply()
835 __ cmpq(rcx, rdx); in Generate_FunctionApply()
836 __ j(greater, &okay); // Signed comparison. in Generate_FunctionApply()
839 __ push(Operand(rbp, kFunctionOffset)); in Generate_FunctionApply()
840 __ push(rax); in Generate_FunctionApply()
841 __ InvokeBuiltin(Builtins::APPLY_OVERFLOW, CALL_FUNCTION); in Generate_FunctionApply()
842 __ bind(&okay); in Generate_FunctionApply()
849 __ push(rax); // limit in Generate_FunctionApply()
850 __ push(Immediate(0)); // index in Generate_FunctionApply()
853 __ movq(rbx, Operand(rbp, kReceiverOffset)); in Generate_FunctionApply()
857 __ movq(rdi, Operand(rbp, kFunctionOffset)); in Generate_FunctionApply()
858 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx); in Generate_FunctionApply()
859 __ j(not_equal, &push_receiver); in Generate_FunctionApply()
862 __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_FunctionApply()
866 __ movq(rdx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_FunctionApply()
867 __ testb(FieldOperand(rdx, SharedFunctionInfo::kStrictModeByteOffset), in Generate_FunctionApply()
869 __ j(not_equal, &push_receiver); in Generate_FunctionApply()
872 __ testb(FieldOperand(rdx, SharedFunctionInfo::kNativeByteOffset), in Generate_FunctionApply()
874 __ j(not_equal, &push_receiver); in Generate_FunctionApply()
877 __ JumpIfSmi(rbx, &call_to_object, Label::kNear); in Generate_FunctionApply()
878 __ CompareRoot(rbx, Heap::kNullValueRootIndex); in Generate_FunctionApply()
879 __ j(equal, &use_global_receiver); in Generate_FunctionApply()
880 __ CompareRoot(rbx, Heap::kUndefinedValueRootIndex); in Generate_FunctionApply()
881 __ j(equal, &use_global_receiver); in Generate_FunctionApply()
886 __ CmpObjectType(rbx, FIRST_SPEC_OBJECT_TYPE, rcx); in Generate_FunctionApply()
887 __ j(above_equal, &push_receiver); in Generate_FunctionApply()
890 __ bind(&call_to_object); in Generate_FunctionApply()
891 __ push(rbx); in Generate_FunctionApply()
892 __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); in Generate_FunctionApply()
893 __ movq(rbx, rax); in Generate_FunctionApply()
894 __ jmp(&push_receiver, Label::kNear); in Generate_FunctionApply()
897 __ bind(&use_global_receiver); in Generate_FunctionApply()
900 __ movq(rbx, FieldOperand(rsi, kGlobalOffset)); in Generate_FunctionApply()
901 __ movq(rbx, FieldOperand(rbx, GlobalObject::kGlobalContextOffset)); in Generate_FunctionApply()
902 __ movq(rbx, FieldOperand(rbx, kGlobalOffset)); in Generate_FunctionApply()
903 __ movq(rbx, FieldOperand(rbx, GlobalObject::kGlobalReceiverOffset)); in Generate_FunctionApply()
906 __ bind(&push_receiver); in Generate_FunctionApply()
907 __ push(rbx); in Generate_FunctionApply()
911 __ movq(rax, Operand(rbp, kIndexOffset)); in Generate_FunctionApply()
912 __ jmp(&entry); in Generate_FunctionApply()
913 __ bind(&loop); in Generate_FunctionApply()
914 __ movq(rdx, Operand(rbp, kArgumentsOffset)); // load arguments in Generate_FunctionApply()
919 __ Call(ic, RelocInfo::CODE_TARGET); in Generate_FunctionApply()
926 __ push(rax); in Generate_FunctionApply()
929 __ movq(rax, Operand(rbp, kIndexOffset)); in Generate_FunctionApply()
930 __ SmiAddConstant(rax, rax, Smi::FromInt(1)); in Generate_FunctionApply()
931 __ movq(Operand(rbp, kIndexOffset), rax); in Generate_FunctionApply()
933 __ bind(&entry); in Generate_FunctionApply()
934 __ cmpq(rax, Operand(rbp, kLimitOffset)); in Generate_FunctionApply()
935 __ j(not_equal, &loop); in Generate_FunctionApply()
940 __ SmiToInteger32(rax, rax); in Generate_FunctionApply()
941 __ movq(rdi, Operand(rbp, kFunctionOffset)); in Generate_FunctionApply()
942 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx); in Generate_FunctionApply()
943 __ j(not_equal, &call_proxy); in Generate_FunctionApply()
944 __ InvokeFunction(rdi, actual, CALL_FUNCTION, in Generate_FunctionApply()
948 __ ret(3 * kPointerSize); // remove this, receiver, and arguments in Generate_FunctionApply()
951 __ bind(&call_proxy); in Generate_FunctionApply()
952 __ push(rdi); // add function proxy as last argument in Generate_FunctionApply()
953 __ incq(rax); in Generate_FunctionApply()
954 __ Set(rbx, 0); in Generate_FunctionApply()
955 __ SetCallKind(rcx, CALL_AS_METHOD); in Generate_FunctionApply()
956 __ GetBuiltinEntry(rdx, Builtins::CALL_FUNCTION_PROXY); in Generate_FunctionApply()
957 __ call(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(), in Generate_FunctionApply()
962 __ ret(3 * kPointerSize); // remove this, receiver, and arguments in Generate_FunctionApply()
980 __ LoadInitialArrayMap(array_function, scratch2, scratch1); in AllocateEmptyJSArray()
988 __ AllocateInNewSpace(size, in AllocateEmptyJSArray()
1001 __ movq(FieldOperand(result, JSObject::kMapOffset), scratch1); in AllocateEmptyJSArray()
1002 __ Move(FieldOperand(result, JSArray::kPropertiesOffset), in AllocateEmptyJSArray()
1005 __ Move(FieldOperand(result, JSArray::kLengthOffset), Smi::FromInt(0)); in AllocateEmptyJSArray()
1010 __ Move(FieldOperand(result, JSArray::kElementsOffset), in AllocateEmptyJSArray()
1019 __ lea(scratch1, Operand(result, JSArray::kSize)); in AllocateEmptyJSArray()
1020 __ movq(FieldOperand(result, JSArray::kElementsOffset), scratch1); in AllocateEmptyJSArray()
1027 __ Move(FieldOperand(scratch1, HeapObject::kMapOffset), in AllocateEmptyJSArray()
1029 __ Move(FieldOperand(scratch1, FixedArray::kLengthOffset), in AllocateEmptyJSArray()
1035 __ LoadRoot(scratch3, Heap::kTheHoleValueRootIndex); in AllocateEmptyJSArray()
1040 __ movq(FieldOperand(scratch1, in AllocateEmptyJSArray()
1046 __ movq(scratch2, Immediate(initial_capacity)); in AllocateEmptyJSArray()
1047 __ jmp(&entry); in AllocateEmptyJSArray()
1048 __ bind(&loop); in AllocateEmptyJSArray()
1049 __ movq(FieldOperand(scratch1, in AllocateEmptyJSArray()
1054 __ bind(&entry); in AllocateEmptyJSArray()
1055 __ decq(scratch2); in AllocateEmptyJSArray()
1056 __ j(not_sign, &loop); in AllocateEmptyJSArray()
1079 __ LoadInitialArrayMap(array_function, scratch, elements_array); in AllocateJSArray()
1082 __ testq(array_size, array_size); in AllocateJSArray()
1083 __ Assert(not_zero, "array size is unexpectedly 0"); in AllocateJSArray()
1090 __ AllocateInNewSpace(JSArray::kSize + FixedArray::kHeaderSize, in AllocateJSArray()
1106 __ movq(FieldOperand(result, JSObject::kMapOffset), elements_array); in AllocateJSArray()
1107 __ Move(elements_array, factory->empty_fixed_array()); in AllocateJSArray()
1108 __ movq(FieldOperand(result, JSArray::kPropertiesOffset), elements_array); in AllocateJSArray()
1110 __ movq(FieldOperand(result, JSArray::kLengthOffset), array_size); in AllocateJSArray()
1117 __ lea(elements_array, Operand(result, JSArray::kSize)); in AllocateJSArray()
1118 __ movq(FieldOperand(result, JSArray::kElementsOffset), elements_array); in AllocateJSArray()
1125 __ Move(FieldOperand(elements_array, JSObject::kMapOffset), in AllocateJSArray()
1129 __ movq(FieldOperand(elements_array, FixedArray::kLengthOffset), array_size); in AllocateJSArray()
1137 __ LoadRoot(scratch, Heap::kTheHoleValueRootIndex); in AllocateJSArray()
1138 __ lea(elements_array, Operand(elements_array, in AllocateJSArray()
1140 __ jmp(&entry); in AllocateJSArray()
1141 __ bind(&loop); in AllocateJSArray()
1142 __ movq(Operand(elements_array, 0), scratch); in AllocateJSArray()
1143 __ addq(elements_array, Immediate(kPointerSize)); in AllocateJSArray()
1144 __ bind(&entry); in AllocateJSArray()
1145 __ cmpq(elements_array, elements_array_end); in AllocateJSArray()
1146 __ j(below, &loop); in AllocateJSArray()
1171 __ testq(rax, rax); in ArrayNativeCode()
1172 __ j(not_zero, &argc_one_or_more); in ArrayNativeCode()
1174 __ bind(&empty_array); in ArrayNativeCode()
1184 __ IncrementCounter(counters->array_function_native(), 1); in ArrayNativeCode()
1185 __ movq(rax, rbx); in ArrayNativeCode()
1186 __ ret(kPointerSize); in ArrayNativeCode()
1190 __ bind(&argc_one_or_more); in ArrayNativeCode()
1191 __ cmpq(rax, Immediate(1)); in ArrayNativeCode()
1192 __ j(not_equal, &argc_two_or_more); in ArrayNativeCode()
1193 __ movq(rdx, Operand(rsp, kPointerSize)); // Get the argument from the stack. in ArrayNativeCode()
1195 __ SmiTest(rdx); in ArrayNativeCode()
1196 __ j(not_zero, ¬_empty_array); in ArrayNativeCode()
1197 __ pop(r8); // Adjust stack. in ArrayNativeCode()
1198 __ Drop(1); in ArrayNativeCode()
1199 __ push(r8); in ArrayNativeCode()
1200 __ movq(rax, Immediate(0)); // Treat this as a call with argc of zero. in ArrayNativeCode()
1201 __ jmp(&empty_array); in ArrayNativeCode()
1203 __ bind(¬_empty_array); in ArrayNativeCode()
1204 __ JumpUnlessNonNegativeSmi(rdx, call_generic_code); in ArrayNativeCode()
1208 __ SmiCompare(rdx, Smi::FromInt(JSObject::kInitialMaxFastElementArray)); in ArrayNativeCode()
1209 __ j(greater_equal, call_generic_code); in ArrayNativeCode()
1225 __ IncrementCounter(counters->array_function_native(), 1); in ArrayNativeCode()
1226 __ movq(rax, rbx); in ArrayNativeCode()
1227 __ ret(2 * kPointerSize); in ArrayNativeCode()
1230 __ bind(&argc_two_or_more); in ArrayNativeCode()
1231 __ movq(rdx, rax); in ArrayNativeCode()
1232 __ Integer32ToSmi(rdx, rdx); // Convet argc to a smi. in ArrayNativeCode()
1247 __ IncrementCounter(counters->array_function_native(), 1); in ArrayNativeCode()
1257 __ lea(r9, Operand(rsp, kPointerSize)); in ArrayNativeCode()
1261 __ lea(rdx, Operand(rcx, FixedArray::kHeaderSize - kHeapObjectTag)); in ArrayNativeCode()
1270 __ movq(rcx, rax); in ArrayNativeCode()
1271 __ jmp(&entry); in ArrayNativeCode()
1272 __ bind(&loop); in ArrayNativeCode()
1273 __ movq(r8, Operand(r9, rcx, times_pointer_size, 0)); in ArrayNativeCode()
1275 __ JumpIfNotSmi(r8, &has_non_smi_element); in ArrayNativeCode()
1277 __ movq(Operand(rdx, 0), r8); in ArrayNativeCode()
1278 __ addq(rdx, Immediate(kPointerSize)); in ArrayNativeCode()
1279 __ bind(&entry); in ArrayNativeCode()
1280 __ decq(rcx); in ArrayNativeCode()
1281 __ j(greater_equal, &loop); in ArrayNativeCode()
1288 __ bind(&finish); in ArrayNativeCode()
1289 __ pop(rcx); in ArrayNativeCode()
1290 __ lea(rsp, Operand(rsp, rax, times_pointer_size, 1 * kPointerSize)); in ArrayNativeCode()
1291 __ push(rcx); in ArrayNativeCode()
1292 __ movq(rax, rbx); in ArrayNativeCode()
1293 __ ret(0); in ArrayNativeCode()
1295 __ bind(&has_non_smi_element); in ArrayNativeCode()
1297 __ CheckMap(r8, in ArrayNativeCode()
1301 __ bind(&cant_transition_map); in ArrayNativeCode()
1302 __ UndoAllocationInNewSpace(rbx); in ArrayNativeCode()
1303 __ jmp(call_generic_code); in ArrayNativeCode()
1305 __ bind(¬_double); in ArrayNativeCode()
1308 __ movq(r11, FieldOperand(rbx, HeapObject::kMapOffset)); in ArrayNativeCode()
1309 __ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, in ArrayNativeCode()
1315 __ movq(FieldOperand(rbx, HeapObject::kMapOffset), r11); in ArrayNativeCode()
1316 __ RecordWriteField(rbx, HeapObject::kMapOffset, r11, r8, in ArrayNativeCode()
1321 __ bind(&loop2); in ArrayNativeCode()
1322 __ movq(r8, Operand(r9, rcx, times_pointer_size, 0)); in ArrayNativeCode()
1323 __ movq(Operand(rdx, 0), r8); in ArrayNativeCode()
1324 __ addq(rdx, Immediate(kPointerSize)); in ArrayNativeCode()
1325 __ decq(rcx); in ArrayNativeCode()
1326 __ j(greater_equal, &loop2); in ArrayNativeCode()
1327 __ jmp(&finish); in ArrayNativeCode()
1340 __ LoadGlobalFunction(Context::INTERNAL_ARRAY_FUNCTION_INDEX, rdi); in Generate_InternalArrayCode()
1344 __ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_InternalArrayCode()
1348 __ Check(not_smi, "Unexpected initial map for InternalArray function"); in Generate_InternalArrayCode()
1349 __ CmpObjectType(rbx, MAP_TYPE, rcx); in Generate_InternalArrayCode()
1350 __ Check(equal, "Unexpected initial map for InternalArray function"); in Generate_InternalArrayCode()
1359 __ bind(&generic_array_code); in Generate_InternalArrayCode()
1362 __ Jump(array_code, RelocInfo::CODE_TARGET); in Generate_InternalArrayCode()
1375 __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, rdi); in Generate_ArrayCode()
1379 __ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_ArrayCode()
1383 __ Check(not_smi, "Unexpected initial map for Array function"); in Generate_ArrayCode()
1384 __ CmpObjectType(rbx, MAP_TYPE, rcx); in Generate_ArrayCode()
1385 __ Check(equal, "Unexpected initial map for Array function"); in Generate_ArrayCode()
1393 __ bind(&generic_array_code); in Generate_ArrayCode()
1396 __ Jump(array_code, RelocInfo::CODE_TARGET); in Generate_ArrayCode()
1413 __ movq(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_ArrayConstructCode()
1417 __ Check(not_smi, "Unexpected initial map for Array function"); in Generate_ArrayConstructCode()
1418 __ CmpObjectType(rbx, MAP_TYPE, rcx); in Generate_ArrayConstructCode()
1419 __ Check(equal, "Unexpected initial map for Array function"); in Generate_ArrayConstructCode()
1427 __ bind(&generic_constructor); in Generate_ArrayConstructCode()
1430 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); in Generate_ArrayConstructCode()
1443 __ IncrementCounter(counters->string_ctor_calls(), 1); in Generate_StringConstructCode()
1446 __ LoadGlobalFunction(Context::STRING_FUNCTION_INDEX, rcx); in Generate_StringConstructCode()
1447 __ cmpq(rdi, rcx); in Generate_StringConstructCode()
1448 __ Assert(equal, "Unexpected String function"); in Generate_StringConstructCode()
1454 __ testq(rax, rax); in Generate_StringConstructCode()
1455 __ j(zero, &no_arguments); in Generate_StringConstructCode()
1456 __ movq(rbx, Operand(rsp, rax, times_pointer_size, 0)); in Generate_StringConstructCode()
1457 __ pop(rcx); in Generate_StringConstructCode()
1458 __ lea(rsp, Operand(rsp, rax, times_pointer_size, kPointerSize)); in Generate_StringConstructCode()
1459 __ push(rcx); in Generate_StringConstructCode()
1460 __ movq(rax, rbx); in Generate_StringConstructCode()
1472 __ IncrementCounter(counters->string_ctor_cached_number(), 1); in Generate_StringConstructCode()
1473 __ bind(&argument_is_string); in Generate_StringConstructCode()
1483 __ AllocateInNewSpace(JSValue::kSize, in Generate_StringConstructCode()
1491 __ LoadGlobalFunctionInitialMap(rdi, rcx); in Generate_StringConstructCode()
1493 __ cmpb(FieldOperand(rcx, Map::kInstanceSizeOffset), in Generate_StringConstructCode()
1495 __ Assert(equal, "Unexpected string wrapper instance size"); in Generate_StringConstructCode()
1496 __ cmpb(FieldOperand(rcx, Map::kUnusedPropertyFieldsOffset), Immediate(0)); in Generate_StringConstructCode()
1497 __ Assert(equal, "Unexpected unused properties of string wrapper"); in Generate_StringConstructCode()
1499 __ movq(FieldOperand(rax, HeapObject::kMapOffset), rcx); in Generate_StringConstructCode()
1502 __ LoadRoot(rcx, Heap::kEmptyFixedArrayRootIndex); in Generate_StringConstructCode()
1503 __ movq(FieldOperand(rax, JSObject::kPropertiesOffset), rcx); in Generate_StringConstructCode()
1504 __ movq(FieldOperand(rax, JSObject::kElementsOffset), rcx); in Generate_StringConstructCode()
1507 __ movq(FieldOperand(rax, JSValue::kValueOffset), rbx); in Generate_StringConstructCode()
1513 __ ret(0); in Generate_StringConstructCode()
1518 __ bind(¬_cached); in Generate_StringConstructCode()
1520 __ JumpIfSmi(rax, &convert_argument); in Generate_StringConstructCode()
1522 __ j(NegateCondition(is_string), &convert_argument); in Generate_StringConstructCode()
1523 __ movq(rbx, rax); in Generate_StringConstructCode()
1524 __ IncrementCounter(counters->string_ctor_string_value(), 1); in Generate_StringConstructCode()
1525 __ jmp(&argument_is_string); in Generate_StringConstructCode()
1528 __ bind(&convert_argument); in Generate_StringConstructCode()
1529 __ IncrementCounter(counters->string_ctor_conversions(), 1); in Generate_StringConstructCode()
1532 __ push(rdi); // Preserve the function. in Generate_StringConstructCode()
1533 __ push(rax); in Generate_StringConstructCode()
1534 __ InvokeBuiltin(Builtins::TO_STRING, CALL_FUNCTION); in Generate_StringConstructCode()
1535 __ pop(rdi); in Generate_StringConstructCode()
1537 __ movq(rbx, rax); in Generate_StringConstructCode()
1538 __ jmp(&argument_is_string); in Generate_StringConstructCode()
1542 __ bind(&no_arguments); in Generate_StringConstructCode()
1543 __ LoadRoot(rbx, Heap::kEmptyStringRootIndex); in Generate_StringConstructCode()
1544 __ pop(rcx); in Generate_StringConstructCode()
1545 __ lea(rsp, Operand(rsp, kPointerSize)); in Generate_StringConstructCode()
1546 __ push(rcx); in Generate_StringConstructCode()
1547 __ jmp(&argument_is_string); in Generate_StringConstructCode()
1551 __ bind(&gc_required); in Generate_StringConstructCode()
1552 __ IncrementCounter(counters->string_ctor_gc_required(), 1); in Generate_StringConstructCode()
1555 __ push(rbx); in Generate_StringConstructCode()
1556 __ CallRuntime(Runtime::kNewStringWrapper, 1); in Generate_StringConstructCode()
1558 __ ret(0); in Generate_StringConstructCode()
1563 __ push(rbp); in EnterArgumentsAdaptorFrame()
1564 __ movq(rbp, rsp); in EnterArgumentsAdaptorFrame()
1567 __ Push(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR)); in EnterArgumentsAdaptorFrame()
1570 __ push(rdi); in EnterArgumentsAdaptorFrame()
1575 __ Integer32ToSmi(r8, rax); in EnterArgumentsAdaptorFrame()
1576 __ push(r8); in EnterArgumentsAdaptorFrame()
1582 __ movq(rbx, Operand(rbp, ArgumentsAdaptorFrameConstants::kLengthOffset)); in LeaveArgumentsAdaptorFrame()
1585 __ movq(rsp, rbp); in LeaveArgumentsAdaptorFrame()
1586 __ pop(rbp); in LeaveArgumentsAdaptorFrame()
1589 __ pop(rcx); in LeaveArgumentsAdaptorFrame()
1591 __ lea(rsp, Operand(rsp, index.reg, index.scale, 1 * kPointerSize)); in LeaveArgumentsAdaptorFrame()
1592 __ push(rcx); in LeaveArgumentsAdaptorFrame()
1606 __ IncrementCounter(counters->arguments_adaptors(), 1); in Generate_ArgumentsAdaptorTrampoline()
1609 __ cmpq(rax, rbx); in Generate_ArgumentsAdaptorTrampoline()
1610 __ j(less, &too_few); in Generate_ArgumentsAdaptorTrampoline()
1611 __ cmpq(rbx, Immediate(SharedFunctionInfo::kDontAdaptArgumentsSentinel)); in Generate_ArgumentsAdaptorTrampoline()
1612 __ j(equal, &dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
1615 __ bind(&enough); in Generate_ArgumentsAdaptorTrampoline()
1620 __ lea(rax, Operand(rbp, rax, times_pointer_size, offset)); in Generate_ArgumentsAdaptorTrampoline()
1621 __ Set(r8, -1); // account for receiver in Generate_ArgumentsAdaptorTrampoline()
1624 __ bind(©); in Generate_ArgumentsAdaptorTrampoline()
1625 __ incq(r8); in Generate_ArgumentsAdaptorTrampoline()
1626 __ push(Operand(rax, 0)); in Generate_ArgumentsAdaptorTrampoline()
1627 __ subq(rax, Immediate(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
1628 __ cmpq(r8, rbx); in Generate_ArgumentsAdaptorTrampoline()
1629 __ j(less, ©); in Generate_ArgumentsAdaptorTrampoline()
1630 __ jmp(&invoke); in Generate_ArgumentsAdaptorTrampoline()
1634 __ bind(&too_few); in Generate_ArgumentsAdaptorTrampoline()
1639 __ lea(rdi, Operand(rbp, rax, times_pointer_size, offset)); in Generate_ArgumentsAdaptorTrampoline()
1640 __ Set(r8, -1); // account for receiver in Generate_ArgumentsAdaptorTrampoline()
1643 __ bind(©); in Generate_ArgumentsAdaptorTrampoline()
1644 __ incq(r8); in Generate_ArgumentsAdaptorTrampoline()
1645 __ push(Operand(rdi, 0)); in Generate_ArgumentsAdaptorTrampoline()
1646 __ subq(rdi, Immediate(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
1647 __ cmpq(r8, rax); in Generate_ArgumentsAdaptorTrampoline()
1648 __ j(less, ©); in Generate_ArgumentsAdaptorTrampoline()
1652 __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex); in Generate_ArgumentsAdaptorTrampoline()
1653 __ bind(&fill); in Generate_ArgumentsAdaptorTrampoline()
1654 __ incq(r8); in Generate_ArgumentsAdaptorTrampoline()
1655 __ push(kScratchRegister); in Generate_ArgumentsAdaptorTrampoline()
1656 __ cmpq(r8, rbx); in Generate_ArgumentsAdaptorTrampoline()
1657 __ j(less, &fill); in Generate_ArgumentsAdaptorTrampoline()
1660 __ movq(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_ArgumentsAdaptorTrampoline()
1664 __ bind(&invoke); in Generate_ArgumentsAdaptorTrampoline()
1665 __ call(rdx); in Generate_ArgumentsAdaptorTrampoline()
1672 __ ret(0); in Generate_ArgumentsAdaptorTrampoline()
1677 __ bind(&dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
1678 __ jmp(rdx); in Generate_ArgumentsAdaptorTrampoline()
1686 __ movq(rbx, Operand(rsp, 0)); // return address in Generate_OnStackReplacement()
1687 __ movzxbq(rbx, Operand(rbx, 1)); // depth in Generate_OnStackReplacement()
1693 __ movq(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_OnStackReplacement()
1694 __ movq(rcx, FieldOperand(rax, JSFunction::kSharedFunctionInfoOffset)); in Generate_OnStackReplacement()
1695 __ movq(rcx, FieldOperand(rcx, SharedFunctionInfo::kCodeOffset)); in Generate_OnStackReplacement()
1696 __ cmpb(rbx, FieldOperand(rcx, Code::kAllowOSRAtLoopNestingLevelOffset)); in Generate_OnStackReplacement()
1697 __ j(greater, &stack_check); in Generate_OnStackReplacement()
1703 __ push(rax); in Generate_OnStackReplacement()
1704 __ CallRuntime(Runtime::kCompileForOnStackReplacement, 1); in Generate_OnStackReplacement()
1710 __ SmiCompare(rax, Smi::FromInt(-1)); in Generate_OnStackReplacement()
1711 __ j(not_equal, &skip, Label::kNear); in Generate_OnStackReplacement()
1712 __ ret(0); in Generate_OnStackReplacement()
1716 __ bind(&stack_check); in Generate_OnStackReplacement()
1718 __ CompareRoot(rsp, Heap::kStackLimitRootIndex); in Generate_OnStackReplacement()
1719 __ j(above_equal, &ok, Label::kNear); in Generate_OnStackReplacement()
1722 __ TailCallStub(&stub); in Generate_OnStackReplacement()
1724 __ Abort("Unreachable code: returned from tail call."); in Generate_OnStackReplacement()
1726 __ bind(&ok); in Generate_OnStackReplacement()
1727 __ ret(0); in Generate_OnStackReplacement()
1729 __ bind(&skip); in Generate_OnStackReplacement()
1731 __ SmiToInteger32(rax, rax); in Generate_OnStackReplacement()
1732 __ push(rax); in Generate_OnStackReplacement()
1741 #undef __