• Home
  • Raw
  • Download

Lines Matching refs:__

40 #define __ ACCESS_MASM(masm)  macro
63 __ pop(scratch); // Save return address. in Generate_Adaptor()
64 __ push(edi); in Generate_Adaptor()
65 __ push(scratch); // Restore return address. in Generate_Adaptor()
72 __ add(eax, Immediate(num_extra_args + 1)); in Generate_Adaptor()
73 __ JumpToExternalReference(ExternalReference(id, masm->isolate())); in Generate_Adaptor()
93 __ SmiTag(eax); in Generate_JSConstructStubHelper()
94 __ push(eax); in Generate_JSConstructStubHelper()
97 __ push(edi); in Generate_JSConstructStubHelper()
107 __ cmp(Operand::StaticVariable(debug_step_in_fp), Immediate(0)); in Generate_JSConstructStubHelper()
108 __ j(not_equal, &rt_call); in Generate_JSConstructStubHelper()
114 __ mov(eax, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_JSConstructStubHelper()
116 __ JumpIfSmi(eax, &rt_call); in Generate_JSConstructStubHelper()
119 __ CmpObjectType(eax, MAP_TYPE, ebx); in Generate_JSConstructStubHelper()
120 __ j(not_equal, &rt_call); in Generate_JSConstructStubHelper()
127 __ CmpInstanceType(eax, JS_FUNCTION_TYPE); in Generate_JSConstructStubHelper()
128 __ j(equal, &rt_call); in Generate_JSConstructStubHelper()
133 __ mov(ecx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset)); in Generate_JSConstructStubHelper()
134 __ dec_b(FieldOperand(ecx, in Generate_JSConstructStubHelper()
136 __ j(not_zero, &allocate); in Generate_JSConstructStubHelper()
138 __ push(eax); in Generate_JSConstructStubHelper()
139 __ push(edi); in Generate_JSConstructStubHelper()
141 __ push(edi); // constructor in Generate_JSConstructStubHelper()
143 __ CallRuntime(Runtime::kFinalizeInstanceSize, 1); in Generate_JSConstructStubHelper()
145 __ pop(edi); in Generate_JSConstructStubHelper()
146 __ pop(eax); in Generate_JSConstructStubHelper()
148 __ bind(&allocate); in Generate_JSConstructStubHelper()
154 __ movzx_b(edi, FieldOperand(eax, Map::kInstanceSizeOffset)); in Generate_JSConstructStubHelper()
155 __ shl(edi, kPointerSizeLog2); in Generate_JSConstructStubHelper()
156 __ AllocateInNewSpace( in Generate_JSConstructStubHelper()
162 __ mov(Operand(ebx, JSObject::kMapOffset), eax); in Generate_JSConstructStubHelper()
164 __ mov(ecx, factory->empty_fixed_array()); in Generate_JSConstructStubHelper()
165 __ mov(Operand(ebx, JSObject::kPropertiesOffset), ecx); in Generate_JSConstructStubHelper()
166 __ mov(Operand(ebx, JSObject::kElementsOffset), ecx); in Generate_JSConstructStubHelper()
171 __ lea(ecx, Operand(ebx, JSObject::kHeaderSize)); in Generate_JSConstructStubHelper()
172 __ mov(edx, factory->undefined_value()); in Generate_JSConstructStubHelper()
174 __ movzx_b(esi, in Generate_JSConstructStubHelper()
176 __ lea(esi, in Generate_JSConstructStubHelper()
180 __ cmp(esi, edi); in Generate_JSConstructStubHelper()
181 __ Assert(less_equal, in Generate_JSConstructStubHelper()
184 __ InitializeFieldsWithFiller(ecx, esi, edx); in Generate_JSConstructStubHelper()
185 __ mov(edx, factory->one_pointer_filler_map()); in Generate_JSConstructStubHelper()
187 __ InitializeFieldsWithFiller(ecx, edi, edx); in Generate_JSConstructStubHelper()
196 __ or_(ebx, Immediate(kHeapObjectTag)); in Generate_JSConstructStubHelper()
204 __ movzx_b(edx, FieldOperand(eax, Map::kUnusedPropertyFieldsOffset)); in Generate_JSConstructStubHelper()
205 __ movzx_b(ecx, in Generate_JSConstructStubHelper()
207 __ add(edx, ecx); in Generate_JSConstructStubHelper()
209 __ movzx_b(ecx, FieldOperand(eax, Map::kInObjectPropertiesOffset)); in Generate_JSConstructStubHelper()
210 __ sub(edx, ecx); in Generate_JSConstructStubHelper()
212 __ j(zero, &allocated); in Generate_JSConstructStubHelper()
213 __ Assert(positive, "Property allocation count failed."); in Generate_JSConstructStubHelper()
220 __ AllocateInNewSpace(FixedArray::kHeaderSize, in Generate_JSConstructStubHelper()
234 __ mov(eax, factory->fixed_array_map()); in Generate_JSConstructStubHelper()
235 __ mov(Operand(edi, FixedArray::kMapOffset), eax); // setup the map in Generate_JSConstructStubHelper()
236 __ SmiTag(edx); in Generate_JSConstructStubHelper()
237 __ mov(Operand(edi, FixedArray::kLengthOffset), edx); // and length in Generate_JSConstructStubHelper()
244 __ mov(edx, factory->undefined_value()); in Generate_JSConstructStubHelper()
245 __ lea(eax, Operand(edi, FixedArray::kHeaderSize)); in Generate_JSConstructStubHelper()
246 __ jmp(&entry); in Generate_JSConstructStubHelper()
247 __ bind(&loop); in Generate_JSConstructStubHelper()
248 __ mov(Operand(eax, 0), edx); in Generate_JSConstructStubHelper()
249 __ add(eax, Immediate(kPointerSize)); in Generate_JSConstructStubHelper()
250 __ bind(&entry); in Generate_JSConstructStubHelper()
251 __ cmp(eax, ecx); in Generate_JSConstructStubHelper()
252 __ j(below, &loop); in Generate_JSConstructStubHelper()
259 __ or_(edi, Immediate(kHeapObjectTag)); // add the heap tag in Generate_JSConstructStubHelper()
260 __ mov(FieldOperand(ebx, JSObject::kPropertiesOffset), edi); in Generate_JSConstructStubHelper()
265 __ jmp(&allocated); in Generate_JSConstructStubHelper()
271 __ bind(&undo_allocation); in Generate_JSConstructStubHelper()
272 __ UndoAllocationInNewSpace(ebx); in Generate_JSConstructStubHelper()
276 __ bind(&rt_call); in Generate_JSConstructStubHelper()
278 __ mov(edi, Operand(esp, 0)); in Generate_JSConstructStubHelper()
280 __ push(edi); in Generate_JSConstructStubHelper()
281 __ CallRuntime(Runtime::kNewObject, 1); in Generate_JSConstructStubHelper()
282 __ mov(ebx, eax); // store result in ebx in Generate_JSConstructStubHelper()
286 __ bind(&allocated); in Generate_JSConstructStubHelper()
288 __ pop(edi); in Generate_JSConstructStubHelper()
291 __ mov(eax, Operand(esp, 0)); in Generate_JSConstructStubHelper()
292 __ SmiUntag(eax); in Generate_JSConstructStubHelper()
297 __ push(ebx); in Generate_JSConstructStubHelper()
298 __ push(ebx); in Generate_JSConstructStubHelper()
301 __ lea(ebx, Operand(ebp, StandardFrameConstants::kCallerSPOffset)); in Generate_JSConstructStubHelper()
305 __ mov(ecx, eax); in Generate_JSConstructStubHelper()
306 __ jmp(&entry); in Generate_JSConstructStubHelper()
307 __ bind(&loop); in Generate_JSConstructStubHelper()
308 __ push(Operand(ebx, ecx, times_4, 0)); in Generate_JSConstructStubHelper()
309 __ bind(&entry); in Generate_JSConstructStubHelper()
310 __ dec(ecx); in Generate_JSConstructStubHelper()
311 __ j(greater_equal, &loop); in Generate_JSConstructStubHelper()
315 __ mov(esi, FieldOperand(edi, JSFunction::kContextOffset)); in Generate_JSConstructStubHelper()
319 __ InvokeCode(code, expected, expected, RelocInfo::CODE_TARGET, in Generate_JSConstructStubHelper()
323 __ InvokeFunction(edi, actual, CALL_FUNCTION, in Generate_JSConstructStubHelper()
333 __ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset)); in Generate_JSConstructStubHelper()
341 __ JumpIfSmi(eax, &use_receiver); in Generate_JSConstructStubHelper()
345 __ CmpObjectType(eax, FIRST_SPEC_OBJECT_TYPE, ecx); in Generate_JSConstructStubHelper()
346 __ j(above_equal, &exit); in Generate_JSConstructStubHelper()
350 __ bind(&use_receiver); in Generate_JSConstructStubHelper()
351 __ mov(eax, Operand(esp, 0)); in Generate_JSConstructStubHelper()
354 __ bind(&exit); in Generate_JSConstructStubHelper()
355 __ mov(ebx, Operand(esp, kPointerSize)); // Get arguments count. in Generate_JSConstructStubHelper()
362 __ pop(ecx); in Generate_JSConstructStubHelper()
363 __ lea(esp, Operand(esp, ebx, times_2, 1 * kPointerSize)); // 1 ~ receiver in Generate_JSConstructStubHelper()
364 __ push(ecx); in Generate_JSConstructStubHelper()
365 __ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1); in Generate_JSConstructStubHelper()
366 __ ret(0); in Generate_JSConstructStubHelper()
388 __ Set(esi, Immediate(0)); in Generate_JSEntryTrampolineHelper()
394 __ mov(ebx, Operand(ebp, 0)); in Generate_JSEntryTrampolineHelper()
397 __ mov(ecx, Operand(ebx, EntryFrameConstants::kFunctionArgOffset)); in Generate_JSEntryTrampolineHelper()
398 __ mov(esi, FieldOperand(ecx, JSFunction::kContextOffset)); in Generate_JSEntryTrampolineHelper()
401 __ push(ecx); in Generate_JSEntryTrampolineHelper()
402 __ push(Operand(ebx, EntryFrameConstants::kReceiverArgOffset)); in Generate_JSEntryTrampolineHelper()
405 __ mov(eax, Operand(ebx, EntryFrameConstants::kArgcOffset)); in Generate_JSEntryTrampolineHelper()
406 __ mov(ebx, Operand(ebx, EntryFrameConstants::kArgvOffset)); in Generate_JSEntryTrampolineHelper()
410 __ Set(ecx, Immediate(0)); in Generate_JSEntryTrampolineHelper()
411 __ jmp(&entry); in Generate_JSEntryTrampolineHelper()
412 __ bind(&loop); in Generate_JSEntryTrampolineHelper()
413 __ mov(edx, Operand(ebx, ecx, times_4, 0)); // push parameter from argv in Generate_JSEntryTrampolineHelper()
414 __ push(Operand(edx, 0)); // dereference handle in Generate_JSEntryTrampolineHelper()
415 __ inc(ecx); in Generate_JSEntryTrampolineHelper()
416 __ bind(&entry); in Generate_JSEntryTrampolineHelper()
417 __ cmp(ecx, eax); in Generate_JSEntryTrampolineHelper()
418 __ j(not_equal, &loop); in Generate_JSEntryTrampolineHelper()
422 __ mov(edi, Operand(esp, eax, times_4, kPointerSize)); in Generate_JSEntryTrampolineHelper()
427 __ CallStub(&stub); in Generate_JSEntryTrampolineHelper()
430 __ InvokeFunction(edi, actual, CALL_FUNCTION, in Generate_JSEntryTrampolineHelper()
438 __ ret(kPointerSize); // Remove receiver. in Generate_JSEntryTrampolineHelper()
457 __ push(edi); in Generate_LazyCompile()
459 __ push(ecx); in Generate_LazyCompile()
461 __ push(edi); // Function is also the parameter to the runtime call. in Generate_LazyCompile()
462 __ CallRuntime(Runtime::kLazyCompile, 1); in Generate_LazyCompile()
465 __ pop(ecx); in Generate_LazyCompile()
467 __ pop(edi); in Generate_LazyCompile()
473 __ lea(eax, FieldOperand(eax, Code::kHeaderSize)); in Generate_LazyCompile()
474 __ jmp(eax); in Generate_LazyCompile()
483 __ push(edi); in Generate_LazyRecompile()
485 __ push(ecx); in Generate_LazyRecompile()
487 __ push(edi); // Function is also the parameter to the runtime call. in Generate_LazyRecompile()
488 __ CallRuntime(Runtime::kLazyRecompile, 1); in Generate_LazyRecompile()
491 __ pop(ecx); in Generate_LazyRecompile()
493 __ pop(edi); in Generate_LazyRecompile()
499 __ lea(eax, FieldOperand(eax, Code::kHeaderSize)); in Generate_LazyRecompile()
500 __ jmp(eax); in Generate_LazyRecompile()
510 __ push(Immediate(Smi::FromInt(static_cast<int>(type)))); in Generate_NotifyDeoptimizedHelper()
511 __ CallRuntime(Runtime::kNotifyDeoptimized, 1); in Generate_NotifyDeoptimizedHelper()
517 __ mov(ecx, Operand(esp, 1 * kPointerSize)); in Generate_NotifyDeoptimizedHelper()
518 __ SmiUntag(ecx); in Generate_NotifyDeoptimizedHelper()
522 __ cmp(ecx, FullCodeGenerator::NO_REGISTERS); in Generate_NotifyDeoptimizedHelper()
523 __ j(not_equal, &not_no_registers, Label::kNear); in Generate_NotifyDeoptimizedHelper()
524 __ ret(1 * kPointerSize); // Remove state. in Generate_NotifyDeoptimizedHelper()
526 __ bind(&not_no_registers); in Generate_NotifyDeoptimizedHelper()
527 __ mov(eax, Operand(esp, 2 * kPointerSize)); in Generate_NotifyDeoptimizedHelper()
528 __ cmp(ecx, FullCodeGenerator::TOS_REG); in Generate_NotifyDeoptimizedHelper()
529 __ j(not_equal, &not_tos_eax, Label::kNear); in Generate_NotifyDeoptimizedHelper()
530 __ ret(2 * kPointerSize); // Remove state, eax. in Generate_NotifyDeoptimizedHelper()
532 __ bind(&not_tos_eax); in Generate_NotifyDeoptimizedHelper()
533 __ Abort("no cases left"); in Generate_NotifyDeoptimizedHelper()
554 __ pushad(); in Generate_NotifyOSR()
557 __ CallRuntime(Runtime::kNotifyOSR, 0); in Generate_NotifyOSR()
559 __ popad(); in Generate_NotifyOSR()
560 __ ret(0); in Generate_NotifyOSR()
569 __ test(eax, eax); in Generate_FunctionCall()
570 __ j(not_zero, &done); in Generate_FunctionCall()
571 __ pop(ebx); in Generate_FunctionCall()
572 __ push(Immediate(factory->undefined_value())); in Generate_FunctionCall()
573 __ push(ebx); in Generate_FunctionCall()
574 __ inc(eax); in Generate_FunctionCall()
575 __ bind(&done); in Generate_FunctionCall()
582 __ mov(edi, Operand(esp, eax, times_4, 1 * kPointerSize)); in Generate_FunctionCall()
583 __ JumpIfSmi(edi, &non_function); in Generate_FunctionCall()
584 __ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx); in Generate_FunctionCall()
585 __ j(not_equal, &slow); in Generate_FunctionCall()
590 __ Set(edx, Immediate(0)); // indicate regular JS_FUNCTION in Generate_FunctionCall()
593 __ mov(esi, FieldOperand(edi, JSFunction::kContextOffset)); in Generate_FunctionCall()
596 __ mov(ebx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset)); in Generate_FunctionCall()
597 __ test_b(FieldOperand(ebx, SharedFunctionInfo::kStrictModeByteOffset), in Generate_FunctionCall()
599 __ j(not_equal, &shift_arguments); in Generate_FunctionCall()
602 __ test_b(FieldOperand(ebx, SharedFunctionInfo::kNativeByteOffset), in Generate_FunctionCall()
604 __ j(not_equal, &shift_arguments); in Generate_FunctionCall()
607 __ mov(ebx, Operand(esp, eax, times_4, 0)); // First argument. in Generate_FunctionCall()
611 __ JumpIfSmi(ebx, &convert_to_object); in Generate_FunctionCall()
612 __ cmp(ebx, factory->null_value()); in Generate_FunctionCall()
613 __ j(equal, &use_global_receiver); in Generate_FunctionCall()
614 __ cmp(ebx, factory->undefined_value()); in Generate_FunctionCall()
615 __ j(equal, &use_global_receiver); in Generate_FunctionCall()
617 __ CmpObjectType(ebx, FIRST_SPEC_OBJECT_TYPE, ecx); in Generate_FunctionCall()
618 __ j(above_equal, &shift_arguments); in Generate_FunctionCall()
620 __ bind(&convert_to_object); in Generate_FunctionCall()
624 __ SmiTag(eax); in Generate_FunctionCall()
625 __ push(eax); in Generate_FunctionCall()
627 __ push(ebx); in Generate_FunctionCall()
628 __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); in Generate_FunctionCall()
629 __ mov(ebx, eax); in Generate_FunctionCall()
630 __ Set(edx, Immediate(0)); // restore in Generate_FunctionCall()
632 __ pop(eax); in Generate_FunctionCall()
633 __ SmiUntag(eax); in Generate_FunctionCall()
637 __ mov(edi, Operand(esp, eax, times_4, 1 * kPointerSize)); in Generate_FunctionCall()
638 __ jmp(&patch_receiver); in Generate_FunctionCall()
642 __ bind(&use_global_receiver); in Generate_FunctionCall()
645 __ mov(ebx, FieldOperand(esi, kGlobalIndex)); in Generate_FunctionCall()
646 __ mov(ebx, FieldOperand(ebx, GlobalObject::kGlobalContextOffset)); in Generate_FunctionCall()
647 __ mov(ebx, FieldOperand(ebx, kGlobalIndex)); in Generate_FunctionCall()
648 __ mov(ebx, FieldOperand(ebx, GlobalObject::kGlobalReceiverOffset)); in Generate_FunctionCall()
650 __ bind(&patch_receiver); in Generate_FunctionCall()
651 __ mov(Operand(esp, eax, times_4, 0), ebx); in Generate_FunctionCall()
653 __ jmp(&shift_arguments); in Generate_FunctionCall()
657 __ bind(&slow); in Generate_FunctionCall()
658 __ Set(edx, Immediate(1)); // indicate function proxy in Generate_FunctionCall()
659 __ CmpInstanceType(ecx, JS_FUNCTION_PROXY_TYPE); in Generate_FunctionCall()
660 __ j(equal, &shift_arguments); in Generate_FunctionCall()
661 __ bind(&non_function); in Generate_FunctionCall()
662 __ Set(edx, Immediate(2)); // indicate non-function in Generate_FunctionCall()
668 __ mov(Operand(esp, eax, times_4, 0), edi); in Generate_FunctionCall()
673 __ bind(&shift_arguments); in Generate_FunctionCall()
675 __ mov(ecx, eax); in Generate_FunctionCall()
676 __ bind(&loop); in Generate_FunctionCall()
677 __ mov(ebx, Operand(esp, ecx, times_4, 0)); in Generate_FunctionCall()
678 __ mov(Operand(esp, ecx, times_4, kPointerSize), ebx); in Generate_FunctionCall()
679 __ dec(ecx); in Generate_FunctionCall()
680 __ j(not_sign, &loop); // While non-negative (to copy return address). in Generate_FunctionCall()
681 __ pop(ebx); // Discard copy of return address. in Generate_FunctionCall()
682 __ dec(eax); // One fewer argument (first argument is new receiver). in Generate_FunctionCall()
688 __ test(edx, edx); in Generate_FunctionCall()
689 __ j(zero, &function); in Generate_FunctionCall()
690 __ Set(ebx, Immediate(0)); in Generate_FunctionCall()
691 __ cmp(edx, Immediate(1)); in Generate_FunctionCall()
692 __ j(not_equal, &non_proxy); in Generate_FunctionCall()
694 __ pop(edx); // return address in Generate_FunctionCall()
695 __ push(edi); // re-add proxy object as additional argument in Generate_FunctionCall()
696 __ push(edx); in Generate_FunctionCall()
697 __ inc(eax); in Generate_FunctionCall()
698 __ SetCallKind(ecx, CALL_AS_FUNCTION); in Generate_FunctionCall()
699 __ GetBuiltinEntry(edx, Builtins::CALL_FUNCTION_PROXY); in Generate_FunctionCall()
700 __ jmp(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(), in Generate_FunctionCall()
703 __ bind(&non_proxy); in Generate_FunctionCall()
704 __ SetCallKind(ecx, CALL_AS_METHOD); in Generate_FunctionCall()
705 __ GetBuiltinEntry(edx, Builtins::CALL_NON_FUNCTION); in Generate_FunctionCall()
706 __ jmp(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(), in Generate_FunctionCall()
708 __ bind(&function); in Generate_FunctionCall()
714 __ mov(edx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset)); in Generate_FunctionCall()
715 __ mov(ebx, in Generate_FunctionCall()
717 __ mov(edx, FieldOperand(edi, JSFunction::kCodeEntryOffset)); in Generate_FunctionCall()
718 __ SmiUntag(ebx); in Generate_FunctionCall()
719 __ SetCallKind(ecx, CALL_AS_METHOD); in Generate_FunctionCall()
720 __ cmp(eax, ebx); in Generate_FunctionCall()
721 __ j(not_equal, in Generate_FunctionCall()
725 __ InvokeCode(edx, expected, expected, JUMP_FUNCTION, NullCallWrapper(), in Generate_FunctionCall()
737 __ push(Operand(ebp, kFunctionOffset)); // push this in Generate_FunctionApply()
738 __ push(Operand(ebp, kArgumentsOffset)); // push arguments in Generate_FunctionApply()
739 __ InvokeBuiltin(Builtins::APPLY_PREPARE, CALL_FUNCTION); in Generate_FunctionApply()
747 __ mov(edi, Operand::StaticVariable(real_stack_limit)); in Generate_FunctionApply()
750 __ mov(ecx, esp); in Generate_FunctionApply()
751 __ sub(ecx, edi); in Generate_FunctionApply()
754 __ mov(edx, eax); in Generate_FunctionApply()
755 __ shl(edx, kPointerSizeLog2 - kSmiTagSize); in Generate_FunctionApply()
757 __ cmp(ecx, edx); in Generate_FunctionApply()
758 __ j(greater, &okay); // Signed comparison. in Generate_FunctionApply()
761 __ push(Operand(ebp, 4 * kPointerSize)); // push this in Generate_FunctionApply()
762 __ push(eax); in Generate_FunctionApply()
763 __ InvokeBuiltin(Builtins::APPLY_OVERFLOW, CALL_FUNCTION); in Generate_FunctionApply()
764 __ bind(&okay); in Generate_FunctionApply()
771 __ push(eax); // limit in Generate_FunctionApply()
772 __ push(Immediate(0)); // index in Generate_FunctionApply()
775 __ mov(ebx, Operand(ebp, kReceiverOffset)); in Generate_FunctionApply()
779 __ mov(edi, Operand(ebp, kFunctionOffset)); in Generate_FunctionApply()
780 __ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx); in Generate_FunctionApply()
781 __ j(not_equal, &push_receiver); in Generate_FunctionApply()
784 __ mov(esi, FieldOperand(edi, JSFunction::kContextOffset)); in Generate_FunctionApply()
789 __ mov(ecx, FieldOperand(edi, JSFunction::kSharedFunctionInfoOffset)); in Generate_FunctionApply()
790 __ test_b(FieldOperand(ecx, SharedFunctionInfo::kStrictModeByteOffset), in Generate_FunctionApply()
792 __ j(not_equal, &push_receiver); in Generate_FunctionApply()
797 __ test_b(FieldOperand(ecx, SharedFunctionInfo::kNativeByteOffset), in Generate_FunctionApply()
799 __ j(not_equal, &push_receiver); in Generate_FunctionApply()
804 __ JumpIfSmi(ebx, &call_to_object); in Generate_FunctionApply()
805 __ cmp(ebx, factory->null_value()); in Generate_FunctionApply()
806 __ j(equal, &use_global_receiver); in Generate_FunctionApply()
807 __ cmp(ebx, factory->undefined_value()); in Generate_FunctionApply()
808 __ j(equal, &use_global_receiver); in Generate_FunctionApply()
810 __ CmpObjectType(ebx, FIRST_SPEC_OBJECT_TYPE, ecx); in Generate_FunctionApply()
811 __ j(above_equal, &push_receiver); in Generate_FunctionApply()
813 __ bind(&call_to_object); in Generate_FunctionApply()
814 __ push(ebx); in Generate_FunctionApply()
815 __ InvokeBuiltin(Builtins::TO_OBJECT, CALL_FUNCTION); in Generate_FunctionApply()
816 __ mov(ebx, eax); in Generate_FunctionApply()
817 __ jmp(&push_receiver); in Generate_FunctionApply()
820 __ bind(&use_global_receiver); in Generate_FunctionApply()
823 __ mov(ebx, FieldOperand(esi, kGlobalOffset)); in Generate_FunctionApply()
824 __ mov(ebx, FieldOperand(ebx, GlobalObject::kGlobalContextOffset)); in Generate_FunctionApply()
825 __ mov(ebx, FieldOperand(ebx, kGlobalOffset)); in Generate_FunctionApply()
826 __ mov(ebx, FieldOperand(ebx, GlobalObject::kGlobalReceiverOffset)); in Generate_FunctionApply()
829 __ bind(&push_receiver); in Generate_FunctionApply()
830 __ push(ebx); in Generate_FunctionApply()
834 __ mov(eax, Operand(ebp, kIndexOffset)); in Generate_FunctionApply()
835 __ jmp(&entry); in Generate_FunctionApply()
836 __ bind(&loop); in Generate_FunctionApply()
837 __ mov(edx, Operand(ebp, kArgumentsOffset)); // load arguments in Generate_FunctionApply()
841 __ call(ic, RelocInfo::CODE_TARGET); in Generate_FunctionApply()
848 __ push(eax); in Generate_FunctionApply()
851 __ mov(eax, Operand(ebp, kIndexOffset)); in Generate_FunctionApply()
852 __ add(eax, Immediate(1 << kSmiTagSize)); in Generate_FunctionApply()
853 __ mov(Operand(ebp, kIndexOffset), eax); in Generate_FunctionApply()
855 __ bind(&entry); in Generate_FunctionApply()
856 __ cmp(eax, Operand(ebp, kLimitOffset)); in Generate_FunctionApply()
857 __ j(not_equal, &loop); in Generate_FunctionApply()
862 __ SmiUntag(eax); in Generate_FunctionApply()
863 __ mov(edi, Operand(ebp, kFunctionOffset)); in Generate_FunctionApply()
864 __ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx); in Generate_FunctionApply()
865 __ j(not_equal, &call_proxy); in Generate_FunctionApply()
866 __ InvokeFunction(edi, actual, CALL_FUNCTION, in Generate_FunctionApply()
870 __ ret(3 * kPointerSize); // remove this, receiver, and arguments in Generate_FunctionApply()
873 __ bind(&call_proxy); in Generate_FunctionApply()
874 __ push(edi); // add function proxy as last argument in Generate_FunctionApply()
875 __ inc(eax); in Generate_FunctionApply()
876 __ Set(ebx, Immediate(0)); in Generate_FunctionApply()
877 __ SetCallKind(ecx, CALL_AS_METHOD); in Generate_FunctionApply()
878 __ GetBuiltinEntry(edx, Builtins::CALL_FUNCTION_PROXY); in Generate_FunctionApply()
879 __ call(masm->isolate()->builtins()->ArgumentsAdaptorTrampoline(), in Generate_FunctionApply()
884 __ ret(3 * kPointerSize); // remove this, receiver, and arguments in Generate_FunctionApply()
902 __ LoadInitialArrayMap(array_function, scratch2, scratch1); in AllocateEmptyJSArray()
910 __ AllocateInNewSpace(size, in AllocateEmptyJSArray()
922 __ mov(FieldOperand(result, JSObject::kMapOffset), scratch1); in AllocateEmptyJSArray()
924 __ mov(FieldOperand(result, JSArray::kPropertiesOffset), in AllocateEmptyJSArray()
927 __ mov(FieldOperand(result, JSArray::kLengthOffset), Immediate(0)); in AllocateEmptyJSArray()
932 __ mov(FieldOperand(result, JSArray::kElementsOffset), in AllocateEmptyJSArray()
941 __ lea(scratch1, Operand(result, JSArray::kSize)); in AllocateEmptyJSArray()
942 __ mov(FieldOperand(result, JSArray::kElementsOffset), scratch1); in AllocateEmptyJSArray()
949 __ mov(FieldOperand(scratch1, FixedArray::kMapOffset), in AllocateEmptyJSArray()
951 __ mov(FieldOperand(scratch1, FixedArray::kLengthOffset), in AllocateEmptyJSArray()
960 __ mov(scratch3, factory->the_hole_value()); in AllocateEmptyJSArray()
962 __ mov(FieldOperand(scratch1, in AllocateEmptyJSArray()
968 __ mov(scratch2, Immediate(initial_capacity)); in AllocateEmptyJSArray()
969 __ jmp(&entry); in AllocateEmptyJSArray()
970 __ bind(&loop); in AllocateEmptyJSArray()
971 __ mov(FieldOperand(scratch1, in AllocateEmptyJSArray()
976 __ bind(&entry); in AllocateEmptyJSArray()
977 __ dec(scratch2); in AllocateEmptyJSArray()
978 __ j(not_sign, &loop); in AllocateEmptyJSArray()
1005 __ LoadInitialArrayMap(array_function, scratch, elements_array); in AllocateJSArray()
1010 __ AllocateInNewSpace(JSArray::kSize + FixedArray::kHeaderSize, in AllocateJSArray()
1025 __ mov(FieldOperand(result, JSObject::kMapOffset), elements_array); in AllocateJSArray()
1027 __ mov(elements_array, factory->empty_fixed_array()); in AllocateJSArray()
1028 __ mov(FieldOperand(result, JSArray::kPropertiesOffset), elements_array); in AllocateJSArray()
1030 __ mov(FieldOperand(result, JSArray::kLengthOffset), array_size); in AllocateJSArray()
1037 __ lea(elements_array, Operand(result, JSArray::kSize)); in AllocateJSArray()
1038 __ mov(FieldOperand(result, JSArray::kElementsOffset), elements_array); in AllocateJSArray()
1045 __ mov(FieldOperand(elements_array, FixedArray::kMapOffset), in AllocateJSArray()
1049 __ mov(FieldOperand(elements_array, FixedArray::kLengthOffset), array_size); in AllocateJSArray()
1055 __ SmiUntag(array_size); in AllocateJSArray()
1056 __ lea(edi, Operand(elements_array, in AllocateJSArray()
1058 __ mov(eax, factory->the_hole_value()); in AllocateJSArray()
1059 __ cld(); in AllocateJSArray()
1064 __ cmp(ecx, kRepStosThreshold); in AllocateJSArray()
1065 __ j(below, &loop); // Note: ecx > 0. in AllocateJSArray()
1066 __ rep_stos(); in AllocateJSArray()
1067 __ jmp(&done); in AllocateJSArray()
1068 __ bind(&loop); in AllocateJSArray()
1069 __ stos(); in AllocateJSArray()
1070 __ bind(&entry); in AllocateJSArray()
1071 __ cmp(edi, elements_array_end); in AllocateJSArray()
1072 __ j(below, &loop); in AllocateJSArray()
1073 __ bind(&done); in AllocateJSArray()
1103 __ push(edi); in ArrayNativeCode()
1106 __ push(eax); in ArrayNativeCode()
1109 __ test(eax, eax); in ArrayNativeCode()
1110 __ j(not_zero, &argc_one_or_more); in ArrayNativeCode()
1112 __ bind(&empty_array); in ArrayNativeCode()
1121 __ IncrementCounter(masm->isolate()->counters()->array_function_native(), 1); in ArrayNativeCode()
1122 __ pop(ebx); in ArrayNativeCode()
1124 __ pop(edi); in ArrayNativeCode()
1126 __ ret(kPointerSize); in ArrayNativeCode()
1130 __ bind(&argc_one_or_more); in ArrayNativeCode()
1131 __ cmp(eax, 1); in ArrayNativeCode()
1132 __ j(not_equal, &argc_two_or_more); in ArrayNativeCode()
1134 __ mov(ecx, Operand(esp, (push_count + 1) * kPointerSize)); in ArrayNativeCode()
1135 __ test(ecx, ecx); in ArrayNativeCode()
1136 __ j(not_zero, &not_empty_array); in ArrayNativeCode()
1145 __ mov(eax, Operand(esp, i * kPointerSize)); in ArrayNativeCode()
1146 __ mov(Operand(esp, (i + 1) * kPointerSize), eax); in ArrayNativeCode()
1148 __ Drop(2); // Drop two stack slots. in ArrayNativeCode()
1149 __ push(Immediate(0)); // Treat this as a call with argc of zero. in ArrayNativeCode()
1150 __ jmp(&empty_array); in ArrayNativeCode()
1152 __ bind(&not_empty_array); in ArrayNativeCode()
1153 __ test(ecx, Immediate(kIntptrSignBit | kSmiTagMask)); in ArrayNativeCode()
1154 __ j(not_zero, &prepare_generic_code_call); in ArrayNativeCode()
1159 __ cmp(ecx, JSObject::kInitialMaxFastElementArray << kSmiTagSize); in ArrayNativeCode()
1160 __ j(greater_equal, &prepare_generic_code_call); in ArrayNativeCode()
1178 __ IncrementCounter(counters->array_function_native(), 1); in ArrayNativeCode()
1179 __ mov(eax, ebx); in ArrayNativeCode()
1180 __ pop(ebx); in ArrayNativeCode()
1182 __ pop(edi); in ArrayNativeCode()
1184 __ ret(2 * kPointerSize); in ArrayNativeCode()
1187 __ bind(&argc_two_or_more); in ArrayNativeCode()
1189 __ SmiTag(eax); // Convet argc to a smi. in ArrayNativeCode()
1205 __ IncrementCounter(counters->array_function_native(), 1); in ArrayNativeCode()
1206 __ push(ebx); in ArrayNativeCode()
1207 __ mov(ebx, Operand(esp, kPointerSize)); in ArrayNativeCode()
1218 __ lea(edi, Operand(esp, last_arg_offset)); in ArrayNativeCode()
1222 __ lea(edx, Operand(ecx, FixedArray::kHeaderSize - kHeapObjectTag)); in ArrayNativeCode()
1235 __ mov(ecx, ebx); in ArrayNativeCode()
1236 __ jmp(&entry); in ArrayNativeCode()
1237 __ bind(&loop); in ArrayNativeCode()
1238 __ mov(eax, Operand(edi, ecx, times_pointer_size, 0)); in ArrayNativeCode()
1240 __ JumpIfNotSmi(eax, &has_non_smi_element); in ArrayNativeCode()
1242 __ mov(Operand(edx, 0), eax); in ArrayNativeCode()
1243 __ add(edx, Immediate(kPointerSize)); in ArrayNativeCode()
1244 __ bind(&entry); in ArrayNativeCode()
1245 __ dec(ecx); in ArrayNativeCode()
1246 __ j(greater_equal, &loop); in ArrayNativeCode()
1255 __ bind(&finish); in ArrayNativeCode()
1256 __ mov(ecx, Operand(esp, last_arg_offset - kPointerSize)); in ArrayNativeCode()
1257 __ pop(eax); in ArrayNativeCode()
1258 __ pop(ebx); in ArrayNativeCode()
1259 __ lea(esp, Operand(esp, ebx, times_pointer_size, in ArrayNativeCode()
1261 __ jmp(ecx); in ArrayNativeCode()
1263 __ bind(&has_non_smi_element); in ArrayNativeCode()
1265 __ CheckMap(eax, in ArrayNativeCode()
1269 __ bind(&cant_transition_map); in ArrayNativeCode()
1271 __ pop(eax); in ArrayNativeCode()
1272 __ UndoAllocationInNewSpace(eax); in ArrayNativeCode()
1273 __ jmp(&prepare_generic_code_call); in ArrayNativeCode()
1275 __ bind(&not_double); in ArrayNativeCode()
1277 __ mov(ebx, Operand(esp, 0)); in ArrayNativeCode()
1278 __ mov(edi, FieldOperand(ebx, HeapObject::kMapOffset)); in ArrayNativeCode()
1279 __ LoadTransitionedArrayMapConditional( in ArrayNativeCode()
1285 __ mov(FieldOperand(ebx, HeapObject::kMapOffset), edi); in ArrayNativeCode()
1286 __ RecordWriteField(ebx, HeapObject::kMapOffset, edi, eax, in ArrayNativeCode()
1290 __ lea(edi, Operand(esp, last_arg_offset)); in ArrayNativeCode()
1294 __ bind(&loop2); in ArrayNativeCode()
1295 __ mov(eax, Operand(edi, ecx, times_pointer_size, 0)); in ArrayNativeCode()
1296 __ mov(Operand(edx, 0), eax); in ArrayNativeCode()
1297 __ add(edx, Immediate(kPointerSize)); in ArrayNativeCode()
1298 __ dec(ecx); in ArrayNativeCode()
1299 __ j(greater_equal, &loop2); in ArrayNativeCode()
1300 __ jmp(&finish); in ArrayNativeCode()
1303 __ bind(&prepare_generic_code_call); in ArrayNativeCode()
1304 __ pop(eax); in ArrayNativeCode()
1306 __ pop(edi); in ArrayNativeCode()
1308 __ jmp(call_generic_code); in ArrayNativeCode()
1321 __ LoadGlobalFunction(Context::INTERNAL_ARRAY_FUNCTION_INDEX, edi); in Generate_InternalArrayCode()
1325 __ mov(ebx, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_InternalArrayCode()
1327 __ test(ebx, Immediate(kSmiTagMask)); in Generate_InternalArrayCode()
1328 __ Assert(not_zero, "Unexpected initial map for InternalArray function"); in Generate_InternalArrayCode()
1329 __ CmpObjectType(ebx, MAP_TYPE, ecx); in Generate_InternalArrayCode()
1330 __ Assert(equal, "Unexpected initial map for InternalArray function"); in Generate_InternalArrayCode()
1339 __ bind(&generic_array_code); in Generate_InternalArrayCode()
1342 __ jmp(array_code, RelocInfo::CODE_TARGET); in Generate_InternalArrayCode()
1355 __ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, edi); in Generate_ArrayCode()
1359 __ mov(ebx, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_ArrayCode()
1361 __ test(ebx, Immediate(kSmiTagMask)); in Generate_ArrayCode()
1362 __ Assert(not_zero, "Unexpected initial map for Array function"); in Generate_ArrayCode()
1363 __ CmpObjectType(ebx, MAP_TYPE, ecx); in Generate_ArrayCode()
1364 __ Assert(equal, "Unexpected initial map for Array function"); in Generate_ArrayCode()
1372 __ bind(&generic_array_code); in Generate_ArrayCode()
1375 __ jmp(array_code, RelocInfo::CODE_TARGET); in Generate_ArrayCode()
1393 __ mov(ebx, FieldOperand(edi, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_ArrayConstructCode()
1395 __ test(ebx, Immediate(kSmiTagMask)); in Generate_ArrayConstructCode()
1396 __ Assert(not_zero, "Unexpected initial map for Array function"); in Generate_ArrayConstructCode()
1397 __ CmpObjectType(ebx, MAP_TYPE, ecx); in Generate_ArrayConstructCode()
1398 __ Assert(equal, "Unexpected initial map for Array function"); in Generate_ArrayConstructCode()
1406 __ bind(&generic_constructor); in Generate_ArrayConstructCode()
1409 __ jmp(generic_construct_stub, RelocInfo::CODE_TARGET); in Generate_ArrayConstructCode()
1422 __ IncrementCounter(counters->string_ctor_calls(), 1); in Generate_StringConstructCode()
1425 __ LoadGlobalFunction(Context::STRING_FUNCTION_INDEX, ecx); in Generate_StringConstructCode()
1426 __ cmp(edi, ecx); in Generate_StringConstructCode()
1427 __ Assert(equal, "Unexpected String function"); in Generate_StringConstructCode()
1433 __ test(eax, eax); in Generate_StringConstructCode()
1434 __ j(zero, &no_arguments); in Generate_StringConstructCode()
1435 __ mov(ebx, Operand(esp, eax, times_pointer_size, 0)); in Generate_StringConstructCode()
1436 __ pop(ecx); in Generate_StringConstructCode()
1437 __ lea(esp, Operand(esp, eax, times_pointer_size, kPointerSize)); in Generate_StringConstructCode()
1438 __ push(ecx); in Generate_StringConstructCode()
1439 __ mov(eax, ebx); in Generate_StringConstructCode()
1451 __ IncrementCounter(counters->string_ctor_cached_number(), 1); in Generate_StringConstructCode()
1452 __ bind(&argument_is_string); in Generate_StringConstructCode()
1461 __ AllocateInNewSpace(JSValue::kSize, in Generate_StringConstructCode()
1469 __ LoadGlobalFunctionInitialMap(edi, ecx); in Generate_StringConstructCode()
1471 __ cmpb(FieldOperand(ecx, Map::kInstanceSizeOffset), in Generate_StringConstructCode()
1473 __ Assert(equal, "Unexpected string wrapper instance size"); in Generate_StringConstructCode()
1474 __ cmpb(FieldOperand(ecx, Map::kUnusedPropertyFieldsOffset), 0); in Generate_StringConstructCode()
1475 __ Assert(equal, "Unexpected unused properties of string wrapper"); in Generate_StringConstructCode()
1477 __ mov(FieldOperand(eax, HeapObject::kMapOffset), ecx); in Generate_StringConstructCode()
1481 __ Set(ecx, Immediate(factory->empty_fixed_array())); in Generate_StringConstructCode()
1482 __ mov(FieldOperand(eax, JSObject::kPropertiesOffset), ecx); in Generate_StringConstructCode()
1483 __ mov(FieldOperand(eax, JSObject::kElementsOffset), ecx); in Generate_StringConstructCode()
1486 __ mov(FieldOperand(eax, JSValue::kValueOffset), ebx); in Generate_StringConstructCode()
1492 __ ret(0); in Generate_StringConstructCode()
1497 __ bind(&not_cached); in Generate_StringConstructCode()
1499 __ JumpIfSmi(eax, &convert_argument); in Generate_StringConstructCode()
1501 __ j(NegateCondition(is_string), &convert_argument); in Generate_StringConstructCode()
1502 __ mov(ebx, eax); in Generate_StringConstructCode()
1503 __ IncrementCounter(counters->string_ctor_string_value(), 1); in Generate_StringConstructCode()
1504 __ jmp(&argument_is_string); in Generate_StringConstructCode()
1507 __ bind(&convert_argument); in Generate_StringConstructCode()
1508 __ IncrementCounter(counters->string_ctor_conversions(), 1); in Generate_StringConstructCode()
1511 __ push(edi); // Preserve the function. in Generate_StringConstructCode()
1512 __ push(eax); in Generate_StringConstructCode()
1513 __ InvokeBuiltin(Builtins::TO_STRING, CALL_FUNCTION); in Generate_StringConstructCode()
1514 __ pop(edi); in Generate_StringConstructCode()
1516 __ mov(ebx, eax); in Generate_StringConstructCode()
1517 __ jmp(&argument_is_string); in Generate_StringConstructCode()
1521 __ bind(&no_arguments); in Generate_StringConstructCode()
1522 __ Set(ebx, Immediate(factory->empty_string())); in Generate_StringConstructCode()
1523 __ pop(ecx); in Generate_StringConstructCode()
1524 __ lea(esp, Operand(esp, kPointerSize)); in Generate_StringConstructCode()
1525 __ push(ecx); in Generate_StringConstructCode()
1526 __ jmp(&argument_is_string); in Generate_StringConstructCode()
1530 __ bind(&gc_required); in Generate_StringConstructCode()
1531 __ IncrementCounter(counters->string_ctor_gc_required(), 1); in Generate_StringConstructCode()
1534 __ push(ebx); in Generate_StringConstructCode()
1535 __ CallRuntime(Runtime::kNewStringWrapper, 1); in Generate_StringConstructCode()
1537 __ ret(0); in Generate_StringConstructCode()
1542 __ push(ebp); in EnterArgumentsAdaptorFrame()
1543 __ mov(ebp, esp); in EnterArgumentsAdaptorFrame()
1546 __ push(Immediate(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); in EnterArgumentsAdaptorFrame()
1549 __ push(edi); in EnterArgumentsAdaptorFrame()
1555 __ lea(edi, Operand(eax, eax, times_1, kSmiTag)); in EnterArgumentsAdaptorFrame()
1556 __ push(edi); in EnterArgumentsAdaptorFrame()
1562 __ mov(ebx, Operand(ebp, ArgumentsAdaptorFrameConstants::kLengthOffset)); in LeaveArgumentsAdaptorFrame()
1565 __ leave(); in LeaveArgumentsAdaptorFrame()
1569 __ pop(ecx); in LeaveArgumentsAdaptorFrame()
1570 __ lea(esp, Operand(esp, ebx, times_2, 1 * kPointerSize)); // 1 ~ receiver in LeaveArgumentsAdaptorFrame()
1571 __ push(ecx); in LeaveArgumentsAdaptorFrame()
1584 __ IncrementCounter(masm->isolate()->counters()->arguments_adaptors(), 1); in Generate_ArgumentsAdaptorTrampoline()
1587 __ cmp(eax, ebx); in Generate_ArgumentsAdaptorTrampoline()
1588 __ j(less, &too_few); in Generate_ArgumentsAdaptorTrampoline()
1589 __ cmp(ebx, SharedFunctionInfo::kDontAdaptArgumentsSentinel); in Generate_ArgumentsAdaptorTrampoline()
1590 __ j(equal, &dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
1593 __ bind(&enough); in Generate_ArgumentsAdaptorTrampoline()
1598 __ lea(eax, Operand(ebp, eax, times_4, offset)); in Generate_ArgumentsAdaptorTrampoline()
1599 __ mov(edi, -1); // account for receiver in Generate_ArgumentsAdaptorTrampoline()
1602 __ bind(&copy); in Generate_ArgumentsAdaptorTrampoline()
1603 __ inc(edi); in Generate_ArgumentsAdaptorTrampoline()
1604 __ push(Operand(eax, 0)); in Generate_ArgumentsAdaptorTrampoline()
1605 __ sub(eax, Immediate(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
1606 __ cmp(edi, ebx); in Generate_ArgumentsAdaptorTrampoline()
1607 __ j(less, &copy); in Generate_ArgumentsAdaptorTrampoline()
1608 __ jmp(&invoke); in Generate_ArgumentsAdaptorTrampoline()
1612 __ bind(&too_few); in Generate_ArgumentsAdaptorTrampoline()
1617 __ lea(edi, Operand(ebp, eax, times_4, offset)); in Generate_ArgumentsAdaptorTrampoline()
1619 __ sub(ebx, eax); in Generate_ArgumentsAdaptorTrampoline()
1621 __ neg(eax); in Generate_ArgumentsAdaptorTrampoline()
1622 __ sub(eax, Immediate(1)); in Generate_ArgumentsAdaptorTrampoline()
1625 __ bind(&copy); in Generate_ArgumentsAdaptorTrampoline()
1626 __ inc(eax); in Generate_ArgumentsAdaptorTrampoline()
1627 __ push(Operand(edi, 0)); in Generate_ArgumentsAdaptorTrampoline()
1628 __ sub(edi, Immediate(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
1629 __ test(eax, eax); in Generate_ArgumentsAdaptorTrampoline()
1630 __ j(not_zero, &copy); in Generate_ArgumentsAdaptorTrampoline()
1634 __ bind(&fill); in Generate_ArgumentsAdaptorTrampoline()
1635 __ inc(eax); in Generate_ArgumentsAdaptorTrampoline()
1636 __ push(Immediate(masm->isolate()->factory()->undefined_value())); in Generate_ArgumentsAdaptorTrampoline()
1637 __ cmp(eax, ebx); in Generate_ArgumentsAdaptorTrampoline()
1638 __ j(less, &fill); in Generate_ArgumentsAdaptorTrampoline()
1642 __ bind(&invoke); in Generate_ArgumentsAdaptorTrampoline()
1644 __ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_ArgumentsAdaptorTrampoline()
1645 __ call(edx); in Generate_ArgumentsAdaptorTrampoline()
1652 __ ret(0); in Generate_ArgumentsAdaptorTrampoline()
1657 __ bind(&dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
1658 __ jmp(edx); in Generate_ArgumentsAdaptorTrampoline()
1665 __ Abort("Unreachable code: Cannot optimize without SSE2 support."); in Generate_OnStackReplacement()
1672 __ mov(ebx, Operand(esp, 0)); // return address in Generate_OnStackReplacement()
1674 __ cmpb(Operand(ebx, 0), Assembler::kTestAlByte); in Generate_OnStackReplacement()
1675 __ Assert(equal, "test eax instruction not found after loop stack check"); in Generate_OnStackReplacement()
1677 __ movzx_b(ebx, Operand(ebx, 1)); // depth in Generate_OnStackReplacement()
1683 __ mov(eax, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_OnStackReplacement()
1684 __ mov(ecx, FieldOperand(eax, JSFunction::kSharedFunctionInfoOffset)); in Generate_OnStackReplacement()
1685 __ mov(ecx, FieldOperand(ecx, SharedFunctionInfo::kCodeOffset)); in Generate_OnStackReplacement()
1686 __ cmpb(ebx, FieldOperand(ecx, Code::kAllowOSRAtLoopNestingLevelOffset)); in Generate_OnStackReplacement()
1687 __ j(greater, &stack_check); in Generate_OnStackReplacement()
1693 __ push(eax); in Generate_OnStackReplacement()
1694 __ CallRuntime(Runtime::kCompileForOnStackReplacement, 1); in Generate_OnStackReplacement()
1700 __ cmp(eax, Immediate(Smi::FromInt(-1))); in Generate_OnStackReplacement()
1701 __ j(not_equal, &skip, Label::kNear); in Generate_OnStackReplacement()
1702 __ ret(0); in Generate_OnStackReplacement()
1707 __ bind(&stack_check); in Generate_OnStackReplacement()
1711 __ cmp(esp, Operand::StaticVariable(stack_limit)); in Generate_OnStackReplacement()
1712 __ j(above_equal, &ok, Label::kNear); in Generate_OnStackReplacement()
1714 __ TailCallStub(&stub); in Generate_OnStackReplacement()
1716 __ Abort("Unreachable code: returned from tail call."); in Generate_OnStackReplacement()
1718 __ bind(&ok); in Generate_OnStackReplacement()
1719 __ ret(0); in Generate_OnStackReplacement()
1721 __ bind(&skip); in Generate_OnStackReplacement()
1723 __ SmiUntag(eax); in Generate_OnStackReplacement()
1724 __ push(eax); in Generate_OnStackReplacement()
1733 #undef __