• Home
  • Raw
  • Download

Lines Matching full:__

17 #define __ ACCESS_MASM(masm)  macro
31 __ AssertFunction(rdi); in Generate_Adaptor()
40 __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_Adaptor()
45 __ addp(rax, Immediate(num_extra_args + 1)); in Generate_Adaptor()
49 __ PopReturnAddressTo(kScratchRegister); in Generate_Adaptor()
50 __ Integer32ToSmi(rax, rax); in Generate_Adaptor()
51 __ Push(rax); in Generate_Adaptor()
52 __ SmiToInteger32(rax, rax); in Generate_Adaptor()
53 __ Push(rdi); in Generate_Adaptor()
54 __ Push(rdx); in Generate_Adaptor()
55 __ PushReturnAddressFrom(kScratchRegister); in Generate_Adaptor()
57 __ JumpToExternalReference(ExternalReference(address, masm->isolate()), in Generate_Adaptor()
62 __ movp(kScratchRegister, in GenerateTailCallToSharedCode()
64 __ movp(kScratchRegister, in GenerateTailCallToSharedCode()
66 __ leap(kScratchRegister, FieldOperand(kScratchRegister, Code::kHeaderSize)); in GenerateTailCallToSharedCode()
67 __ jmp(kScratchRegister); in GenerateTailCallToSharedCode()
80 __ Integer32ToSmi(rax, rax); in GenerateTailCallToReturnedCode()
81 __ Push(rax); in GenerateTailCallToReturnedCode()
83 __ Push(rdi); in GenerateTailCallToReturnedCode()
84 __ Push(rdx); in GenerateTailCallToReturnedCode()
86 __ Push(rdi); in GenerateTailCallToReturnedCode()
88 __ CallRuntime(function_id, 1); in GenerateTailCallToReturnedCode()
89 __ movp(rbx, rax); in GenerateTailCallToReturnedCode()
92 __ Pop(rdx); in GenerateTailCallToReturnedCode()
93 __ Pop(rdi); in GenerateTailCallToReturnedCode()
94 __ Pop(rax); in GenerateTailCallToReturnedCode()
95 __ SmiToInteger32(rax, rax); in GenerateTailCallToReturnedCode()
97 __ leap(rbx, FieldOperand(rbx, Code::kHeaderSize)); in GenerateTailCallToReturnedCode()
98 __ jmp(rbx); in GenerateTailCallToReturnedCode()
108 __ CompareRoot(rsp, Heap::kStackLimitRootIndex); in Generate_InOptimizationQueue()
109 __ j(above_equal, &ok); in Generate_InOptimizationQueue()
113 __ bind(&ok); in Generate_InOptimizationQueue()
136 __ Integer32ToSmi(rcx, rax); in Generate_JSConstructStubHelper()
137 __ Push(rsi); in Generate_JSConstructStubHelper()
138 __ Push(rcx); in Generate_JSConstructStubHelper()
142 __ Push(rdi); in Generate_JSConstructStubHelper()
143 __ Push(rdx); in Generate_JSConstructStubHelper()
144 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(), in Generate_JSConstructStubHelper()
146 __ movp(rbx, rax); in Generate_JSConstructStubHelper()
147 __ Pop(rdx); in Generate_JSConstructStubHelper()
148 __ Pop(rdi); in Generate_JSConstructStubHelper()
157 __ SmiToInteger32(rax, Operand(rsp, 0 * kPointerSize)); in Generate_JSConstructStubHelper()
162 __ Push(rbx); in Generate_JSConstructStubHelper()
163 __ Push(rbx); in Generate_JSConstructStubHelper()
165 __ PushRoot(Heap::kTheHoleValueRootIndex); in Generate_JSConstructStubHelper()
169 __ bind(&post_instantiation_deopt_entry); in Generate_JSConstructStubHelper()
172 __ leap(rbx, Operand(rbp, StandardFrameConstants::kCallerSPOffset)); in Generate_JSConstructStubHelper()
176 __ movp(rcx, rax); in Generate_JSConstructStubHelper()
177 __ jmp(&entry); in Generate_JSConstructStubHelper()
178 __ bind(&loop); in Generate_JSConstructStubHelper()
179 __ Push(Operand(rbx, rcx, times_pointer_size, 0)); in Generate_JSConstructStubHelper()
180 __ bind(&entry); in Generate_JSConstructStubHelper()
181 __ decp(rcx); in Generate_JSConstructStubHelper()
182 __ j(greater_equal, &loop); in Generate_JSConstructStubHelper()
186 __ InvokeFunction(rdi, rdx, actual, CALL_FUNCTION, in Generate_JSConstructStubHelper()
196 __ movp(rsi, Operand(rbp, ConstructFrameConstants::kContextOffset)); in Generate_JSConstructStubHelper()
204 __ JumpIfSmi(rax, &use_receiver, Label::kNear); in Generate_JSConstructStubHelper()
209 __ CmpObjectType(rax, FIRST_JS_RECEIVER_TYPE, rcx); in Generate_JSConstructStubHelper()
210 __ j(above_equal, &exit, Label::kNear); in Generate_JSConstructStubHelper()
214 __ bind(&use_receiver); in Generate_JSConstructStubHelper()
215 __ movp(rax, Operand(rsp, 0)); in Generate_JSConstructStubHelper()
219 __ bind(&exit); in Generate_JSConstructStubHelper()
220 __ movp(rbx, Operand(rsp, 1 * kPointerSize)); in Generate_JSConstructStubHelper()
222 __ movp(rbx, Operand(rsp, 0)); in Generate_JSConstructStubHelper()
233 __ JumpIfNotSmi(rax, &dont_throw); in Generate_JSConstructStubHelper()
236 __ CallRuntime(Runtime::kThrowDerivedConstructorReturnedNonObject); in Generate_JSConstructStubHelper()
238 __ bind(&dont_throw); in Generate_JSConstructStubHelper()
242 __ PopReturnAddressTo(rcx); in Generate_JSConstructStubHelper()
244 __ leap(rsp, Operand(rsp, index.reg, index.scale, 1 * kPointerSize)); in Generate_JSConstructStubHelper()
245 __ PushReturnAddressFrom(rcx); in Generate_JSConstructStubHelper()
248 __ IncrementCounter(counters->constructed_objects(), 1); in Generate_JSConstructStubHelper()
250 __ ret(0); in Generate_JSConstructStubHelper()
264 __ Pop(rdi); in Generate_JSConstructStubHelper()
265 __ Push(rax); in Generate_JSConstructStubHelper()
266 __ Push(rax); in Generate_JSConstructStubHelper()
269 __ SmiToInteger32(rax, in Generate_JSConstructStubHelper()
274 __ movp(rdx, Operand(rbp, rax, times_pointer_size, in Generate_JSConstructStubHelper()
278 __ jmp(&post_instantiation_deopt_entry); in Generate_JSConstructStubHelper()
303 __ Push(rdi); in Generate_ConstructedNonConstructable()
304 __ CallRuntime(Runtime::kThrowConstructedNonConstructable); in Generate_ConstructedNonConstructable()
318 __ LoadRoot(kScratchRegister, Heap::kRealStackLimitRootIndex); in Generate_CheckStackOverflow()
319 __ movp(rcx, rsp); in Generate_CheckStackOverflow()
322 __ subp(rcx, kScratchRegister); in Generate_CheckStackOverflow()
326 __ PositiveSmiTimesPowerOfTwoToInteger64(r11, rax, kPointerSizeLog2); in Generate_CheckStackOverflow()
329 __ movp(r11, rax); in Generate_CheckStackOverflow()
330 __ shlq(r11, Immediate(kPointerSizeLog2)); in Generate_CheckStackOverflow()
333 __ cmpp(rcx, r11); in Generate_CheckStackOverflow()
334 __ j(greater, &okay); // Signed comparison. in Generate_CheckStackOverflow()
337 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_CheckStackOverflow()
339 __ bind(&okay); in Generate_CheckStackOverflow()
376 __ movp(rsi, masm->ExternalOperand(context_address)); in Generate_JSEntryTrampolineHelper()
379 __ Push(rdx); in Generate_JSEntryTrampolineHelper()
380 __ Push(r8); in Generate_JSEntryTrampolineHelper()
383 __ movp(rax, r9); in Generate_JSEntryTrampolineHelper()
385 __ movp(kScratchRegister, Operand(rbp, 0)); in Generate_JSEntryTrampolineHelper()
386 __ movp(rbx, Operand(kScratchRegister, EntryFrameConstants::kArgvOffset)); in Generate_JSEntryTrampolineHelper()
388 __ movp(rdi, rdx); in Generate_JSEntryTrampolineHelper()
390 __ movp(rdx, rcx); in Generate_JSEntryTrampolineHelper()
399 __ movp(r11, rdi); in Generate_JSEntryTrampolineHelper()
400 __ movp(rdi, rsi); in Generate_JSEntryTrampolineHelper()
405 __ Set(rsi, 0); in Generate_JSEntryTrampolineHelper()
413 __ movp(rsi, masm->ExternalOperand(context_address)); in Generate_JSEntryTrampolineHelper()
416 __ Push(rdi); in Generate_JSEntryTrampolineHelper()
417 __ Push(rdx); in Generate_JSEntryTrampolineHelper()
420 __ movp(rax, rcx); in Generate_JSEntryTrampolineHelper()
421 __ movp(rbx, r8); in Generate_JSEntryTrampolineHelper()
424 __ movp(rdx, r11); in Generate_JSEntryTrampolineHelper()
446 __ Set(rcx, 0); // Set loop variable to 0. in Generate_JSEntryTrampolineHelper()
447 __ jmp(&entry, Label::kNear); in Generate_JSEntryTrampolineHelper()
448 __ bind(&loop); in Generate_JSEntryTrampolineHelper()
449 __ movp(kScratchRegister, Operand(rbx, rcx, times_pointer_size, 0)); in Generate_JSEntryTrampolineHelper()
450 __ Push(Operand(kScratchRegister, 0)); // dereference handle in Generate_JSEntryTrampolineHelper()
451 __ addp(rcx, Immediate(1)); in Generate_JSEntryTrampolineHelper()
452 __ bind(&entry); in Generate_JSEntryTrampolineHelper()
453 __ cmpp(rcx, rax); in Generate_JSEntryTrampolineHelper()
454 __ j(not_equal, &loop); in Generate_JSEntryTrampolineHelper()
460 __ Call(builtin, RelocInfo::CODE_TARGET); in Generate_JSEntryTrampolineHelper()
468 __ ret(1 * kPointerSize); // Remove receiver. in Generate_JSEntryTrampolineHelper()
487 __ AssertGeneratorObject(rbx); in Generate_ResumeGeneratorTrampoline()
490 __ movp(FieldOperand(rbx, JSGeneratorObject::kInputOrDebugPosOffset), rax); in Generate_ResumeGeneratorTrampoline()
491 __ RecordWriteField(rbx, JSGeneratorObject::kInputOrDebugPosOffset, rax, rcx, in Generate_ResumeGeneratorTrampoline()
495 __ movp(FieldOperand(rbx, JSGeneratorObject::kResumeModeOffset), rdx); in Generate_ResumeGeneratorTrampoline()
498 __ movp(rdi, FieldOperand(rbx, JSGeneratorObject::kFunctionOffset)); in Generate_ResumeGeneratorTrampoline()
499 __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_ResumeGeneratorTrampoline()
507 __ cmpb(debug_hook_operand, Immediate(0)); in Generate_ResumeGeneratorTrampoline()
508 __ j(not_equal, &prepare_step_in_if_stepping); in Generate_ResumeGeneratorTrampoline()
515 __ cmpp(rbx, debug_suspended_generator_operand); in Generate_ResumeGeneratorTrampoline()
516 __ j(equal, &prepare_step_in_suspended_generator); in Generate_ResumeGeneratorTrampoline()
517 __ bind(&stepping_prepared); in Generate_ResumeGeneratorTrampoline()
520 __ PopReturnAddressTo(rax); in Generate_ResumeGeneratorTrampoline()
523 __ Push(FieldOperand(rbx, JSGeneratorObject::kReceiverOffset)); in Generate_ResumeGeneratorTrampoline()
538 __ movp(rcx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
539 __ LoadSharedFunctionInfoSpecialField( in Generate_ResumeGeneratorTrampoline()
543 __ bind(&loop); in Generate_ResumeGeneratorTrampoline()
544 __ subl(rcx, Immediate(1)); in Generate_ResumeGeneratorTrampoline()
545 __ j(carry, &done_loop, Label::kNear); in Generate_ResumeGeneratorTrampoline()
546 __ PushRoot(Heap::kTheHoleValueRootIndex); in Generate_ResumeGeneratorTrampoline()
547 __ jmp(&loop); in Generate_ResumeGeneratorTrampoline()
548 __ bind(&done_loop); in Generate_ResumeGeneratorTrampoline()
553 __ movp(rcx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
554 __ movp(rcx, FieldOperand(rcx, SharedFunctionInfo::kFunctionDataOffset)); in Generate_ResumeGeneratorTrampoline()
555 __ CmpObjectType(rcx, BYTECODE_ARRAY_TYPE, rcx); in Generate_ResumeGeneratorTrampoline()
556 __ Assert(equal, kMissingBytecodeArray); in Generate_ResumeGeneratorTrampoline()
561 __ PushReturnAddressFrom(rax); in Generate_ResumeGeneratorTrampoline()
562 __ movp(rax, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
563 __ LoadSharedFunctionInfoSpecialField( in Generate_ResumeGeneratorTrampoline()
568 __ movp(rdx, rbx); in Generate_ResumeGeneratorTrampoline()
569 __ jmp(FieldOperand(rdi, JSFunction::kCodeEntryOffset)); in Generate_ResumeGeneratorTrampoline()
572 __ bind(&prepare_step_in_if_stepping); in Generate_ResumeGeneratorTrampoline()
575 __ Push(rbx); in Generate_ResumeGeneratorTrampoline()
576 __ Push(rdx); in Generate_ResumeGeneratorTrampoline()
577 __ Push(rdi); in Generate_ResumeGeneratorTrampoline()
578 __ CallRuntime(Runtime::kDebugOnFunctionCall); in Generate_ResumeGeneratorTrampoline()
579 __ Pop(rdx); in Generate_ResumeGeneratorTrampoline()
580 __ Pop(rbx); in Generate_ResumeGeneratorTrampoline()
581 __ movp(rdi, FieldOperand(rbx, JSGeneratorObject::kFunctionOffset)); in Generate_ResumeGeneratorTrampoline()
583 __ jmp(&stepping_prepared); in Generate_ResumeGeneratorTrampoline()
585 __ bind(&prepare_step_in_suspended_generator); in Generate_ResumeGeneratorTrampoline()
588 __ Push(rbx); in Generate_ResumeGeneratorTrampoline()
589 __ Push(rdx); in Generate_ResumeGeneratorTrampoline()
590 __ CallRuntime(Runtime::kDebugPrepareStepInSuspendedGenerator); in Generate_ResumeGeneratorTrampoline()
591 __ Pop(rdx); in Generate_ResumeGeneratorTrampoline()
592 __ Pop(rbx); in Generate_ResumeGeneratorTrampoline()
593 __ movp(rdi, FieldOperand(rbx, JSGeneratorObject::kFunctionOffset)); in Generate_ResumeGeneratorTrampoline()
595 __ jmp(&stepping_prepared); in Generate_ResumeGeneratorTrampoline()
604 __ movp(args_count, in LeaveInterpreterFrame()
606 __ movl(args_count, in LeaveInterpreterFrame()
610 __ leave(); in LeaveInterpreterFrame()
613 __ PopReturnAddressTo(return_pc); in LeaveInterpreterFrame()
614 __ addp(rsp, args_count); in LeaveInterpreterFrame()
615 __ PushReturnAddressFrom(return_pc); in LeaveInterpreterFrame()
639 __ pushq(rbp); // Caller's frame pointer. in Generate_InterpreterEntryTrampoline()
640 __ movp(rbp, rsp); in Generate_InterpreterEntryTrampoline()
641 __ Push(rsi); // Callee's context. in Generate_InterpreterEntryTrampoline()
642 __ Push(rdi); // Callee's JS function. in Generate_InterpreterEntryTrampoline()
643 __ Push(rdx); // Callee's new target. in Generate_InterpreterEntryTrampoline()
647 __ movp(rax, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_InterpreterEntryTrampoline()
649 __ JumpIfNotSmi(FieldOperand(rax, SharedFunctionInfo::kDebugInfoOffset), in Generate_InterpreterEntryTrampoline()
651 __ movp(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
653 __ bind(&bytecode_array_loaded); in Generate_InterpreterEntryTrampoline()
657 __ Move(rcx, masm->CodeObject()); // Self-reference to this code. in Generate_InterpreterEntryTrampoline()
658 __ cmpp(rcx, FieldOperand(rax, SharedFunctionInfo::kCodeOffset)); in Generate_InterpreterEntryTrampoline()
659 __ j(not_equal, &switch_to_different_code_kind); in Generate_InterpreterEntryTrampoline()
662 __ movp(rcx, FieldOperand(rdi, JSFunction::kFeedbackVectorOffset)); in Generate_InterpreterEntryTrampoline()
663 __ movp(rcx, FieldOperand(rcx, Cell::kValueOffset)); in Generate_InterpreterEntryTrampoline()
664 __ SmiAddConstant( in Generate_InterpreterEntryTrampoline()
671 __ AssertNotSmi(kInterpreterBytecodeArrayRegister); in Generate_InterpreterEntryTrampoline()
672 __ CmpObjectType(kInterpreterBytecodeArrayRegister, BYTECODE_ARRAY_TYPE, in Generate_InterpreterEntryTrampoline()
674 __ Assert(equal, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); in Generate_InterpreterEntryTrampoline()
678 __ movb(FieldOperand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
683 __ movp(kInterpreterBytecodeOffsetRegister, in Generate_InterpreterEntryTrampoline()
687 __ Push(kInterpreterBytecodeArrayRegister); in Generate_InterpreterEntryTrampoline()
688 __ Integer32ToSmi(rcx, kInterpreterBytecodeOffsetRegister); in Generate_InterpreterEntryTrampoline()
689 __ Push(rcx); in Generate_InterpreterEntryTrampoline()
694 __ movl(rcx, FieldOperand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
699 __ movp(rdx, rsp); in Generate_InterpreterEntryTrampoline()
700 __ subp(rdx, rcx); in Generate_InterpreterEntryTrampoline()
701 __ CompareRoot(rdx, Heap::kRealStackLimitRootIndex); in Generate_InterpreterEntryTrampoline()
702 __ j(above_equal, &ok, Label::kNear); in Generate_InterpreterEntryTrampoline()
703 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterEntryTrampoline()
704 __ bind(&ok); in Generate_InterpreterEntryTrampoline()
709 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_InterpreterEntryTrampoline()
710 __ j(always, &loop_check); in Generate_InterpreterEntryTrampoline()
711 __ bind(&loop_header); in Generate_InterpreterEntryTrampoline()
713 __ Push(rdx); in Generate_InterpreterEntryTrampoline()
715 __ bind(&loop_check); in Generate_InterpreterEntryTrampoline()
716 __ subp(rcx, Immediate(kPointerSize)); in Generate_InterpreterEntryTrampoline()
717 __ j(greater_equal, &loop_header, Label::kNear); in Generate_InterpreterEntryTrampoline()
721 __ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex); in Generate_InterpreterEntryTrampoline()
722 __ Move( in Generate_InterpreterEntryTrampoline()
727 __ movzxbp(rbx, Operand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
729 __ movp(rbx, Operand(kInterpreterDispatchTableRegister, rbx, in Generate_InterpreterEntryTrampoline()
731 __ call(rbx); in Generate_InterpreterEntryTrampoline()
736 __ ret(0); in Generate_InterpreterEntryTrampoline()
739 __ bind(&load_debug_bytecode_array); in Generate_InterpreterEntryTrampoline()
741 __ movp(debug_info, FieldOperand(rax, SharedFunctionInfo::kDebugInfoOffset)); in Generate_InterpreterEntryTrampoline()
742 __ movp(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
744 __ jmp(&bytecode_array_loaded); in Generate_InterpreterEntryTrampoline()
749 __ bind(&switch_to_different_code_kind); in Generate_InterpreterEntryTrampoline()
750 __ leave(); // Leave the frame so we can tail call. in Generate_InterpreterEntryTrampoline()
751 __ movp(rcx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_InterpreterEntryTrampoline()
752 __ movp(rcx, FieldOperand(rcx, SharedFunctionInfo::kCodeOffset)); in Generate_InterpreterEntryTrampoline()
753 __ leap(rcx, FieldOperand(rcx, Code::kHeaderSize)); in Generate_InterpreterEntryTrampoline()
754 __ movp(FieldOperand(rdi, JSFunction::kCodeEntryOffset), rcx); in Generate_InterpreterEntryTrampoline()
755 __ RecordWriteCodeEntryField(rdi, rcx, r15); in Generate_InterpreterEntryTrampoline()
756 __ jmp(rcx); in Generate_InterpreterEntryTrampoline()
766 __ LoadRoot(kScratchRegister, Heap::kRealStackLimitRootIndex); in Generate_StackOverflowCheck()
767 __ movp(scratch, rsp); in Generate_StackOverflowCheck()
770 __ subp(scratch, kScratchRegister); in Generate_StackOverflowCheck()
771 __ sarp(scratch, Immediate(kPointerSizeLog2)); in Generate_StackOverflowCheck()
773 __ cmpp(scratch, num_args); in Generate_StackOverflowCheck()
775 __ j(less_equal, stack_overflow, stack_overflow_distance); in Generate_StackOverflowCheck()
783 __ Move(scratch, num_args); in Generate_InterpreterPushArgs()
784 __ shlp(scratch, Immediate(kPointerSizeLog2)); in Generate_InterpreterPushArgs()
785 __ negp(scratch); in Generate_InterpreterPushArgs()
786 __ addp(scratch, start_address); in Generate_InterpreterPushArgs()
790 __ j(always, &loop_check); in Generate_InterpreterPushArgs()
791 __ bind(&loop_header); in Generate_InterpreterPushArgs()
792 __ Push(Operand(start_address, 0)); in Generate_InterpreterPushArgs()
793 __ subp(start_address, Immediate(kPointerSize)); in Generate_InterpreterPushArgs()
794 __ bind(&loop_check); in Generate_InterpreterPushArgs()
795 __ cmpp(start_address, scratch); in Generate_InterpreterPushArgs()
796 __ j(greater, &loop_header, Label::kNear); in Generate_InterpreterPushArgs()
813 __ Move(rcx, rax); in Generate_InterpreterPushArgsAndCallImpl()
814 __ addp(rcx, Immediate(1)); // Add one for receiver. in Generate_InterpreterPushArgsAndCallImpl()
820 __ PopReturnAddressTo(kScratchRegister); in Generate_InterpreterPushArgsAndCallImpl()
826 __ PushReturnAddressFrom(kScratchRegister); // Re-push return address. in Generate_InterpreterPushArgsAndCallImpl()
829 __ Jump(masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny, in Generate_InterpreterPushArgsAndCallImpl()
833 __ Jump(masm->isolate()->builtins()->CallWithSpread(), in Generate_InterpreterPushArgsAndCallImpl()
836 __ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny, in Generate_InterpreterPushArgsAndCallImpl()
842 __ bind(&stack_overflow); in Generate_InterpreterPushArgsAndCallImpl()
844 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterPushArgsAndCallImpl()
846 __ int3(); in Generate_InterpreterPushArgsAndCallImpl()
869 __ PopReturnAddressTo(kScratchRegister); in Generate_InterpreterPushArgsAndConstructImpl()
872 __ Push(Immediate(0)); in Generate_InterpreterPushArgsAndConstructImpl()
878 __ PushReturnAddressFrom(kScratchRegister); in Generate_InterpreterPushArgsAndConstructImpl()
880 __ AssertUndefinedOrAllocationSite(rbx); in Generate_InterpreterPushArgsAndConstructImpl()
884 __ AssertFunction(rdi); in Generate_InterpreterPushArgsAndConstructImpl()
886 __ movp(rcx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_InterpreterPushArgsAndConstructImpl()
887 __ movp(rcx, FieldOperand(rcx, SharedFunctionInfo::kConstructStubOffset)); in Generate_InterpreterPushArgsAndConstructImpl()
888 __ leap(rcx, FieldOperand(rcx, Code::kHeaderSize)); in Generate_InterpreterPushArgsAndConstructImpl()
890 __ jmp(rcx); in Generate_InterpreterPushArgsAndConstructImpl()
893 __ Jump(masm->isolate()->builtins()->ConstructWithSpread(), in Generate_InterpreterPushArgsAndConstructImpl()
898 __ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); in Generate_InterpreterPushArgsAndConstructImpl()
902 __ bind(&stack_overflow); in Generate_InterpreterPushArgsAndConstructImpl()
904 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterPushArgsAndConstructImpl()
906 __ int3(); in Generate_InterpreterPushArgsAndConstructImpl()
924 __ Move(r8, rax); in Generate_InterpreterPushArgsAndConstructArray()
925 __ addp(r8, Immediate(1)); // Add one for receiver. in Generate_InterpreterPushArgsAndConstructArray()
931 __ PopReturnAddressTo(kScratchRegister); in Generate_InterpreterPushArgsAndConstructArray()
937 __ PushReturnAddressFrom(kScratchRegister); in Generate_InterpreterPushArgsAndConstructArray()
940 __ Move(rdi, rdx); in Generate_InterpreterPushArgsAndConstructArray()
943 __ TailCallStub(&stub); in Generate_InterpreterPushArgsAndConstructArray()
946 __ bind(&stack_overflow); in Generate_InterpreterPushArgsAndConstructArray()
948 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterPushArgsAndConstructArray()
950 __ int3(); in Generate_InterpreterPushArgsAndConstructArray()
960 __ Move(rbx, masm->isolate()->builtins()->InterpreterEntryTrampoline()); in Generate_InterpreterEnterBytecode()
961 __ addp(rbx, Immediate(interpreter_entry_return_pc_offset->value() + in Generate_InterpreterEnterBytecode()
963 __ Push(rbx); in Generate_InterpreterEnterBytecode()
966 __ Move( in Generate_InterpreterEnterBytecode()
971 __ movp(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEnterBytecode()
976 __ AssertNotSmi(kInterpreterBytecodeArrayRegister); in Generate_InterpreterEnterBytecode()
977 __ CmpObjectType(kInterpreterBytecodeArrayRegister, BYTECODE_ARRAY_TYPE, in Generate_InterpreterEnterBytecode()
979 __ Assert(equal, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); in Generate_InterpreterEnterBytecode()
983 __ movp(kInterpreterBytecodeOffsetRegister, in Generate_InterpreterEnterBytecode()
985 __ SmiToInteger32(kInterpreterBytecodeOffsetRegister, in Generate_InterpreterEnterBytecode()
989 __ movzxbp(rbx, Operand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEnterBytecode()
991 __ movp(rbx, Operand(kInterpreterDispatchTableRegister, rbx, in Generate_InterpreterEnterBytecode()
993 __ jmp(rbx); in Generate_InterpreterEnterBytecode()
1000 __ movp(rbx, Operand(rbp, InterpreterFrameConstants::kBytecodeArrayFromFp)); in Generate_InterpreterEnterBytecodeAdvance()
1001 __ movp(rdx, Operand(rbp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); in Generate_InterpreterEnterBytecodeAdvance()
1002 __ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset)); in Generate_InterpreterEnterBytecodeAdvance()
1005 __ Push(kInterpreterAccumulatorRegister); in Generate_InterpreterEnterBytecodeAdvance()
1006 __ Push(rbx); // First argument is the bytecode array. in Generate_InterpreterEnterBytecodeAdvance()
1007 __ Push(rdx); // Second argument is the bytecode offset. in Generate_InterpreterEnterBytecodeAdvance()
1008 __ CallRuntime(Runtime::kInterpreterAdvanceBytecodeOffset); in Generate_InterpreterEnterBytecodeAdvance()
1009 __ Move(rdx, rax); // Result is the new bytecode offset. in Generate_InterpreterEnterBytecodeAdvance()
1010 __ Pop(kInterpreterAccumulatorRegister); in Generate_InterpreterEnterBytecodeAdvance()
1012 __ movp(Operand(rbp, InterpreterFrameConstants::kBytecodeOffsetFromFp), rdx); in Generate_InterpreterEnterBytecodeAdvance()
1037 __ movp(rbx, FieldOperand(closure, JSFunction::kFeedbackVectorOffset)); in Generate_CompileLazy()
1038 __ movp(rbx, FieldOperand(rbx, Cell::kValueOffset)); in Generate_CompileLazy()
1039 __ JumpIfRoot(rbx, Heap::kUndefinedValueRootIndex, &gotta_call_runtime); in Generate_CompileLazy()
1041 __ movp(map, FieldOperand(closure, JSFunction::kSharedFunctionInfoOffset)); in Generate_CompileLazy()
1042 __ movp(map, FieldOperand(map, SharedFunctionInfo::kOptimizedCodeMapOffset)); in Generate_CompileLazy()
1043 __ SmiToInteger32(index, FieldOperand(map, FixedArray::kLengthOffset)); in Generate_CompileLazy()
1044 __ cmpl(index, Immediate(2)); in Generate_CompileLazy()
1045 __ j(less, &try_shared); in Generate_CompileLazy()
1053 __ movp(native_context, NativeContextOperand()); in Generate_CompileLazy()
1055 __ bind(&loop_top); in Generate_CompileLazy()
1058 __ movp(temp, FieldOperand(map, index, times_pointer_size, in Generate_CompileLazy()
1060 __ movp(temp, FieldOperand(temp, WeakCell::kValueOffset)); in Generate_CompileLazy()
1061 __ cmpp(temp, native_context); in Generate_CompileLazy()
1062 __ j(not_equal, &loop_bottom); in Generate_CompileLazy()
1066 __ movp(entry, FieldOperand(map, index, times_pointer_size, in Generate_CompileLazy()
1068 __ movp(entry, FieldOperand(entry, WeakCell::kValueOffset)); in Generate_CompileLazy()
1069 __ JumpIfSmi(entry, &try_shared); in Generate_CompileLazy()
1072 __ leap(entry, FieldOperand(entry, Code::kHeaderSize)); in Generate_CompileLazy()
1073 __ movp(FieldOperand(closure, JSFunction::kCodeEntryOffset), entry); in Generate_CompileLazy()
1074 __ RecordWriteCodeEntryField(closure, entry, r15); in Generate_CompileLazy()
1081 __ movp(rbx, in Generate_CompileLazy()
1083 __ movp(FieldOperand(closure, JSFunction::kNextFunctionLinkOffset), rbx); in Generate_CompileLazy()
1084 __ RecordWriteField(closure, JSFunction::kNextFunctionLinkOffset, rbx, r15, in Generate_CompileLazy()
1088 __ movp(ContextOperand(native_context, Context::OPTIMIZED_FUNCTIONS_LIST), in Generate_CompileLazy()
1091 __ movp(rbx, closure); in Generate_CompileLazy()
1092 __ RecordWriteContextSlot(native_context, function_list_offset, closure, r15, in Generate_CompileLazy()
1094 __ movp(closure, rbx); in Generate_CompileLazy()
1095 __ jmp(entry); in Generate_CompileLazy()
1097 __ bind(&loop_bottom); in Generate_CompileLazy()
1098 __ subl(index, Immediate(SharedFunctionInfo::kEntryLength)); in Generate_CompileLazy()
1099 __ cmpl(index, Immediate(1)); in Generate_CompileLazy()
1100 __ j(greater, &loop_top); in Generate_CompileLazy()
1103 __ bind(&try_shared); in Generate_CompileLazy()
1104 __ movp(entry, FieldOperand(closure, JSFunction::kSharedFunctionInfoOffset)); in Generate_CompileLazy()
1106 __ testb(FieldOperand(entry, SharedFunctionInfo::kMarkedForTierUpByteOffset), in Generate_CompileLazy()
1108 __ j(not_zero, &gotta_call_runtime); in Generate_CompileLazy()
1111 __ movp(entry, FieldOperand(entry, SharedFunctionInfo::kCodeOffset)); in Generate_CompileLazy()
1112 __ Move(rbx, masm->CodeObject()); in Generate_CompileLazy()
1113 __ cmpp(entry, rbx); in Generate_CompileLazy()
1114 __ j(equal, &gotta_call_runtime); in Generate_CompileLazy()
1117 __ leap(entry, FieldOperand(entry, Code::kHeaderSize)); in Generate_CompileLazy()
1118 __ movp(FieldOperand(closure, JSFunction::kCodeEntryOffset), entry); in Generate_CompileLazy()
1119 __ RecordWriteCodeEntryField(closure, entry, r15); in Generate_CompileLazy()
1120 __ jmp(entry); in Generate_CompileLazy()
1122 __ bind(&gotta_call_runtime); in Generate_CompileLazy()
1149 __ movp(rcx, rax); in Generate_InstantiateAsmJs()
1151 __ Integer32ToSmi(rax, rax); in Generate_InstantiateAsmJs()
1152 __ Push(rax); in Generate_InstantiateAsmJs()
1154 __ Push(rdi); in Generate_InstantiateAsmJs()
1155 __ Push(rdx); in Generate_InstantiateAsmJs()
1158 __ Push(rdi); in Generate_InstantiateAsmJs()
1164 __ cmpp(rcx, Immediate(j)); in Generate_InstantiateAsmJs()
1165 __ j(not_equal, &over, Label::kNear); in Generate_InstantiateAsmJs()
1168 __ Push(Operand( in Generate_InstantiateAsmJs()
1172 __ PushRoot(Heap::kUndefinedValueRootIndex); in Generate_InstantiateAsmJs()
1175 __ jmp(&args_done, Label::kNear); in Generate_InstantiateAsmJs()
1176 __ bind(&over); in Generate_InstantiateAsmJs()
1179 __ bind(&args_done); in Generate_InstantiateAsmJs()
1182 __ CallRuntime(Runtime::kInstantiateAsmJs, 4); in Generate_InstantiateAsmJs()
1184 __ JumpIfSmi(rax, &failed, Label::kNear); in Generate_InstantiateAsmJs()
1186 __ Drop(2); in Generate_InstantiateAsmJs()
1187 __ Pop(rcx); in Generate_InstantiateAsmJs()
1188 __ SmiToInteger32(rcx, rcx); in Generate_InstantiateAsmJs()
1191 __ PopReturnAddressTo(rbx); in Generate_InstantiateAsmJs()
1192 __ incp(rcx); in Generate_InstantiateAsmJs()
1193 __ leap(rsp, Operand(rsp, rcx, times_pointer_size, 0)); in Generate_InstantiateAsmJs()
1194 __ PushReturnAddressFrom(rbx); in Generate_InstantiateAsmJs()
1195 __ ret(0); in Generate_InstantiateAsmJs()
1197 __ bind(&failed); in Generate_InstantiateAsmJs()
1199 __ Pop(rdx); in Generate_InstantiateAsmJs()
1200 __ Pop(rdi); in Generate_InstantiateAsmJs()
1201 __ Pop(rax); in Generate_InstantiateAsmJs()
1202 __ SmiToInteger32(rax, rax); in Generate_InstantiateAsmJs()
1217 __ subp(Operand(rsp, 0), Immediate(5)); in GenerateMakeCodeYoungAgainCommon()
1218 __ Pushad(); in GenerateMakeCodeYoungAgainCommon()
1219 __ Move(arg_reg_2, ExternalReference::isolate_address(masm->isolate())); in GenerateMakeCodeYoungAgainCommon()
1220 __ movp(arg_reg_1, Operand(rsp, kNumSafepointRegisters * kPointerSize)); in GenerateMakeCodeYoungAgainCommon()
1223 __ PrepareCallCFunction(2); in GenerateMakeCodeYoungAgainCommon()
1224 __ CallCFunction( in GenerateMakeCodeYoungAgainCommon()
1227 __ Popad(); in GenerateMakeCodeYoungAgainCommon()
1228 __ ret(0); in GenerateMakeCodeYoungAgainCommon()
1243 __ Pushad(); in CODE_AGE_LIST()
1244 __ Move(arg_reg_2, ExternalReference::isolate_address(masm->isolate())); in CODE_AGE_LIST()
1245 __ movp(arg_reg_1, Operand(rsp, kNumSafepointRegisters * kPointerSize)); in CODE_AGE_LIST()
1246 __ subp(arg_reg_1, Immediate(Assembler::kShortCallInstructionLength)); in CODE_AGE_LIST()
1249 __ PrepareCallCFunction(2); in CODE_AGE_LIST()
1250 __ CallCFunction( in CODE_AGE_LIST()
1254 __ Popad(); in CODE_AGE_LIST()
1257 __ PopReturnAddressTo(kScratchRegister); in CODE_AGE_LIST()
1258 __ pushq(rbp); // Caller's frame pointer. in CODE_AGE_LIST()
1259 __ movp(rbp, rsp); in CODE_AGE_LIST()
1260 __ Push(rsi); // Callee's context. in CODE_AGE_LIST()
1261 __ Push(rdi); // Callee's JS Function. in CODE_AGE_LIST()
1262 __ PushReturnAddressFrom(kScratchRegister); in CODE_AGE_LIST()
1265 __ ret(0); in CODE_AGE_LIST()
1285 __ Pushad(); in Generate_NotifyStubFailureHelper()
1286 __ CallRuntime(Runtime::kNotifyStubFailure, save_doubles); in Generate_NotifyStubFailureHelper()
1287 __ Popad(); in Generate_NotifyStubFailureHelper()
1291 __ DropUnderReturnAddress(1); // Ignore state offset in Generate_NotifyStubFailureHelper()
1292 __ ret(0); // Return to IC Miss stub, continuation still on stack. in Generate_NotifyStubFailureHelper()
1310 __ Push(Smi::FromInt(static_cast<int>(type))); in Generate_NotifyDeoptimizedHelper()
1312 __ CallRuntime(Runtime::kNotifyDeoptimized); in Generate_NotifyDeoptimizedHelper()
1317 __ SmiToInteger32(kScratchRegister, Operand(rsp, kPCOnStackSize)); in Generate_NotifyDeoptimizedHelper()
1321 __ cmpp(kScratchRegister, in Generate_NotifyDeoptimizedHelper()
1323 __ j(not_equal, &not_no_registers, Label::kNear); in Generate_NotifyDeoptimizedHelper()
1324 __ ret(1 * kPointerSize); // Remove state. in Generate_NotifyDeoptimizedHelper()
1326 __ bind(&not_no_registers); in Generate_NotifyDeoptimizedHelper()
1328 __ movp(rax, Operand(rsp, kPCOnStackSize + kPointerSize)); in Generate_NotifyDeoptimizedHelper()
1329 __ cmpp(kScratchRegister, in Generate_NotifyDeoptimizedHelper()
1331 __ j(not_equal, &not_tos_rax, Label::kNear); in Generate_NotifyDeoptimizedHelper()
1332 __ ret(2 * kPointerSize); // Remove state, rax. in Generate_NotifyDeoptimizedHelper()
1334 __ bind(&not_tos_rax); in Generate_NotifyDeoptimizedHelper()
1335 __ Abort(kNoCasesLeft); in Generate_NotifyDeoptimizedHelper()
1366 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_FunctionPrototypeApply()
1367 __ movp(rbx, rdx); in Generate_FunctionPrototypeApply()
1368 __ movp(rdi, args.GetReceiverOperand()); in Generate_FunctionPrototypeApply()
1369 __ testp(rax, rax); in Generate_FunctionPrototypeApply()
1370 __ j(zero, &no_this_arg, Label::kNear); in Generate_FunctionPrototypeApply()
1372 __ movp(rdx, args.GetArgumentOperand(1)); in Generate_FunctionPrototypeApply()
1373 __ cmpp(rax, Immediate(1)); in Generate_FunctionPrototypeApply()
1374 __ j(equal, &no_arg_array, Label::kNear); in Generate_FunctionPrototypeApply()
1375 __ movp(rbx, args.GetArgumentOperand(2)); in Generate_FunctionPrototypeApply()
1376 __ bind(&no_arg_array); in Generate_FunctionPrototypeApply()
1378 __ bind(&no_this_arg); in Generate_FunctionPrototypeApply()
1379 __ PopReturnAddressTo(rcx); in Generate_FunctionPrototypeApply()
1380 __ leap(rsp, Operand(rsp, rax, times_pointer_size, kPointerSize)); in Generate_FunctionPrototypeApply()
1381 __ Push(rdx); in Generate_FunctionPrototypeApply()
1382 __ PushReturnAddressFrom(rcx); in Generate_FunctionPrototypeApply()
1383 __ movp(rax, rbx); in Generate_FunctionPrototypeApply()
1395 __ JumpIfSmi(rdi, &receiver_not_callable, Label::kNear); in Generate_FunctionPrototypeApply()
1396 __ movp(rcx, FieldOperand(rdi, HeapObject::kMapOffset)); in Generate_FunctionPrototypeApply()
1397 __ testb(FieldOperand(rcx, Map::kBitFieldOffset), in Generate_FunctionPrototypeApply()
1399 __ j(zero, &receiver_not_callable, Label::kNear); in Generate_FunctionPrototypeApply()
1403 __ JumpIfRoot(rax, Heap::kNullValueRootIndex, &no_arguments, Label::kNear); in Generate_FunctionPrototypeApply()
1404 __ JumpIfRoot(rax, Heap::kUndefinedValueRootIndex, &no_arguments, in Generate_FunctionPrototypeApply()
1409 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_FunctionPrototypeApply()
1410 __ Jump(masm->isolate()->builtins()->Apply(), RelocInfo::CODE_TARGET); in Generate_FunctionPrototypeApply()
1415 __ bind(&no_arguments); in Generate_FunctionPrototypeApply()
1417 __ Set(rax, 0); in Generate_FunctionPrototypeApply()
1418 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); in Generate_FunctionPrototypeApply()
1422 __ bind(&receiver_not_callable); in Generate_FunctionPrototypeApply()
1425 __ movp(args.GetReceiverOperand(), rdi); in Generate_FunctionPrototypeApply()
1426 __ TailCallRuntime(Runtime::kThrowApplyNonFunction); in Generate_FunctionPrototypeApply()
1445 __ testp(rax, rax); in Generate_FunctionPrototypeCall()
1446 __ j(not_zero, &done, Label::kNear); in Generate_FunctionPrototypeCall()
1447 __ PopReturnAddressTo(rbx); in Generate_FunctionPrototypeCall()
1448 __ PushRoot(Heap::kUndefinedValueRootIndex); in Generate_FunctionPrototypeCall()
1449 __ PushReturnAddressFrom(rbx); in Generate_FunctionPrototypeCall()
1450 __ incp(rax); in Generate_FunctionPrototypeCall()
1451 __ bind(&done); in Generate_FunctionPrototypeCall()
1457 __ movp(rdi, args.GetReceiverOperand()); in Generate_FunctionPrototypeCall()
1465 __ movp(rcx, rax); in Generate_FunctionPrototypeCall()
1467 __ bind(&loop); in Generate_FunctionPrototypeCall()
1468 __ movp(rbx, args.GetArgumentOperand(1)); in Generate_FunctionPrototypeCall()
1469 __ movp(args.GetArgumentOperand(0), rbx); in Generate_FunctionPrototypeCall()
1470 __ decp(rcx); in Generate_FunctionPrototypeCall()
1471 __ j(not_zero, &loop); // While non-zero. in Generate_FunctionPrototypeCall()
1472 __ DropUnderReturnAddress(1, rbx); // Drop one slot under return address. in Generate_FunctionPrototypeCall()
1473 __ decp(rax); // One fewer argument (first argument is new receiver). in Generate_FunctionPrototypeCall()
1479 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); in Generate_FunctionPrototypeCall()
1498 __ LoadRoot(rdi, Heap::kUndefinedValueRootIndex); in Generate_ReflectApply()
1499 __ movp(rdx, rdi); in Generate_ReflectApply()
1500 __ movp(rbx, rdi); in Generate_ReflectApply()
1501 __ cmpp(rax, Immediate(1)); in Generate_ReflectApply()
1502 __ j(below, &done, Label::kNear); in Generate_ReflectApply()
1503 __ movp(rdi, args.GetArgumentOperand(1)); // target in Generate_ReflectApply()
1504 __ j(equal, &done, Label::kNear); in Generate_ReflectApply()
1505 __ movp(rdx, args.GetArgumentOperand(2)); // thisArgument in Generate_ReflectApply()
1506 __ cmpp(rax, Immediate(3)); in Generate_ReflectApply()
1507 __ j(below, &done, Label::kNear); in Generate_ReflectApply()
1508 __ movp(rbx, args.GetArgumentOperand(3)); // argumentsList in Generate_ReflectApply()
1509 __ bind(&done); in Generate_ReflectApply()
1510 __ PopReturnAddressTo(rcx); in Generate_ReflectApply()
1511 __ leap(rsp, Operand(rsp, rax, times_pointer_size, kPointerSize)); in Generate_ReflectApply()
1512 __ Push(rdx); in Generate_ReflectApply()
1513 __ PushReturnAddressFrom(rcx); in Generate_ReflectApply()
1514 __ movp(rax, rbx); in Generate_ReflectApply()
1526 __ JumpIfSmi(rdi, &target_not_callable, Label::kNear); in Generate_ReflectApply()
1527 __ movp(rcx, FieldOperand(rdi, HeapObject::kMapOffset)); in Generate_ReflectApply()
1528 __ testb(FieldOperand(rcx, Map::kBitFieldOffset), in Generate_ReflectApply()
1530 __ j(zero, &target_not_callable, Label::kNear); in Generate_ReflectApply()
1534 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_ReflectApply()
1535 __ Jump(masm->isolate()->builtins()->Apply(), RelocInfo::CODE_TARGET); in Generate_ReflectApply()
1538 __ bind(&target_not_callable); in Generate_ReflectApply()
1541 __ movp(args.GetReceiverOperand(), rdi); in Generate_ReflectApply()
1542 __ TailCallRuntime(Runtime::kThrowApplyNonFunction); in Generate_ReflectApply()
1563 __ LoadRoot(rdi, Heap::kUndefinedValueRootIndex); in Generate_ReflectConstruct()
1564 __ movp(rdx, rdi); in Generate_ReflectConstruct()
1565 __ movp(rbx, rdi); in Generate_ReflectConstruct()
1566 __ cmpp(rax, Immediate(1)); in Generate_ReflectConstruct()
1567 __ j(below, &done, Label::kNear); in Generate_ReflectConstruct()
1568 __ movp(rdi, args.GetArgumentOperand(1)); // target in Generate_ReflectConstruct()
1569 __ movp(rdx, rdi); // new.target defaults to target in Generate_ReflectConstruct()
1570 __ j(equal, &done, Label::kNear); in Generate_ReflectConstruct()
1571 __ movp(rbx, args.GetArgumentOperand(2)); // argumentsList in Generate_ReflectConstruct()
1572 __ cmpp(rax, Immediate(3)); in Generate_ReflectConstruct()
1573 __ j(below, &done, Label::kNear); in Generate_ReflectConstruct()
1574 __ movp(rdx, args.GetArgumentOperand(3)); // new.target in Generate_ReflectConstruct()
1575 __ bind(&done); in Generate_ReflectConstruct()
1576 __ PopReturnAddressTo(rcx); in Generate_ReflectConstruct()
1577 __ leap(rsp, Operand(rsp, rax, times_pointer_size, kPointerSize)); in Generate_ReflectConstruct()
1578 __ PushRoot(Heap::kUndefinedValueRootIndex); in Generate_ReflectConstruct()
1579 __ PushReturnAddressFrom(rcx); in Generate_ReflectConstruct()
1580 __ movp(rax, rbx); in Generate_ReflectConstruct()
1593 __ JumpIfSmi(rdi, &target_not_constructor, Label::kNear); in Generate_ReflectConstruct()
1594 __ movp(rcx, FieldOperand(rdi, HeapObject::kMapOffset)); in Generate_ReflectConstruct()
1595 __ testb(FieldOperand(rcx, Map::kBitFieldOffset), in Generate_ReflectConstruct()
1597 __ j(zero, &target_not_constructor, Label::kNear); in Generate_ReflectConstruct()
1601 __ JumpIfSmi(rdx, &new_target_not_constructor, Label::kNear); in Generate_ReflectConstruct()
1602 __ movp(rcx, FieldOperand(rdx, HeapObject::kMapOffset)); in Generate_ReflectConstruct()
1603 __ testb(FieldOperand(rcx, Map::kBitFieldOffset), in Generate_ReflectConstruct()
1605 __ j(zero, &new_target_not_constructor, Label::kNear); in Generate_ReflectConstruct()
1608 __ Jump(masm->isolate()->builtins()->Apply(), RelocInfo::CODE_TARGET); in Generate_ReflectConstruct()
1611 __ bind(&target_not_constructor); in Generate_ReflectConstruct()
1614 __ movp(args.GetReceiverOperand(), rdi); in Generate_ReflectConstruct()
1615 __ TailCallRuntime(Runtime::kThrowNotConstructor); in Generate_ReflectConstruct()
1619 __ bind(&new_target_not_constructor); in Generate_ReflectConstruct()
1622 __ movp(args.GetReceiverOperand(), rdx); in Generate_ReflectConstruct()
1623 __ TailCallRuntime(Runtime::kThrowNotConstructor); in Generate_ReflectConstruct()
1636 __ LoadNativeContextSlot(Context::INTERNAL_ARRAY_FUNCTION_INDEX, rdi); in Generate_InternalArrayCode()
1640 __ movp(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_InternalArrayCode()
1644 __ Check(not_smi, kUnexpectedInitialMapForInternalArrayFunction); in Generate_InternalArrayCode()
1645 __ CmpObjectType(rbx, MAP_TYPE, rcx); in Generate_InternalArrayCode()
1646 __ Check(equal, kUnexpectedInitialMapForInternalArrayFunction); in Generate_InternalArrayCode()
1653 __ TailCallStub(&stub); in Generate_InternalArrayCode()
1665 __ LoadNativeContextSlot(Context::ARRAY_FUNCTION_INDEX, rdi); in Generate_ArrayCode()
1669 __ movp(rbx, FieldOperand(rdi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_ArrayCode()
1673 __ Check(not_smi, kUnexpectedInitialMapForArrayFunction); in Generate_ArrayCode()
1674 __ CmpObjectType(rbx, MAP_TYPE, rcx); in Generate_ArrayCode()
1675 __ Check(equal, kUnexpectedInitialMapForArrayFunction); in Generate_ArrayCode()
1678 __ movp(rdx, rdi); in Generate_ArrayCode()
1681 __ LoadRoot(rbx, Heap::kUndefinedValueRootIndex); in Generate_ArrayCode()
1683 __ TailCallStub(&stub); in Generate_ArrayCode()
1704 __ LoadRoot(rdx, root_index); in Generate_MathMaxMin()
1705 __ Movsd(xmm0, FieldOperand(rdx, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
1706 __ Move(rcx, rax); in Generate_MathMaxMin()
1709 __ bind(&loop); in Generate_MathMaxMin()
1712 __ testp(rcx, rcx); in Generate_MathMaxMin()
1713 __ j(zero, &done_loop); in Generate_MathMaxMin()
1716 __ movp(rbx, Operand(rsp, rcx, times_pointer_size, 0)); in Generate_MathMaxMin()
1721 __ bind(&convert); in Generate_MathMaxMin()
1722 __ JumpIfSmi(rbx, &convert_smi); in Generate_MathMaxMin()
1723 __ JumpIfRoot(FieldOperand(rbx, HeapObject::kMapOffset), in Generate_MathMaxMin()
1728 __ Integer32ToSmi(rax, rax); in Generate_MathMaxMin()
1729 __ Integer32ToSmi(rcx, rcx); in Generate_MathMaxMin()
1730 __ EnterBuiltinFrame(rsi, rdi, rax); in Generate_MathMaxMin()
1731 __ Push(rcx); in Generate_MathMaxMin()
1732 __ Push(rdx); in Generate_MathMaxMin()
1733 __ movp(rax, rbx); in Generate_MathMaxMin()
1734 __ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET); in Generate_MathMaxMin()
1735 __ movp(rbx, rax); in Generate_MathMaxMin()
1736 __ Pop(rdx); in Generate_MathMaxMin()
1737 __ Pop(rcx); in Generate_MathMaxMin()
1738 __ LeaveBuiltinFrame(rsi, rdi, rax); in Generate_MathMaxMin()
1739 __ SmiToInteger32(rcx, rcx); in Generate_MathMaxMin()
1740 __ SmiToInteger32(rax, rax); in Generate_MathMaxMin()
1744 __ JumpIfSmi(rdx, &restore_smi, Label::kNear); in Generate_MathMaxMin()
1745 __ Movsd(xmm0, FieldOperand(rdx, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
1746 __ jmp(&done_restore, Label::kNear); in Generate_MathMaxMin()
1747 __ bind(&restore_smi); in Generate_MathMaxMin()
1748 __ SmiToDouble(xmm0, rdx); in Generate_MathMaxMin()
1749 __ bind(&done_restore); in Generate_MathMaxMin()
1752 __ jmp(&convert); in Generate_MathMaxMin()
1753 __ bind(&convert_number); in Generate_MathMaxMin()
1754 __ Movsd(xmm1, FieldOperand(rbx, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
1755 __ jmp(&done_convert, Label::kNear); in Generate_MathMaxMin()
1756 __ bind(&convert_smi); in Generate_MathMaxMin()
1757 __ SmiToDouble(xmm1, rbx); in Generate_MathMaxMin()
1758 __ bind(&done_convert); in Generate_MathMaxMin()
1763 __ Ucomisd(xmm0, xmm1); in Generate_MathMaxMin()
1764 __ j(parity_even, &compare_nan, Label::kNear); in Generate_MathMaxMin()
1765 __ j(cc, &done_compare, Label::kNear); in Generate_MathMaxMin()
1766 __ j(equal, &compare_equal, Label::kNear); in Generate_MathMaxMin()
1769 __ bind(&compare_swap); in Generate_MathMaxMin()
1770 __ Movaps(xmm0, xmm1); in Generate_MathMaxMin()
1771 __ Move(rdx, rbx); in Generate_MathMaxMin()
1772 __ jmp(&done_compare, Label::kNear); in Generate_MathMaxMin()
1775 __ bind(&compare_nan); in Generate_MathMaxMin()
1776 __ LoadRoot(rdx, Heap::kNanValueRootIndex); in Generate_MathMaxMin()
1777 __ Movsd(xmm0, FieldOperand(rdx, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
1778 __ jmp(&done_compare, Label::kNear); in Generate_MathMaxMin()
1781 __ bind(&compare_equal); in Generate_MathMaxMin()
1782 __ Movmskpd(kScratchRegister, reg); in Generate_MathMaxMin()
1783 __ testl(kScratchRegister, Immediate(1)); in Generate_MathMaxMin()
1784 __ j(not_zero, &compare_swap); in Generate_MathMaxMin()
1786 __ bind(&done_compare); in Generate_MathMaxMin()
1787 __ decp(rcx); in Generate_MathMaxMin()
1788 __ jmp(&loop); in Generate_MathMaxMin()
1791 __ bind(&done_loop); in Generate_MathMaxMin()
1792 __ PopReturnAddressTo(rcx); in Generate_MathMaxMin()
1793 __ leap(rsp, Operand(rsp, rax, times_pointer_size, kPointerSize)); in Generate_MathMaxMin()
1794 __ PushReturnAddressFrom(rcx); in Generate_MathMaxMin()
1795 __ movp(rax, rdx); in Generate_MathMaxMin()
1796 __ Ret(); in Generate_MathMaxMin()
1814 __ testp(rax, rax); in Generate_NumberConstructor()
1815 __ j(zero, &no_arguments, Label::kNear); in Generate_NumberConstructor()
1816 __ movp(rbx, args.GetArgumentOperand(1)); in Generate_NumberConstructor()
1822 __ Integer32ToSmi(rax, rax); in Generate_NumberConstructor()
1823 __ EnterBuiltinFrame(rsi, rdi, rax); in Generate_NumberConstructor()
1824 __ movp(rax, rbx); in Generate_NumberConstructor()
1825 __ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET); in Generate_NumberConstructor()
1826 __ LeaveBuiltinFrame(rsi, rdi, rbx); // Argc popped to rbx. in Generate_NumberConstructor()
1827 __ SmiToInteger32(rbx, rbx); in Generate_NumberConstructor()
1832 __ PopReturnAddressTo(rcx); in Generate_NumberConstructor()
1833 __ leap(rsp, Operand(rsp, rbx, times_pointer_size, kPointerSize)); in Generate_NumberConstructor()
1834 __ PushReturnAddressFrom(rcx); in Generate_NumberConstructor()
1835 __ Ret(); in Generate_NumberConstructor()
1839 __ bind(&no_arguments); in Generate_NumberConstructor()
1840 __ ret(1 * kPointerSize); in Generate_NumberConstructor()
1856 __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_NumberConstructor_ConstructStub()
1859 __ Integer32ToSmi(r8, rax); in Generate_NumberConstructor_ConstructStub()
1865 __ testp(rax, rax); in Generate_NumberConstructor_ConstructStub()
1866 __ j(zero, &no_arguments, Label::kNear); in Generate_NumberConstructor_ConstructStub()
1867 __ movp(rbx, args.GetArgumentOperand(1)); in Generate_NumberConstructor_ConstructStub()
1868 __ jmp(&done, Label::kNear); in Generate_NumberConstructor_ConstructStub()
1869 __ bind(&no_arguments); in Generate_NumberConstructor_ConstructStub()
1870 __ Move(rbx, Smi::kZero); in Generate_NumberConstructor_ConstructStub()
1871 __ bind(&done); in Generate_NumberConstructor_ConstructStub()
1877 __ JumpIfSmi(rbx, &done_convert); in Generate_NumberConstructor_ConstructStub()
1878 __ CompareRoot(FieldOperand(rbx, HeapObject::kMapOffset), in Generate_NumberConstructor_ConstructStub()
1880 __ j(equal, &done_convert); in Generate_NumberConstructor_ConstructStub()
1883 __ EnterBuiltinFrame(rsi, rdi, r8); in Generate_NumberConstructor_ConstructStub()
1884 __ Push(rdx); in Generate_NumberConstructor_ConstructStub()
1885 __ Move(rax, rbx); in Generate_NumberConstructor_ConstructStub()
1886 __ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET); in Generate_NumberConstructor_ConstructStub()
1887 __ Move(rbx, rax); in Generate_NumberConstructor_ConstructStub()
1888 __ Pop(rdx); in Generate_NumberConstructor_ConstructStub()
1889 __ LeaveBuiltinFrame(rsi, rdi, r8); in Generate_NumberConstructor_ConstructStub()
1891 __ bind(&done_convert); in Generate_NumberConstructor_ConstructStub()
1896 __ cmpp(rdx, rdi); in Generate_NumberConstructor_ConstructStub()
1897 __ j(not_equal, &new_object); in Generate_NumberConstructor_ConstructStub()
1900 __ AllocateJSValue(rax, rdi, rbx, rcx, &new_object); in Generate_NumberConstructor_ConstructStub()
1901 __ jmp(&drop_frame_and_ret, Label::kNear); in Generate_NumberConstructor_ConstructStub()
1904 __ bind(&new_object); in Generate_NumberConstructor_ConstructStub()
1907 __ EnterBuiltinFrame(rsi, rdi, r8); in Generate_NumberConstructor_ConstructStub()
1908 __ Push(rbx); // the first argument in Generate_NumberConstructor_ConstructStub()
1909 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(), in Generate_NumberConstructor_ConstructStub()
1911 __ Pop(FieldOperand(rax, JSValue::kValueOffset)); in Generate_NumberConstructor_ConstructStub()
1912 __ LeaveBuiltinFrame(rsi, rdi, r8); in Generate_NumberConstructor_ConstructStub()
1915 __ bind(&drop_frame_and_ret); in Generate_NumberConstructor_ConstructStub()
1918 __ PopReturnAddressTo(rcx); in Generate_NumberConstructor_ConstructStub()
1919 __ SmiToInteger32(r8, r8); in Generate_NumberConstructor_ConstructStub()
1920 __ leap(rsp, Operand(rsp, r8, times_pointer_size, kPointerSize)); in Generate_NumberConstructor_ConstructStub()
1921 __ PushReturnAddressFrom(rcx); in Generate_NumberConstructor_ConstructStub()
1922 __ Ret(); in Generate_NumberConstructor_ConstructStub()
1941 __ Integer32ToSmi(r8, rax); // Store argc in r8. in Generate_StringConstructor()
1942 __ testp(rax, rax); in Generate_StringConstructor()
1943 __ j(zero, &no_arguments, Label::kNear); in Generate_StringConstructor()
1944 __ movp(rax, args.GetArgumentOperand(1)); in Generate_StringConstructor()
1951 __ JumpIfSmi(rax, &to_string, Label::kNear); in Generate_StringConstructor()
1953 __ CmpObjectType(rax, FIRST_NONSTRING_TYPE, rdx); in Generate_StringConstructor()
1954 __ j(above, &to_string, Label::kNear); in Generate_StringConstructor()
1955 __ j(equal, &symbol_descriptive_string, Label::kNear); in Generate_StringConstructor()
1956 __ jmp(&drop_frame_and_ret, Label::kNear); in Generate_StringConstructor()
1960 __ bind(&no_arguments); in Generate_StringConstructor()
1962 __ LoadRoot(rax, Heap::kempty_stringRootIndex); in Generate_StringConstructor()
1963 __ ret(1 * kPointerSize); in Generate_StringConstructor()
1967 __ bind(&to_string); in Generate_StringConstructor()
1970 __ EnterBuiltinFrame(rsi, rdi, r8); in Generate_StringConstructor()
1971 __ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET); in Generate_StringConstructor()
1972 __ LeaveBuiltinFrame(rsi, rdi, r8); in Generate_StringConstructor()
1974 __ jmp(&drop_frame_and_ret, Label::kNear); in Generate_StringConstructor()
1977 __ bind(&symbol_descriptive_string); in Generate_StringConstructor()
1979 __ PopReturnAddressTo(rcx); in Generate_StringConstructor()
1980 __ SmiToInteger32(r8, r8); in Generate_StringConstructor()
1981 __ leap(rsp, Operand(rsp, r8, times_pointer_size, kPointerSize)); in Generate_StringConstructor()
1982 __ Push(rax); in Generate_StringConstructor()
1983 __ PushReturnAddressFrom(rcx); in Generate_StringConstructor()
1984 __ TailCallRuntime(Runtime::kSymbolDescriptiveString); in Generate_StringConstructor()
1987 __ bind(&drop_frame_and_ret); in Generate_StringConstructor()
1990 __ PopReturnAddressTo(rcx); in Generate_StringConstructor()
1991 __ SmiToInteger32(r8, r8); in Generate_StringConstructor()
1992 __ leap(rsp, Operand(rsp, r8, times_pointer_size, kPointerSize)); in Generate_StringConstructor()
1993 __ PushReturnAddressFrom(rcx); in Generate_StringConstructor()
1994 __ Ret(); in Generate_StringConstructor()
2011 __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_StringConstructor_ConstructStub()
2014 __ Integer32ToSmi(r8, rax); in Generate_StringConstructor_ConstructStub()
2020 __ testp(rax, rax); in Generate_StringConstructor_ConstructStub()
2021 __ j(zero, &no_arguments, Label::kNear); in Generate_StringConstructor_ConstructStub()
2022 __ movp(rbx, args.GetArgumentOperand(1)); in Generate_StringConstructor_ConstructStub()
2023 __ jmp(&done, Label::kNear); in Generate_StringConstructor_ConstructStub()
2024 __ bind(&no_arguments); in Generate_StringConstructor_ConstructStub()
2025 __ LoadRoot(rbx, Heap::kempty_stringRootIndex); in Generate_StringConstructor_ConstructStub()
2026 __ bind(&done); in Generate_StringConstructor_ConstructStub()
2032 __ JumpIfSmi(rbx, &convert, Label::kNear); in Generate_StringConstructor_ConstructStub()
2033 __ CmpObjectType(rbx, FIRST_NONSTRING_TYPE, rcx); in Generate_StringConstructor_ConstructStub()
2034 __ j(below, &done_convert); in Generate_StringConstructor_ConstructStub()
2035 __ bind(&convert); in Generate_StringConstructor_ConstructStub()
2038 __ EnterBuiltinFrame(rsi, rdi, r8); in Generate_StringConstructor_ConstructStub()
2039 __ Push(rdx); in Generate_StringConstructor_ConstructStub()
2040 __ Move(rax, rbx); in Generate_StringConstructor_ConstructStub()
2041 __ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET); in Generate_StringConstructor_ConstructStub()
2042 __ Move(rbx, rax); in Generate_StringConstructor_ConstructStub()
2043 __ Pop(rdx); in Generate_StringConstructor_ConstructStub()
2044 __ LeaveBuiltinFrame(rsi, rdi, r8); in Generate_StringConstructor_ConstructStub()
2046 __ bind(&done_convert); in Generate_StringConstructor_ConstructStub()
2051 __ cmpp(rdx, rdi); in Generate_StringConstructor_ConstructStub()
2052 __ j(not_equal, &new_object); in Generate_StringConstructor_ConstructStub()
2055 __ AllocateJSValue(rax, rdi, rbx, rcx, &new_object); in Generate_StringConstructor_ConstructStub()
2056 __ jmp(&drop_frame_and_ret, Label::kNear); in Generate_StringConstructor_ConstructStub()
2059 __ bind(&new_object); in Generate_StringConstructor_ConstructStub()
2062 __ EnterBuiltinFrame(rsi, rdi, r8); in Generate_StringConstructor_ConstructStub()
2063 __ Push(rbx); // the first argument in Generate_StringConstructor_ConstructStub()
2064 __ Call(CodeFactory::FastNewObject(masm->isolate()).code(), in Generate_StringConstructor_ConstructStub()
2066 __ Pop(FieldOperand(rax, JSValue::kValueOffset)); in Generate_StringConstructor_ConstructStub()
2067 __ LeaveBuiltinFrame(rsi, rdi, r8); in Generate_StringConstructor_ConstructStub()
2070 __ bind(&drop_frame_and_ret); in Generate_StringConstructor_ConstructStub()
2073 __ PopReturnAddressTo(rcx); in Generate_StringConstructor_ConstructStub()
2074 __ SmiToInteger32(r8, r8); in Generate_StringConstructor_ConstructStub()
2075 __ leap(rsp, Operand(rsp, r8, times_pointer_size, kPointerSize)); in Generate_StringConstructor_ConstructStub()
2076 __ PushReturnAddressFrom(rcx); in Generate_StringConstructor_ConstructStub()
2077 __ Ret(); in Generate_StringConstructor_ConstructStub()
2082 __ pushq(rbp); in EnterArgumentsAdaptorFrame()
2083 __ movp(rbp, rsp); in EnterArgumentsAdaptorFrame()
2086 __ Push(Immediate(StackFrame::TypeToMarker(StackFrame::ARGUMENTS_ADAPTOR))); in EnterArgumentsAdaptorFrame()
2089 __ Push(rdi); in EnterArgumentsAdaptorFrame()
2094 __ Integer32ToSmi(r8, rax); in EnterArgumentsAdaptorFrame()
2095 __ Push(r8); in EnterArgumentsAdaptorFrame()
2100 __ movp(rbx, Operand(rbp, ArgumentsAdaptorFrameConstants::kLengthOffset)); in LeaveArgumentsAdaptorFrame()
2103 __ movp(rsp, rbp); in LeaveArgumentsAdaptorFrame()
2104 __ popq(rbp); in LeaveArgumentsAdaptorFrame()
2107 __ PopReturnAddressTo(rcx); in LeaveArgumentsAdaptorFrame()
2109 __ leap(rsp, Operand(rsp, index.reg, index.scale, 1 * kPointerSize)); in LeaveArgumentsAdaptorFrame()
2110 __ PushReturnAddressFrom(rcx); in LeaveArgumentsAdaptorFrame()
2119 __ Integer32ToSmi(rdx, rdx); in Generate_AllocateInNewSpace()
2120 __ PopReturnAddressTo(rcx); in Generate_AllocateInNewSpace()
2121 __ Push(rdx); in Generate_AllocateInNewSpace()
2122 __ PushReturnAddressFrom(rcx); in Generate_AllocateInNewSpace()
2123 __ Move(rsi, Smi::kZero); in Generate_AllocateInNewSpace()
2124 __ TailCallRuntime(Runtime::kAllocateInNewSpace); in Generate_AllocateInNewSpace()
2133 __ Integer32ToSmi(rdx, rdx); in Generate_AllocateInOldSpace()
2134 __ PopReturnAddressTo(rcx); in Generate_AllocateInOldSpace()
2135 __ Push(rdx); in Generate_AllocateInOldSpace()
2136 __ Push(Smi::FromInt(AllocateTargetSpace::encode(OLD_SPACE))); in Generate_AllocateInOldSpace()
2137 __ PushReturnAddressFrom(rcx); in Generate_AllocateInOldSpace()
2138 __ Move(rsi, Smi::kZero); in Generate_AllocateInOldSpace()
2139 __ TailCallRuntime(Runtime::kAllocateInTargetSpace); in Generate_AllocateInOldSpace()
2148 __ PopReturnAddressTo(rcx); in Generate_Abort()
2149 __ Push(rdx); in Generate_Abort()
2150 __ PushReturnAddressFrom(rcx); in Generate_Abort()
2151 __ Move(rsi, Smi::kZero); in Generate_Abort()
2152 __ TailCallRuntime(Runtime::kAbort); in Generate_Abort()
2165 __ IncrementCounter(counters->arguments_adaptors(), 1); in Generate_ArgumentsAdaptorTrampoline()
2168 __ cmpp(rax, rbx); in Generate_ArgumentsAdaptorTrampoline()
2169 __ j(less, &too_few); in Generate_ArgumentsAdaptorTrampoline()
2170 __ cmpp(rbx, Immediate(SharedFunctionInfo::kDontAdaptArgumentsSentinel)); in Generate_ArgumentsAdaptorTrampoline()
2171 __ j(equal, &dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
2174 __ bind(&enough); in Generate_ArgumentsAdaptorTrampoline()
2181 __ leap(rax, Operand(rbp, rax, times_pointer_size, offset)); in Generate_ArgumentsAdaptorTrampoline()
2182 __ Set(r8, -1); // account for receiver in Generate_ArgumentsAdaptorTrampoline()
2185 __ bind(&copy); in Generate_ArgumentsAdaptorTrampoline()
2186 __ incp(r8); in Generate_ArgumentsAdaptorTrampoline()
2187 __ Push(Operand(rax, 0)); in Generate_ArgumentsAdaptorTrampoline()
2188 __ subp(rax, Immediate(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
2189 __ cmpp(r8, rbx); in Generate_ArgumentsAdaptorTrampoline()
2190 __ j(less, &copy); in Generate_ArgumentsAdaptorTrampoline()
2191 __ jmp(&invoke); in Generate_ArgumentsAdaptorTrampoline()
2195 __ bind(&too_few); in Generate_ArgumentsAdaptorTrampoline()
2203 __ leap(rdi, Operand(rbp, rax, times_pointer_size, offset)); in Generate_ArgumentsAdaptorTrampoline()
2204 __ Set(r8, -1); // account for receiver in Generate_ArgumentsAdaptorTrampoline()
2207 __ bind(&copy); in Generate_ArgumentsAdaptorTrampoline()
2208 __ incp(r8); in Generate_ArgumentsAdaptorTrampoline()
2209 __ Push(Operand(rdi, 0)); in Generate_ArgumentsAdaptorTrampoline()
2210 __ subp(rdi, Immediate(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
2211 __ cmpp(r8, rax); in Generate_ArgumentsAdaptorTrampoline()
2212 __ j(less, &copy); in Generate_ArgumentsAdaptorTrampoline()
2216 __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex); in Generate_ArgumentsAdaptorTrampoline()
2217 __ bind(&fill); in Generate_ArgumentsAdaptorTrampoline()
2218 __ incp(r8); in Generate_ArgumentsAdaptorTrampoline()
2219 __ Push(kScratchRegister); in Generate_ArgumentsAdaptorTrampoline()
2220 __ cmpp(r8, rbx); in Generate_ArgumentsAdaptorTrampoline()
2221 __ j(less, &fill); in Generate_ArgumentsAdaptorTrampoline()
2224 __ movp(rdi, Operand(rbp, ArgumentsAdaptorFrameConstants::kFunctionOffset)); in Generate_ArgumentsAdaptorTrampoline()
2228 __ bind(&invoke); in Generate_ArgumentsAdaptorTrampoline()
2229 __ movp(rax, rbx); in Generate_ArgumentsAdaptorTrampoline()
2233 __ movp(rcx, FieldOperand(rdi, JSFunction::kCodeEntryOffset)); in Generate_ArgumentsAdaptorTrampoline()
2234 __ call(rcx); in Generate_ArgumentsAdaptorTrampoline()
2241 __ ret(0); in Generate_ArgumentsAdaptorTrampoline()
2246 __ bind(&dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
2247 __ movp(rcx, FieldOperand(rdi, JSFunction::kCodeEntryOffset)); in Generate_ArgumentsAdaptorTrampoline()
2248 __ jmp(rcx); in Generate_ArgumentsAdaptorTrampoline()
2250 __ bind(&stack_overflow); in Generate_ArgumentsAdaptorTrampoline()
2253 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_ArgumentsAdaptorTrampoline()
2254 __ int3(); in Generate_ArgumentsAdaptorTrampoline()
2272 __ JumpIfSmi(rax, &create_runtime); in Generate_Apply()
2275 __ movp(rcx, FieldOperand(rax, HeapObject::kMapOffset)); in Generate_Apply()
2278 __ movp(rbx, NativeContextOperand()); in Generate_Apply()
2281 __ cmpp(rcx, ContextOperand(rbx, Context::SLOPPY_ARGUMENTS_MAP_INDEX)); in Generate_Apply()
2282 __ j(equal, &create_arguments); in Generate_Apply()
2283 __ cmpp(rcx, ContextOperand(rbx, Context::STRICT_ARGUMENTS_MAP_INDEX)); in Generate_Apply()
2284 __ j(equal, &create_arguments); in Generate_Apply()
2287 __ CmpInstanceType(rcx, JS_ARRAY_TYPE); in Generate_Apply()
2288 __ j(equal, &create_array); in Generate_Apply()
2291 __ bind(&create_runtime); in Generate_Apply()
2294 __ Push(rdi); in Generate_Apply()
2295 __ Push(rdx); in Generate_Apply()
2296 __ Push(rax); in Generate_Apply()
2297 __ CallRuntime(Runtime::kCreateListFromArrayLike); in Generate_Apply()
2298 __ Pop(rdx); in Generate_Apply()
2299 __ Pop(rdi); in Generate_Apply()
2300 __ SmiToInteger32(rbx, FieldOperand(rax, FixedArray::kLengthOffset)); in Generate_Apply()
2302 __ jmp(&done_create); in Generate_Apply()
2305 __ bind(&create_arguments); in Generate_Apply()
2306 __ movp(rbx, FieldOperand(rax, JSArgumentsObject::kLengthOffset)); in Generate_Apply()
2307 __ movp(rcx, FieldOperand(rax, JSObject::kElementsOffset)); in Generate_Apply()
2308 __ cmpp(rbx, FieldOperand(rcx, FixedArray::kLengthOffset)); in Generate_Apply()
2309 __ j(not_equal, &create_runtime); in Generate_Apply()
2310 __ SmiToInteger32(rbx, rbx); in Generate_Apply()
2311 __ movp(rax, rcx); in Generate_Apply()
2312 __ jmp(&done_create); in Generate_Apply()
2314 __ bind(&create_holey_array); in Generate_Apply()
2317 __ movp(rcx, FieldOperand(rax, HeapObject::kMapOffset)); in Generate_Apply()
2318 __ movp(rcx, FieldOperand(rcx, Map::kPrototypeOffset)); in Generate_Apply()
2319 __ cmpp(rcx, ContextOperand(rbx, Context::INITIAL_ARRAY_PROTOTYPE_INDEX)); in Generate_Apply()
2320 __ j(not_equal, &create_runtime); in Generate_Apply()
2321 __ LoadRoot(rcx, Heap::kArrayProtectorRootIndex); in Generate_Apply()
2322 __ Cmp(FieldOperand(rcx, PropertyCell::kValueOffset), in Generate_Apply()
2324 __ j(not_equal, &create_runtime); in Generate_Apply()
2325 __ SmiToInteger32(rbx, FieldOperand(rax, JSArray::kLengthOffset)); in Generate_Apply()
2326 __ movp(rax, FieldOperand(rax, JSArray::kElementsOffset)); in Generate_Apply()
2327 __ jmp(&done_create); in Generate_Apply()
2330 __ bind(&create_array); in Generate_Apply()
2331 __ movzxbp(rcx, FieldOperand(rcx, Map::kBitField2Offset)); in Generate_Apply()
2332 __ DecodeField<Map::ElementsKindBits>(rcx); in Generate_Apply()
2337 __ cmpl(rcx, Immediate(FAST_HOLEY_SMI_ELEMENTS)); in Generate_Apply()
2338 __ j(equal, &create_holey_array); in Generate_Apply()
2339 __ cmpl(rcx, Immediate(FAST_HOLEY_ELEMENTS)); in Generate_Apply()
2340 __ j(equal, &create_holey_array); in Generate_Apply()
2341 __ j(above, &create_runtime); in Generate_Apply()
2342 __ SmiToInteger32(rbx, FieldOperand(rax, JSArray::kLengthOffset)); in Generate_Apply()
2343 __ movp(rax, FieldOperand(rax, JSArray::kElementsOffset)); in Generate_Apply()
2345 __ bind(&done_create); in Generate_Apply()
2353 __ LoadRoot(kScratchRegister, Heap::kRealStackLimitRootIndex); in Generate_Apply()
2354 __ movp(rcx, rsp); in Generate_Apply()
2357 __ subp(rcx, kScratchRegister); in Generate_Apply()
2358 __ sarp(rcx, Immediate(kPointerSizeLog2)); in Generate_Apply()
2360 __ cmpp(rcx, rbx); in Generate_Apply()
2361 __ j(greater, &done, Label::kNear); // Signed comparison. in Generate_Apply()
2362 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_Apply()
2363 __ bind(&done); in Generate_Apply()
2377 __ PopReturnAddressTo(r8); in Generate_Apply()
2378 __ Set(rcx, 0); in Generate_Apply()
2380 __ bind(&loop); in Generate_Apply()
2381 __ cmpl(rcx, rbx); in Generate_Apply()
2382 __ j(equal, &done, Label::kNear); in Generate_Apply()
2384 __ movp(r9, FieldOperand(rax, rcx, times_pointer_size, in Generate_Apply()
2386 __ CompareRoot(r9, Heap::kTheHoleValueRootIndex); in Generate_Apply()
2387 __ j(not_equal, &push, Label::kNear); in Generate_Apply()
2388 __ LoadRoot(r9, Heap::kUndefinedValueRootIndex); in Generate_Apply()
2389 __ bind(&push); in Generate_Apply()
2390 __ Push(r9); in Generate_Apply()
2391 __ incl(rcx); in Generate_Apply()
2392 __ jmp(&loop); in Generate_Apply()
2393 __ bind(&done); in Generate_Apply()
2394 __ PushReturnAddressFrom(r8); in Generate_Apply()
2395 __ Move(rax, rcx); in Generate_Apply()
2400 __ CompareRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_Apply()
2401 __ j(equal, masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); in Generate_Apply()
2402 __ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); in Generate_Apply()
2418 __ movp(rbx, Operand(rbp, StandardFrameConstants::kCallerFPOffset)); in Generate_CallForwardVarargs()
2419 __ cmpp(Operand(rbx, CommonFrameConstants::kContextOrFrameTypeOffset), in Generate_CallForwardVarargs()
2421 __ j(equal, &arguments_adaptor, Label::kNear); in Generate_CallForwardVarargs()
2423 __ movp(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_CallForwardVarargs()
2424 __ movp(rax, FieldOperand(rax, JSFunction::kSharedFunctionInfoOffset)); in Generate_CallForwardVarargs()
2425 __ LoadSharedFunctionInfoSpecialField( in Generate_CallForwardVarargs()
2427 __ movp(rbx, rbp); in Generate_CallForwardVarargs()
2429 __ jmp(&arguments_done, Label::kNear); in Generate_CallForwardVarargs()
2430 __ bind(&arguments_adaptor); in Generate_CallForwardVarargs()
2432 __ SmiToInteger32( in Generate_CallForwardVarargs()
2435 __ bind(&arguments_done); in Generate_CallForwardVarargs()
2438 __ subl(rax, rcx); in Generate_CallForwardVarargs()
2439 __ j(less_equal, &stack_empty); in Generate_CallForwardVarargs()
2447 __ movl(rcx, rax); in Generate_CallForwardVarargs()
2448 __ Pop(r8); in Generate_CallForwardVarargs()
2449 __ bind(&loop); in Generate_CallForwardVarargs()
2452 __ Push(args.GetArgumentOperand(0)); in Generate_CallForwardVarargs()
2453 __ decl(rcx); in Generate_CallForwardVarargs()
2454 __ j(not_zero, &loop); in Generate_CallForwardVarargs()
2456 __ Push(r8); in Generate_CallForwardVarargs()
2459 __ jmp(&stack_done, Label::kNear); in Generate_CallForwardVarargs()
2460 __ bind(&stack_overflow); in Generate_CallForwardVarargs()
2461 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_CallForwardVarargs()
2462 __ bind(&stack_empty); in Generate_CallForwardVarargs()
2465 __ Set(rax, 0); in Generate_CallForwardVarargs()
2467 __ bind(&stack_done); in Generate_CallForwardVarargs()
2469 __ Jump(code, RelocInfo::CODE_TARGET); in Generate_CallForwardVarargs()
2513 __ Move(kScratchRegister, is_tail_call_elimination_enabled); in PrepareForTailCall()
2514 __ cmpb(Operand(kScratchRegister, 0), Immediate(0)); in PrepareForTailCall()
2515 __ j(equal, &done); in PrepareForTailCall()
2520 __ cmpp(Operand(rbp, CommonFrameConstants::kContextOrFrameTypeOffset), in PrepareForTailCall()
2522 __ j(not_equal, &no_interpreter_frame, Label::kNear); in PrepareForTailCall()
2523 __ movp(rbp, Operand(rbp, StandardFrameConstants::kCallerFPOffset)); in PrepareForTailCall()
2524 __ bind(&no_interpreter_frame); in PrepareForTailCall()
2530 __ movp(scratch2, Operand(rbp, StandardFrameConstants::kCallerFPOffset)); in PrepareForTailCall()
2531 __ cmpp(Operand(scratch2, CommonFrameConstants::kContextOrFrameTypeOffset), in PrepareForTailCall()
2533 __ j(not_equal, &no_arguments_adaptor, Label::kNear); in PrepareForTailCall()
2536 __ movp(rbp, scratch2); in PrepareForTailCall()
2537 __ SmiToInteger32( in PrepareForTailCall()
2540 __ jmp(&formal_parameter_count_loaded, Label::kNear); in PrepareForTailCall()
2542 __ bind(&no_arguments_adaptor); in PrepareForTailCall()
2544 __ movp(scratch1, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); in PrepareForTailCall()
2545 __ movp(scratch1, in PrepareForTailCall()
2547 __ LoadSharedFunctionInfoSpecialField( in PrepareForTailCall()
2551 __ bind(&formal_parameter_count_loaded); in PrepareForTailCall()
2554 __ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2, in PrepareForTailCall()
2556 __ bind(&done); in PrepareForTailCall()
2569 __ AssertFunction(rdi); in Generate_CallFunction()
2574 __ movp(rdx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_CallFunction()
2575 __ testb(FieldOperand(rdx, SharedFunctionInfo::kFunctionKindByteOffset), in Generate_CallFunction()
2577 __ j(not_zero, &class_constructor); in Generate_CallFunction()
2590 __ movp(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); in Generate_CallFunction()
2593 __ testb(FieldOperand(rdx, SharedFunctionInfo::kNativeByteOffset), in Generate_CallFunction()
2596 __ j(not_zero, &done_convert); in Generate_CallFunction()
2607 __ LoadGlobalProxy(rcx); in Generate_CallFunction()
2610 __ movp(rcx, args.GetReceiverOperand()); in Generate_CallFunction()
2611 __ JumpIfSmi(rcx, &convert_to_object, Label::kNear); in Generate_CallFunction()
2613 __ CmpObjectType(rcx, FIRST_JS_RECEIVER_TYPE, rbx); in Generate_CallFunction()
2614 __ j(above_equal, &done_convert); in Generate_CallFunction()
2617 __ JumpIfRoot(rcx, Heap::kUndefinedValueRootIndex, in Generate_CallFunction()
2619 __ JumpIfNotRoot(rcx, Heap::kNullValueRootIndex, &convert_to_object, in Generate_CallFunction()
2621 __ bind(&convert_global_proxy); in Generate_CallFunction()
2624 __ LoadGlobalProxy(rcx); in Generate_CallFunction()
2626 __ jmp(&convert_receiver); in Generate_CallFunction()
2628 __ bind(&convert_to_object); in Generate_CallFunction()
2634 __ Integer32ToSmi(rax, rax); in Generate_CallFunction()
2635 __ Push(rax); in Generate_CallFunction()
2636 __ Push(rdi); in Generate_CallFunction()
2637 __ movp(rax, rcx); in Generate_CallFunction()
2638 __ Push(rsi); in Generate_CallFunction()
2639 __ Call(masm->isolate()->builtins()->ToObject(), in Generate_CallFunction()
2641 __ Pop(rsi); in Generate_CallFunction()
2642 __ movp(rcx, rax); in Generate_CallFunction()
2643 __ Pop(rdi); in Generate_CallFunction()
2644 __ Pop(rax); in Generate_CallFunction()
2645 __ SmiToInteger32(rax, rax); in Generate_CallFunction()
2647 __ movp(rdx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_CallFunction()
2648 __ bind(&convert_receiver); in Generate_CallFunction()
2650 __ movp(args.GetReceiverOperand(), rcx); in Generate_CallFunction()
2652 __ bind(&done_convert); in Generate_CallFunction()
2665 __ LoadSharedFunctionInfoSpecialField( in Generate_CallFunction()
2670 __ InvokeFunctionCode(rdi, no_reg, expected, actual, JUMP_FUNCTION, in Generate_CallFunction()
2674 __ bind(&class_constructor); in Generate_CallFunction()
2677 __ Push(rdi); in Generate_CallFunction()
2678 __ CallRuntime(Runtime::kThrowConstructorNonCallableError); in Generate_CallFunction()
2693 __ movp(rcx, FieldOperand(rdi, JSBoundFunction::kBoundArgumentsOffset)); in Generate_PushBoundArguments()
2694 __ SmiToInteger32(rbx, FieldOperand(rcx, FixedArray::kLengthOffset)); in Generate_PushBoundArguments()
2695 __ testl(rbx, rbx); in Generate_PushBoundArguments()
2696 __ j(zero, &no_bound_arguments); in Generate_PushBoundArguments()
2709 __ leap(kScratchRegister, Operand(rbx, times_pointer_size, 0)); in Generate_PushBoundArguments()
2710 __ subp(rsp, kScratchRegister); in Generate_PushBoundArguments()
2714 __ CompareRoot(rsp, Heap::kRealStackLimitRootIndex); in Generate_PushBoundArguments()
2715 __ j(greater, &done, Label::kNear); // Signed comparison. in Generate_PushBoundArguments()
2717 __ leap(rsp, Operand(rsp, rbx, times_pointer_size, 0)); in Generate_PushBoundArguments()
2720 __ EnterFrame(StackFrame::INTERNAL); in Generate_PushBoundArguments()
2721 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_PushBoundArguments()
2723 __ bind(&done); in Generate_PushBoundArguments()
2727 __ incl(rax); in Generate_PushBoundArguments()
2732 __ Set(rcx, 0); in Generate_PushBoundArguments()
2733 __ leap(rbx, Operand(rsp, rbx, times_pointer_size, 0)); in Generate_PushBoundArguments()
2734 __ bind(&loop); in Generate_PushBoundArguments()
2735 __ movp(kScratchRegister, Operand(rbx, rcx, times_pointer_size, 0)); in Generate_PushBoundArguments()
2736 __ movp(Operand(rsp, rcx, times_pointer_size, 0), kScratchRegister); in Generate_PushBoundArguments()
2737 __ incl(rcx); in Generate_PushBoundArguments()
2738 __ cmpl(rcx, rax); in Generate_PushBoundArguments()
2739 __ j(less, &loop); in Generate_PushBoundArguments()
2745 __ movp(rcx, FieldOperand(rdi, JSBoundFunction::kBoundArgumentsOffset)); in Generate_PushBoundArguments()
2746 __ SmiToInteger32(rbx, FieldOperand(rcx, FixedArray::kLengthOffset)); in Generate_PushBoundArguments()
2747 __ bind(&loop); in Generate_PushBoundArguments()
2748 __ decl(rbx); in Generate_PushBoundArguments()
2749 __ movp(kScratchRegister, FieldOperand(rcx, rbx, times_pointer_size, in Generate_PushBoundArguments()
2751 __ movp(Operand(rsp, rax, times_pointer_size, 0), kScratchRegister); in Generate_PushBoundArguments()
2752 __ leal(rax, Operand(rax, 1)); in Generate_PushBoundArguments()
2753 __ j(greater, &loop); in Generate_PushBoundArguments()
2759 __ decl(rax); in Generate_PushBoundArguments()
2761 __ bind(&no_bound_arguments); in Generate_PushBoundArguments()
2773 __ AssertBoundFunction(rdi); in Generate_CallBoundFunctionImpl()
2781 __ movp(rbx, FieldOperand(rdi, JSBoundFunction::kBoundThisOffset)); in Generate_CallBoundFunctionImpl()
2782 __ movp(args.GetReceiverOperand(), rbx); in Generate_CallBoundFunctionImpl()
2788 __ movp(rdi, FieldOperand(rdi, JSBoundFunction::kBoundTargetFunctionOffset)); in Generate_CallBoundFunctionImpl()
2789 __ Load(rcx, in Generate_CallBoundFunctionImpl()
2791 __ leap(rcx, FieldOperand(rcx, Code::kHeaderSize)); in Generate_CallBoundFunctionImpl()
2792 __ jmp(rcx); in Generate_CallBoundFunctionImpl()
2805 __ JumpIfSmi(rdi, &non_callable); in Generate_Call()
2806 __ bind(&non_smi); in Generate_Call()
2807 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx); in Generate_Call()
2808 __ j(equal, masm->isolate()->builtins()->CallFunction(mode, tail_call_mode), in Generate_Call()
2810 __ CmpInstanceType(rcx, JS_BOUND_FUNCTION_TYPE); in Generate_Call()
2811 __ j(equal, masm->isolate()->builtins()->CallBoundFunction(tail_call_mode), in Generate_Call()
2815 __ testb(FieldOperand(rcx, Map::kBitFieldOffset), in Generate_Call()
2817 __ j(zero, &non_callable); in Generate_Call()
2819 __ CmpInstanceType(rcx, JS_PROXY_TYPE); in Generate_Call()
2820 __ j(not_equal, &non_function); in Generate_Call()
2828 __ PopReturnAddressTo(kScratchRegister); in Generate_Call()
2829 __ Push(rdi); in Generate_Call()
2830 __ PushReturnAddressFrom(kScratchRegister); in Generate_Call()
2833 __ addp(rax, Immediate(2)); in Generate_Call()
2835 __ JumpToExternalReference( in Generate_Call()
2840 __ bind(&non_function); in Generate_Call()
2842 __ movp(args.GetReceiverOperand(), rdi); in Generate_Call()
2844 __ LoadNativeContextSlot(Context::CALL_AS_FUNCTION_DELEGATE_INDEX, rdi); in Generate_Call()
2845 __ Jump(masm->isolate()->builtins()->CallFunction( in Generate_Call()
2850 __ bind(&non_callable); in Generate_Call()
2853 __ Push(rdi); in Generate_Call()
2854 __ CallRuntime(Runtime::kThrowCalledNonCallable); in Generate_Call()
2861 __ movp(rbx, Operand(rsp, kPointerSize)); in CheckSpreadAndPushToStack()
2862 __ JumpIfSmi(rbx, &runtime_call); in CheckSpreadAndPushToStack()
2864 __ movp(r15, FieldOperand(rbx, HeapObject::kMapOffset)); in CheckSpreadAndPushToStack()
2866 __ movp(r14, NativeContextOperand()); in CheckSpreadAndPushToStack()
2869 __ CmpInstanceType(r15, JS_ARRAY_TYPE); in CheckSpreadAndPushToStack()
2870 __ j(not_equal, &runtime_call); in CheckSpreadAndPushToStack()
2873 __ movp(rcx, FieldOperand(r15, Map::kPrototypeOffset)); in CheckSpreadAndPushToStack()
2874 __ cmpp(rcx, ContextOperand(r14, Context::INITIAL_ARRAY_PROTOTYPE_INDEX)); in CheckSpreadAndPushToStack()
2875 __ j(not_equal, &runtime_call); in CheckSpreadAndPushToStack()
2879 __ LoadRoot(rcx, Heap::kArrayIteratorProtectorRootIndex); in CheckSpreadAndPushToStack()
2880 __ Cmp(FieldOperand(rcx, PropertyCell::kValueOffset), in CheckSpreadAndPushToStack()
2882 __ j(not_equal, &runtime_call); in CheckSpreadAndPushToStack()
2885 __ movp(rcx, in CheckSpreadAndPushToStack()
2887 __ movp(rcx, FieldOperand(rcx, HeapObject::kMapOffset)); in CheckSpreadAndPushToStack()
2888 __ cmpp(rcx, ContextOperand( in CheckSpreadAndPushToStack()
2890 __ j(not_equal, &runtime_call); in CheckSpreadAndPushToStack()
2895 __ movzxbp(rcx, FieldOperand(r15, Map::kBitField2Offset)); in CheckSpreadAndPushToStack()
2896 __ DecodeField<Map::ElementsKindBits>(rcx); in CheckSpreadAndPushToStack()
2897 __ cmpp(rcx, Immediate(FAST_HOLEY_ELEMENTS)); in CheckSpreadAndPushToStack()
2898 __ j(above, &runtime_call); in CheckSpreadAndPushToStack()
2900 __ cmpp(rcx, Immediate(FAST_SMI_ELEMENTS)); in CheckSpreadAndPushToStack()
2901 __ j(equal, &no_protector_check); in CheckSpreadAndPushToStack()
2902 __ cmpp(rcx, Immediate(FAST_ELEMENTS)); in CheckSpreadAndPushToStack()
2903 __ j(equal, &no_protector_check); in CheckSpreadAndPushToStack()
2905 __ LoadRoot(rcx, Heap::kArrayProtectorRootIndex); in CheckSpreadAndPushToStack()
2906 __ Cmp(FieldOperand(rcx, PropertyCell::kValueOffset), in CheckSpreadAndPushToStack()
2908 __ j(not_equal, &runtime_call); in CheckSpreadAndPushToStack()
2910 __ bind(&no_protector_check); in CheckSpreadAndPushToStack()
2912 __ SmiToInteger32(r9, FieldOperand(rbx, JSArray::kLengthOffset)); in CheckSpreadAndPushToStack()
2913 __ movp(rbx, FieldOperand(rbx, JSArray::kElementsOffset)); in CheckSpreadAndPushToStack()
2914 __ jmp(&push_args); in CheckSpreadAndPushToStack()
2916 __ bind(&runtime_call); in CheckSpreadAndPushToStack()
2920 __ Push(rdi); // target in CheckSpreadAndPushToStack()
2921 __ Push(rdx); // new target in CheckSpreadAndPushToStack()
2922 __ Integer32ToSmi(rax, rax); in CheckSpreadAndPushToStack()
2923 __ Push(rax); // nargs in CheckSpreadAndPushToStack()
2924 __ Push(rbx); in CheckSpreadAndPushToStack()
2925 __ CallRuntime(Runtime::kSpreadIterableFixed); in CheckSpreadAndPushToStack()
2926 __ movp(rbx, rax); in CheckSpreadAndPushToStack()
2927 __ Pop(rax); // nargs in CheckSpreadAndPushToStack()
2928 __ SmiToInteger32(rax, rax); in CheckSpreadAndPushToStack()
2929 __ Pop(rdx); // new target in CheckSpreadAndPushToStack()
2930 __ Pop(rdi); // target in CheckSpreadAndPushToStack()
2935 __ SmiToInteger32(r9, FieldOperand(rbx, FixedArray::kLengthOffset)); in CheckSpreadAndPushToStack()
2937 __ bind(&push_args); in CheckSpreadAndPushToStack()
2939 __ leap(rax, Operand(rax, r9, times_1, -1)); in CheckSpreadAndPushToStack()
2947 __ LoadRoot(kScratchRegister, Heap::kRealStackLimitRootIndex); in CheckSpreadAndPushToStack()
2948 __ movp(rcx, rsp); in CheckSpreadAndPushToStack()
2951 __ subp(rcx, kScratchRegister); in CheckSpreadAndPushToStack()
2952 __ sarp(rcx, Immediate(kPointerSizeLog2)); in CheckSpreadAndPushToStack()
2954 __ cmpp(rcx, r9); in CheckSpreadAndPushToStack()
2955 __ j(greater, &done, Label::kNear); // Signed comparison. in CheckSpreadAndPushToStack()
2956 __ TailCallRuntime(Runtime::kThrowStackOverflow); in CheckSpreadAndPushToStack()
2957 __ bind(&done); in CheckSpreadAndPushToStack()
2963 __ PopReturnAddressTo(r8); in CheckSpreadAndPushToStack()
2964 __ Pop(rcx); in CheckSpreadAndPushToStack()
2966 __ Set(rcx, 0); in CheckSpreadAndPushToStack()
2968 __ bind(&loop); in CheckSpreadAndPushToStack()
2969 __ cmpl(rcx, r9); in CheckSpreadAndPushToStack()
2970 __ j(equal, &done, Label::kNear); in CheckSpreadAndPushToStack()
2971 __ movp(kScratchRegister, FieldOperand(rbx, rcx, times_pointer_size, in CheckSpreadAndPushToStack()
2973 __ CompareRoot(kScratchRegister, Heap::kTheHoleValueRootIndex); in CheckSpreadAndPushToStack()
2974 __ j(not_equal, &push, Label::kNear); in CheckSpreadAndPushToStack()
2975 __ LoadRoot(kScratchRegister, Heap::kUndefinedValueRootIndex); in CheckSpreadAndPushToStack()
2976 __ bind(&push); in CheckSpreadAndPushToStack()
2977 __ Push(kScratchRegister); in CheckSpreadAndPushToStack()
2978 __ incl(rcx); in CheckSpreadAndPushToStack()
2979 __ jmp(&loop); in CheckSpreadAndPushToStack()
2980 __ bind(&done); in CheckSpreadAndPushToStack()
2981 __ PushReturnAddressFrom(r8); in CheckSpreadAndPushToStack()
2993 __ LoadRoot(rdx, Heap::kUndefinedValueRootIndex); in Generate_CallWithSpread()
2995 __ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny, in Generate_CallWithSpread()
3007 __ AssertFunction(rdi); in Generate_ConstructFunction()
3011 __ LoadRoot(rbx, Heap::kUndefinedValueRootIndex); in Generate_ConstructFunction()
3015 __ movp(rcx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_ConstructFunction()
3016 __ movp(rcx, FieldOperand(rcx, SharedFunctionInfo::kConstructStubOffset)); in Generate_ConstructFunction()
3017 __ leap(rcx, FieldOperand(rcx, Code::kHeaderSize)); in Generate_ConstructFunction()
3018 __ jmp(rcx); in Generate_ConstructFunction()
3028 __ AssertBoundFunction(rdi); in Generate_ConstructBoundFunction()
3036 __ cmpp(rdi, rdx); in Generate_ConstructBoundFunction()
3037 __ j(not_equal, &done, Label::kNear); in Generate_ConstructBoundFunction()
3038 __ movp(rdx, in Generate_ConstructBoundFunction()
3040 __ bind(&done); in Generate_ConstructBoundFunction()
3044 __ movp(rdi, FieldOperand(rdi, JSBoundFunction::kBoundTargetFunctionOffset)); in Generate_ConstructBoundFunction()
3045 __ Load(rcx, ExternalReference(Builtins::kConstruct, masm->isolate())); in Generate_ConstructBoundFunction()
3046 __ leap(rcx, FieldOperand(rcx, Code::kHeaderSize)); in Generate_ConstructBoundFunction()
3047 __ jmp(rcx); in Generate_ConstructBoundFunction()
3060 __ PopReturnAddressTo(kScratchRegister); in Generate_ConstructProxy()
3061 __ Push(rdi); in Generate_ConstructProxy()
3062 __ Push(rdx); in Generate_ConstructProxy()
3063 __ PushReturnAddressFrom(kScratchRegister); in Generate_ConstructProxy()
3065 __ addp(rax, Immediate(3)); in Generate_ConstructProxy()
3066 __ JumpToExternalReference( in Generate_ConstructProxy()
3082 __ JumpIfSmi(rdi, &non_constructor, Label::kNear); in Generate_Construct()
3085 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx); in Generate_Construct()
3086 __ j(equal, masm->isolate()->builtins()->ConstructFunction(), in Generate_Construct()
3090 __ testb(FieldOperand(rcx, Map::kBitFieldOffset), in Generate_Construct()
3092 __ j(zero, &non_constructor, Label::kNear); in Generate_Construct()
3096 __ CmpInstanceType(rcx, JS_BOUND_FUNCTION_TYPE); in Generate_Construct()
3097 __ j(equal, masm->isolate()->builtins()->ConstructBoundFunction(), in Generate_Construct()
3101 __ CmpInstanceType(rcx, JS_PROXY_TYPE); in Generate_Construct()
3102 __ j(equal, masm->isolate()->builtins()->ConstructProxy(), in Generate_Construct()
3108 __ movp(args.GetReceiverOperand(), rdi); in Generate_Construct()
3110 __ LoadNativeContextSlot(Context::CALL_AS_CONSTRUCTOR_DELEGATE_INDEX, rdi); in Generate_Construct()
3111 __ Jump(masm->isolate()->builtins()->CallFunction(), in Generate_Construct()
3117 __ bind(&non_constructor); in Generate_Construct()
3118 __ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(), in Generate_Construct()
3132 __ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); in Generate_ConstructWithSpread()
3145 __ movp(signature, FieldOperand(function_template_info, in CompatibleReceiverCheck()
3147 __ CompareRoot(signature, Heap::kUndefinedValueRootIndex); in CompatibleReceiverCheck()
3149 __ j(equal, &receiver_check_passed, Label::kNear); in CompatibleReceiverCheck()
3152 __ movp(map, FieldOperand(receiver, HeapObject::kMapOffset)); in CompatibleReceiverCheck()
3154 __ bind(&prototype_loop_start); in CompatibleReceiverCheck()
3157 __ GetMapConstructor(constructor, map, kScratchRegister); in CompatibleReceiverCheck()
3158 __ CmpInstanceType(kScratchRegister, JS_FUNCTION_TYPE); in CompatibleReceiverCheck()
3160 __ j(not_equal, &next_prototype, Label::kNear); in CompatibleReceiverCheck()
3164 __ movp(type, in CompatibleReceiverCheck()
3166 __ movp(type, FieldOperand(type, SharedFunctionInfo::kFunctionDataOffset)); in CompatibleReceiverCheck()
3170 __ bind(&function_template_loop); in CompatibleReceiverCheck()
3173 __ cmpp(signature, type); in CompatibleReceiverCheck()
3174 __ j(equal, &receiver_check_passed, Label::kNear); in CompatibleReceiverCheck()
3178 __ JumpIfSmi(type, &next_prototype, Label::kNear); in CompatibleReceiverCheck()
3179 __ CmpObjectType(type, FUNCTION_TEMPLATE_INFO_TYPE, kScratchRegister); in CompatibleReceiverCheck()
3180 __ j(not_equal, &next_prototype, Label::kNear); in CompatibleReceiverCheck()
3183 __ movp(type, in CompatibleReceiverCheck()
3185 __ jmp(&function_template_loop, Label::kNear); in CompatibleReceiverCheck()
3188 __ bind(&next_prototype); in CompatibleReceiverCheck()
3189 __ testq(FieldOperand(map, Map::kBitField3Offset), in CompatibleReceiverCheck()
3191 __ j(zero, receiver_check_failed); in CompatibleReceiverCheck()
3192 __ movp(receiver, FieldOperand(map, Map::kPrototypeOffset)); in CompatibleReceiverCheck()
3193 __ movp(map, FieldOperand(receiver, HeapObject::kMapOffset)); in CompatibleReceiverCheck()
3195 __ jmp(&prototype_loop_start, Label::kNear); in CompatibleReceiverCheck()
3197 __ bind(&receiver_check_passed); in CompatibleReceiverCheck()
3215 __ movp(rbx, FieldOperand(rdi, JSFunction::kSharedFunctionInfoOffset)); in Generate_HandleFastApiCall()
3216 __ movp(rbx, FieldOperand(rbx, SharedFunctionInfo::kFunctionDataOffset)); in Generate_HandleFastApiCall()
3220 __ movp(rcx, args.GetReceiverOperand()); in Generate_HandleFastApiCall()
3225 __ movp(rdx, FieldOperand(rbx, FunctionTemplateInfo::kCallCodeOffset)); in Generate_HandleFastApiCall()
3226 __ movp(rdx, FieldOperand(rdx, CallHandlerInfo::kFastHandlerOffset)); in Generate_HandleFastApiCall()
3227 __ addp(rdx, Immediate(Code::kHeaderSize - kHeapObjectTag)); in Generate_HandleFastApiCall()
3228 __ jmp(rdx); in Generate_HandleFastApiCall()
3232 __ bind(&receiver_check_failed); in Generate_HandleFastApiCall()
3233 __ PopReturnAddressTo(rbx); in Generate_HandleFastApiCall()
3234 __ leap(rax, Operand(rax, times_pointer_size, 1 * kPointerSize)); in Generate_HandleFastApiCall()
3235 __ addp(rsp, rax); in Generate_HandleFastApiCall()
3236 __ PushReturnAddressFrom(rbx); in Generate_HandleFastApiCall()
3239 __ TailCallRuntime(Runtime::kThrowIllegalInvocation); in Generate_HandleFastApiCall()
3247 __ movp(rax, Operand(rbp, StandardFrameConstants::kCallerFPOffset)); in Generate_OnStackReplacementHelper()
3248 __ movp(rax, Operand(rax, JavaScriptFrameConstants::kFunctionOffset)); in Generate_OnStackReplacementHelper()
3250 __ movp(rax, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_OnStackReplacementHelper()
3256 __ Push(rax); in Generate_OnStackReplacementHelper()
3257 __ CallRuntime(Runtime::kCompileForOnStackReplacement); in Generate_OnStackReplacementHelper()
3262 __ cmpp(rax, Immediate(0)); in Generate_OnStackReplacementHelper()
3263 __ j(not_equal, &skip, Label::kNear); in Generate_OnStackReplacementHelper()
3264 __ ret(0); in Generate_OnStackReplacementHelper()
3266 __ bind(&skip); in Generate_OnStackReplacementHelper()
3271 __ leave(); in Generate_OnStackReplacementHelper()
3275 __ movp(rbx, Operand(rax, Code::kDeoptimizationDataOffset - kHeapObjectTag)); in Generate_OnStackReplacementHelper()
3278 __ SmiToInteger32( in Generate_OnStackReplacementHelper()
3284 __ leap(rax, Operand(rax, rbx, times_1, Code::kHeaderSize - kHeapObjectTag)); in Generate_OnStackReplacementHelper()
3287 __ movq(StackOperandForReturnAddress(0), rax); in Generate_OnStackReplacementHelper()
3290 __ ret(0); in Generate_OnStackReplacementHelper()
3301 #undef __