Lines Matching full:__
16 #define __ ACCESS_MASM(masm) macro
29 __ AssertFunction(r1); in Generate_Adaptor()
35 __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); in Generate_Adaptor()
40 __ add(r0, r0, Operand(num_extra_args + 1)); in Generate_Adaptor()
43 __ SmiTag(r0); in Generate_Adaptor()
44 __ Push(r0, r1, r3); in Generate_Adaptor()
45 __ SmiUntag(r0); in Generate_Adaptor()
47 __ JumpToExternalReference(ExternalReference(address, masm->isolate()), in Generate_Adaptor()
55 __ LoadNativeContextSlot(Context::INTERNAL_ARRAY_FUNCTION_INDEX, result); in GenerateLoadInternalArrayFunction()
61 __ LoadNativeContextSlot(Context::ARRAY_FUNCTION_INDEX, result); in GenerateLoadArrayFunction()
77 __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_InternalArrayCode()
78 __ SmiTst(r2); in Generate_InternalArrayCode()
79 __ Assert(ne, kUnexpectedInitialMapForInternalArrayFunction); in Generate_InternalArrayCode()
80 __ CompareObjectType(r2, r3, r4, MAP_TYPE); in Generate_InternalArrayCode()
81 __ Assert(eq, kUnexpectedInitialMapForInternalArrayFunction); in Generate_InternalArrayCode()
88 __ TailCallStub(&stub); in Generate_InternalArrayCode()
104 __ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset)); in Generate_ArrayCode()
105 __ SmiTst(r2); in Generate_ArrayCode()
106 __ Assert(ne, kUnexpectedInitialMapForArrayFunction); in Generate_ArrayCode()
107 __ CompareObjectType(r2, r3, r4, MAP_TYPE); in Generate_ArrayCode()
108 __ Assert(eq, kUnexpectedInitialMapForArrayFunction); in Generate_ArrayCode()
111 __ mov(r3, r1); in Generate_ArrayCode()
114 __ LoadRoot(r2, Heap::kUndefinedValueRootIndex); in Generate_ArrayCode()
116 __ TailCallStub(&stub); in Generate_ArrayCode()
138 __ LoadRoot(r5, root_index); in Generate_MathMaxMin()
139 __ vldr(d1, FieldMemOperand(r5, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
142 __ mov(r4, r0); in Generate_MathMaxMin()
143 __ bind(&loop); in Generate_MathMaxMin()
146 __ sub(r4, r4, Operand(1), SetCC); in Generate_MathMaxMin()
147 __ b(lt, &done_loop); in Generate_MathMaxMin()
150 __ ldr(r2, MemOperand(sp, r4, LSL, kPointerSizeLog2)); in Generate_MathMaxMin()
155 __ bind(&convert); in Generate_MathMaxMin()
156 __ JumpIfSmi(r2, &convert_smi); in Generate_MathMaxMin()
157 __ ldr(r3, FieldMemOperand(r2, HeapObject::kMapOffset)); in Generate_MathMaxMin()
158 __ JumpIfRoot(r3, Heap::kHeapNumberMapRootIndex, &convert_number); in Generate_MathMaxMin()
163 __ SmiTag(r0); in Generate_MathMaxMin()
164 __ SmiTag(r4); in Generate_MathMaxMin()
165 __ EnterBuiltinFrame(cp, r1, r0); in Generate_MathMaxMin()
166 __ Push(r4, r5); in Generate_MathMaxMin()
167 __ mov(r0, r2); in Generate_MathMaxMin()
168 __ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET); in Generate_MathMaxMin()
169 __ mov(r2, r0); in Generate_MathMaxMin()
170 __ Pop(r4, r5); in Generate_MathMaxMin()
171 __ LeaveBuiltinFrame(cp, r1, r0); in Generate_MathMaxMin()
172 __ SmiUntag(r4); in Generate_MathMaxMin()
173 __ SmiUntag(r0); in Generate_MathMaxMin()
177 __ SmiToDouble(d1, r5); in Generate_MathMaxMin()
178 __ JumpIfSmi(r5, &done_restore); in Generate_MathMaxMin()
179 __ vldr(d1, FieldMemOperand(r5, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
180 __ bind(&done_restore); in Generate_MathMaxMin()
183 __ b(&convert); in Generate_MathMaxMin()
184 __ bind(&convert_number); in Generate_MathMaxMin()
185 __ vldr(d2, FieldMemOperand(r2, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
186 __ b(&done_convert); in Generate_MathMaxMin()
187 __ bind(&convert_smi); in Generate_MathMaxMin()
188 __ SmiToDouble(d2, r2); in Generate_MathMaxMin()
189 __ bind(&done_convert); in Generate_MathMaxMin()
194 __ VFPCompareAndSetFlags(d1, d2); in Generate_MathMaxMin()
195 __ b(cc_done, &loop); in Generate_MathMaxMin()
196 __ b(cc_swap, &compare_swap); in Generate_MathMaxMin()
197 __ b(vs, &compare_nan); in Generate_MathMaxMin()
200 __ VmovHigh(ip, reg); in Generate_MathMaxMin()
201 __ cmp(ip, Operand(0x80000000)); in Generate_MathMaxMin()
202 __ b(ne, &loop); in Generate_MathMaxMin()
205 __ bind(&compare_swap); in Generate_MathMaxMin()
206 __ vmov(d1, d2); in Generate_MathMaxMin()
207 __ mov(r5, r2); in Generate_MathMaxMin()
208 __ b(&loop); in Generate_MathMaxMin()
211 __ bind(&compare_nan); in Generate_MathMaxMin()
212 __ LoadRoot(r5, Heap::kNanValueRootIndex); in Generate_MathMaxMin()
213 __ vldr(d1, FieldMemOperand(r5, HeapNumber::kValueOffset)); in Generate_MathMaxMin()
214 __ b(&loop); in Generate_MathMaxMin()
217 __ bind(&done_loop); in Generate_MathMaxMin()
219 __ add(r0, r0, Operand(1)); in Generate_MathMaxMin()
220 __ Drop(r0); in Generate_MathMaxMin()
221 __ mov(r0, r5); in Generate_MathMaxMin()
222 __ Ret(); in Generate_MathMaxMin()
239 __ mov(r2, r0); // Store argc in r2. in Generate_NumberConstructor()
240 __ sub(r0, r0, Operand(1), SetCC); in Generate_NumberConstructor()
241 __ b(lo, &no_arguments); in Generate_NumberConstructor()
242 __ ldr(r0, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_NumberConstructor()
248 __ SmiTag(r2); in Generate_NumberConstructor()
249 __ EnterBuiltinFrame(cp, r1, r2); in Generate_NumberConstructor()
250 __ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET); in Generate_NumberConstructor()
251 __ LeaveBuiltinFrame(cp, r1, r2); in Generate_NumberConstructor()
252 __ SmiUntag(r2); in Generate_NumberConstructor()
257 __ Drop(r2); in Generate_NumberConstructor()
258 __ Ret(1); in Generate_NumberConstructor()
262 __ bind(&no_arguments); in Generate_NumberConstructor()
263 __ Move(r0, Smi::kZero); in Generate_NumberConstructor()
264 __ Ret(1); in Generate_NumberConstructor()
280 __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); in Generate_NumberConstructor_ConstructStub()
285 __ mov(r6, r0); // Store argc in r6. in Generate_NumberConstructor_ConstructStub()
286 __ sub(r0, r0, Operand(1), SetCC); in Generate_NumberConstructor_ConstructStub()
287 __ b(lo, &no_arguments); in Generate_NumberConstructor_ConstructStub()
288 __ ldr(r2, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_NumberConstructor_ConstructStub()
289 __ b(&done); in Generate_NumberConstructor_ConstructStub()
290 __ bind(&no_arguments); in Generate_NumberConstructor_ConstructStub()
291 __ Move(r2, Smi::kZero); in Generate_NumberConstructor_ConstructStub()
292 __ bind(&done); in Generate_NumberConstructor_ConstructStub()
298 __ JumpIfSmi(r2, &done_convert); in Generate_NumberConstructor_ConstructStub()
299 __ CompareObjectType(r2, r4, r4, HEAP_NUMBER_TYPE); in Generate_NumberConstructor_ConstructStub()
300 __ b(eq, &done_convert); in Generate_NumberConstructor_ConstructStub()
303 __ SmiTag(r6); in Generate_NumberConstructor_ConstructStub()
304 __ EnterBuiltinFrame(cp, r1, r6); in Generate_NumberConstructor_ConstructStub()
305 __ Push(r3); in Generate_NumberConstructor_ConstructStub()
306 __ Move(r0, r2); in Generate_NumberConstructor_ConstructStub()
307 __ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET); in Generate_NumberConstructor_ConstructStub()
308 __ Move(r2, r0); in Generate_NumberConstructor_ConstructStub()
309 __ Pop(r3); in Generate_NumberConstructor_ConstructStub()
310 __ LeaveBuiltinFrame(cp, r1, r6); in Generate_NumberConstructor_ConstructStub()
311 __ SmiUntag(r6); in Generate_NumberConstructor_ConstructStub()
313 __ bind(&done_convert); in Generate_NumberConstructor_ConstructStub()
318 __ cmp(r1, r3); in Generate_NumberConstructor_ConstructStub()
319 __ b(ne, &new_object); in Generate_NumberConstructor_ConstructStub()
322 __ AllocateJSValue(r0, r1, r2, r4, r5, &new_object); in Generate_NumberConstructor_ConstructStub()
323 __ b(&drop_frame_and_ret); in Generate_NumberConstructor_ConstructStub()
326 __ bind(&new_object); in Generate_NumberConstructor_ConstructStub()
330 __ SmiTag(r6); in Generate_NumberConstructor_ConstructStub()
331 __ EnterBuiltinFrame(cp, r1, r6); in Generate_NumberConstructor_ConstructStub()
332 __ Push(r2); // first argument in Generate_NumberConstructor_ConstructStub()
333 __ CallStub(&stub); in Generate_NumberConstructor_ConstructStub()
334 __ Pop(r2); in Generate_NumberConstructor_ConstructStub()
335 __ LeaveBuiltinFrame(cp, r1, r6); in Generate_NumberConstructor_ConstructStub()
336 __ SmiUntag(r6); in Generate_NumberConstructor_ConstructStub()
338 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset)); in Generate_NumberConstructor_ConstructStub()
340 __ bind(&drop_frame_and_ret); in Generate_NumberConstructor_ConstructStub()
342 __ Drop(r6); in Generate_NumberConstructor_ConstructStub()
343 __ Ret(1); in Generate_NumberConstructor_ConstructStub()
361 __ mov(r2, r0); // Store argc in r2. in Generate_StringConstructor()
362 __ sub(r0, r0, Operand(1), SetCC); in Generate_StringConstructor()
363 __ b(lo, &no_arguments); in Generate_StringConstructor()
364 __ ldr(r0, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_StringConstructor()
371 __ JumpIfSmi(r0, &to_string); in Generate_StringConstructor()
373 __ CompareObjectType(r0, r3, r3, FIRST_NONSTRING_TYPE); in Generate_StringConstructor()
374 __ b(hi, &to_string); in Generate_StringConstructor()
375 __ b(eq, &symbol_descriptive_string); in Generate_StringConstructor()
376 __ b(&drop_frame_and_ret); in Generate_StringConstructor()
380 __ bind(&no_arguments); in Generate_StringConstructor()
382 __ LoadRoot(r0, Heap::kempty_stringRootIndex); in Generate_StringConstructor()
383 __ Ret(1); in Generate_StringConstructor()
387 __ bind(&to_string); in Generate_StringConstructor()
390 __ SmiTag(r2); in Generate_StringConstructor()
391 __ EnterBuiltinFrame(cp, r1, r2); in Generate_StringConstructor()
392 __ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET); in Generate_StringConstructor()
393 __ LeaveBuiltinFrame(cp, r1, r2); in Generate_StringConstructor()
394 __ SmiUntag(r2); in Generate_StringConstructor()
396 __ b(&drop_frame_and_ret); in Generate_StringConstructor()
399 __ bind(&symbol_descriptive_string); in Generate_StringConstructor()
401 __ Drop(r2); in Generate_StringConstructor()
402 __ Drop(1); in Generate_StringConstructor()
403 __ Push(r0); in Generate_StringConstructor()
404 __ TailCallRuntime(Runtime::kSymbolDescriptiveString); in Generate_StringConstructor()
407 __ bind(&drop_frame_and_ret); in Generate_StringConstructor()
409 __ Drop(r2); in Generate_StringConstructor()
410 __ Ret(1); in Generate_StringConstructor()
427 __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); in Generate_StringConstructor_ConstructStub()
432 __ mov(r6, r0); // Store argc in r6. in Generate_StringConstructor_ConstructStub()
433 __ sub(r0, r0, Operand(1), SetCC); in Generate_StringConstructor_ConstructStub()
434 __ b(lo, &no_arguments); in Generate_StringConstructor_ConstructStub()
435 __ ldr(r2, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_StringConstructor_ConstructStub()
436 __ b(&done); in Generate_StringConstructor_ConstructStub()
437 __ bind(&no_arguments); in Generate_StringConstructor_ConstructStub()
438 __ LoadRoot(r2, Heap::kempty_stringRootIndex); in Generate_StringConstructor_ConstructStub()
439 __ bind(&done); in Generate_StringConstructor_ConstructStub()
445 __ JumpIfSmi(r2, &convert); in Generate_StringConstructor_ConstructStub()
446 __ CompareObjectType(r2, r4, r4, FIRST_NONSTRING_TYPE); in Generate_StringConstructor_ConstructStub()
447 __ b(lo, &done_convert); in Generate_StringConstructor_ConstructStub()
448 __ bind(&convert); in Generate_StringConstructor_ConstructStub()
451 __ SmiTag(r6); in Generate_StringConstructor_ConstructStub()
452 __ EnterBuiltinFrame(cp, r1, r6); in Generate_StringConstructor_ConstructStub()
453 __ Push(r3); in Generate_StringConstructor_ConstructStub()
454 __ Move(r0, r2); in Generate_StringConstructor_ConstructStub()
455 __ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET); in Generate_StringConstructor_ConstructStub()
456 __ Move(r2, r0); in Generate_StringConstructor_ConstructStub()
457 __ Pop(r3); in Generate_StringConstructor_ConstructStub()
458 __ LeaveBuiltinFrame(cp, r1, r6); in Generate_StringConstructor_ConstructStub()
459 __ SmiUntag(r6); in Generate_StringConstructor_ConstructStub()
461 __ bind(&done_convert); in Generate_StringConstructor_ConstructStub()
466 __ cmp(r1, r3); in Generate_StringConstructor_ConstructStub()
467 __ b(ne, &new_object); in Generate_StringConstructor_ConstructStub()
470 __ AllocateJSValue(r0, r1, r2, r4, r5, &new_object); in Generate_StringConstructor_ConstructStub()
471 __ b(&drop_frame_and_ret); in Generate_StringConstructor_ConstructStub()
474 __ bind(&new_object); in Generate_StringConstructor_ConstructStub()
478 __ SmiTag(r6); in Generate_StringConstructor_ConstructStub()
479 __ EnterBuiltinFrame(cp, r1, r6); in Generate_StringConstructor_ConstructStub()
480 __ Push(r2); // first argument in Generate_StringConstructor_ConstructStub()
481 __ CallStub(&stub); in Generate_StringConstructor_ConstructStub()
482 __ Pop(r2); in Generate_StringConstructor_ConstructStub()
483 __ LeaveBuiltinFrame(cp, r1, r6); in Generate_StringConstructor_ConstructStub()
484 __ SmiUntag(r6); in Generate_StringConstructor_ConstructStub()
486 __ str(r2, FieldMemOperand(r0, JSValue::kValueOffset)); in Generate_StringConstructor_ConstructStub()
488 __ bind(&drop_frame_and_ret); in Generate_StringConstructor_ConstructStub()
490 __ Drop(r6); in Generate_StringConstructor_ConstructStub()
491 __ Ret(1); in Generate_StringConstructor_ConstructStub()
496 __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in GenerateTailCallToSharedCode()
497 __ ldr(r2, FieldMemOperand(r2, SharedFunctionInfo::kCodeOffset)); in GenerateTailCallToSharedCode()
498 __ add(r2, r2, Operand(Code::kHeaderSize - kHeapObjectTag)); in GenerateTailCallToSharedCode()
499 __ Jump(r2); in GenerateTailCallToSharedCode()
512 __ SmiTag(r0); in GenerateTailCallToReturnedCode()
513 __ push(r0); in GenerateTailCallToReturnedCode()
515 __ push(r1); in GenerateTailCallToReturnedCode()
516 __ push(r3); in GenerateTailCallToReturnedCode()
518 __ Push(r1); in GenerateTailCallToReturnedCode()
520 __ CallRuntime(function_id, 1); in GenerateTailCallToReturnedCode()
521 __ mov(r2, r0); in GenerateTailCallToReturnedCode()
524 __ pop(r3); in GenerateTailCallToReturnedCode()
525 __ pop(r1); in GenerateTailCallToReturnedCode()
526 __ pop(r0); in GenerateTailCallToReturnedCode()
527 __ SmiUntag(r0, r0); in GenerateTailCallToReturnedCode()
529 __ add(r2, r2, Operand(Code::kHeaderSize - kHeapObjectTag)); in GenerateTailCallToReturnedCode()
530 __ Jump(r2); in GenerateTailCallToReturnedCode()
540 __ LoadRoot(ip, Heap::kStackLimitRootIndex); in Generate_InOptimizationQueue()
541 __ cmp(sp, Operand(ip)); in Generate_InOptimizationQueue()
542 __ b(hs, &ok); in Generate_InOptimizationQueue()
546 __ bind(&ok); in Generate_InOptimizationQueue()
571 __ SmiTag(r0); in Generate_JSConstructStubHelper()
572 __ Push(cp, r0); in Generate_JSConstructStubHelper()
576 __ Push(r1, r3); in Generate_JSConstructStubHelper()
578 __ CallStub(&stub); in Generate_JSConstructStubHelper()
579 __ mov(r4, r0); in Generate_JSConstructStubHelper()
580 __ Pop(r1, r3); in Generate_JSConstructStubHelper()
589 __ ldr(r0, MemOperand(sp)); in Generate_JSConstructStubHelper()
592 __ SmiUntag(r0); in Generate_JSConstructStubHelper()
598 __ push(r4); in Generate_JSConstructStubHelper()
599 __ push(r4); in Generate_JSConstructStubHelper()
601 __ PushRoot(Heap::kTheHoleValueRootIndex); in Generate_JSConstructStubHelper()
605 __ add(r2, fp, Operand(StandardFrameConstants::kCallerSPOffset)); in Generate_JSConstructStubHelper()
617 __ SmiTag(r4, r0); in Generate_JSConstructStubHelper()
618 __ b(&entry); in Generate_JSConstructStubHelper()
619 __ bind(&loop); in Generate_JSConstructStubHelper()
620 __ ldr(ip, MemOperand(r2, r4, LSL, kPointerSizeLog2 - 1)); in Generate_JSConstructStubHelper()
621 __ push(ip); in Generate_JSConstructStubHelper()
622 __ bind(&entry); in Generate_JSConstructStubHelper()
623 __ sub(r4, r4, Operand(2), SetCC); in Generate_JSConstructStubHelper()
624 __ b(ge, &loop); in Generate_JSConstructStubHelper()
631 __ InvokeFunction(r1, r3, actual, CALL_FUNCTION, in Generate_JSConstructStubHelper()
643 __ ldr(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset)); in Generate_JSConstructStubHelper()
655 __ JumpIfSmi(r0, &use_receiver); in Generate_JSConstructStubHelper()
659 __ CompareObjectType(r0, r1, r3, FIRST_JS_RECEIVER_TYPE); in Generate_JSConstructStubHelper()
660 __ b(ge, &exit); in Generate_JSConstructStubHelper()
664 __ bind(&use_receiver); in Generate_JSConstructStubHelper()
665 __ ldr(r0, MemOperand(sp)); in Generate_JSConstructStubHelper()
669 __ bind(&exit); in Generate_JSConstructStubHelper()
673 __ ldr(r1, MemOperand(sp, 1 * kPointerSize)); in Generate_JSConstructStubHelper()
675 __ ldr(r1, MemOperand(sp)); in Generate_JSConstructStubHelper()
686 __ JumpIfNotSmi(r0, &dont_throw); in Generate_JSConstructStubHelper()
689 __ CallRuntime(Runtime::kThrowDerivedConstructorReturnedNonObject); in Generate_JSConstructStubHelper()
691 __ bind(&dont_throw); in Generate_JSConstructStubHelper()
694 __ add(sp, sp, Operand(r1, LSL, kPointerSizeLog2 - 1)); in Generate_JSConstructStubHelper()
695 __ add(sp, sp, Operand(kPointerSize)); in Generate_JSConstructStubHelper()
697 __ IncrementCounter(isolate->counters()->constructed_objects(), 1, r1, r2); in Generate_JSConstructStubHelper()
699 __ Jump(lr); in Generate_JSConstructStubHelper()
729 __ AssertGeneratorObject(r1); in Generate_ResumeGeneratorTrampoline()
732 __ str(r0, FieldMemOperand(r1, JSGeneratorObject::kInputOrDebugPosOffset)); in Generate_ResumeGeneratorTrampoline()
733 __ RecordWriteField(r1, JSGeneratorObject::kInputOrDebugPosOffset, r0, r3, in Generate_ResumeGeneratorTrampoline()
737 __ str(r2, FieldMemOperand(r1, JSGeneratorObject::kResumeModeOffset)); in Generate_ResumeGeneratorTrampoline()
740 __ ldr(cp, FieldMemOperand(r1, JSGeneratorObject::kContextOffset)); in Generate_ResumeGeneratorTrampoline()
741 __ ldr(r4, FieldMemOperand(r1, JSGeneratorObject::kFunctionOffset)); in Generate_ResumeGeneratorTrampoline()
749 __ mov(ip, Operand(last_step_action)); in Generate_ResumeGeneratorTrampoline()
750 __ ldrsb(ip, MemOperand(ip)); in Generate_ResumeGeneratorTrampoline()
751 __ cmp(ip, Operand(StepIn)); in Generate_ResumeGeneratorTrampoline()
752 __ b(ge, &prepare_step_in_if_stepping); in Generate_ResumeGeneratorTrampoline()
757 __ mov(ip, Operand(debug_suspended_generator)); in Generate_ResumeGeneratorTrampoline()
758 __ ldr(ip, MemOperand(ip)); in Generate_ResumeGeneratorTrampoline()
759 __ cmp(ip, Operand(r1)); in Generate_ResumeGeneratorTrampoline()
760 __ b(eq, &prepare_step_in_suspended_generator); in Generate_ResumeGeneratorTrampoline()
761 __ bind(&stepping_prepared); in Generate_ResumeGeneratorTrampoline()
764 __ ldr(ip, FieldMemOperand(r1, JSGeneratorObject::kReceiverOffset)); in Generate_ResumeGeneratorTrampoline()
765 __ Push(ip); in Generate_ResumeGeneratorTrampoline()
780 __ ldr(r3, FieldMemOperand(r4, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
781 __ ldr(r3, in Generate_ResumeGeneratorTrampoline()
785 __ bind(&loop); in Generate_ResumeGeneratorTrampoline()
786 __ sub(r3, r3, Operand(Smi::FromInt(1)), SetCC); in Generate_ResumeGeneratorTrampoline()
787 __ b(mi, &done_loop); in Generate_ResumeGeneratorTrampoline()
788 __ PushRoot(Heap::kTheHoleValueRootIndex); in Generate_ResumeGeneratorTrampoline()
789 __ b(&loop); in Generate_ResumeGeneratorTrampoline()
790 __ bind(&done_loop); in Generate_ResumeGeneratorTrampoline()
795 __ ldr(r3, FieldMemOperand(r4, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
796 __ ldr(r3, FieldMemOperand(r3, SharedFunctionInfo::kFunctionDataOffset)); in Generate_ResumeGeneratorTrampoline()
797 __ CompareObjectType(r3, r3, r3, BYTECODE_ARRAY_TYPE); in Generate_ResumeGeneratorTrampoline()
798 __ b(ne, &old_generator); in Generate_ResumeGeneratorTrampoline()
802 __ ldr(r0, FieldMemOperand(r4, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
803 __ ldr(r0, FieldMemOperand( in Generate_ResumeGeneratorTrampoline()
805 __ SmiUntag(r0); in Generate_ResumeGeneratorTrampoline()
809 __ Move(r3, r1); in Generate_ResumeGeneratorTrampoline()
810 __ Move(r1, r4); in Generate_ResumeGeneratorTrampoline()
811 __ ldr(r5, FieldMemOperand(r1, JSFunction::kCodeEntryOffset)); in Generate_ResumeGeneratorTrampoline()
812 __ Jump(r5); in Generate_ResumeGeneratorTrampoline()
816 __ bind(&old_generator); in Generate_ResumeGeneratorTrampoline()
822 __ Push(lr, fp); in Generate_ResumeGeneratorTrampoline()
823 __ Move(fp, sp); in Generate_ResumeGeneratorTrampoline()
824 __ Push(cp, r4); in Generate_ResumeGeneratorTrampoline()
827 __ ldr(r0, FieldMemOperand(r1, JSGeneratorObject::kOperandStackOffset)); in Generate_ResumeGeneratorTrampoline()
828 __ ldr(r3, FieldMemOperand(r0, FixedArray::kLengthOffset)); in Generate_ResumeGeneratorTrampoline()
829 __ add(r0, r0, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); in Generate_ResumeGeneratorTrampoline()
830 __ add(r3, r0, Operand(r3, LSL, kPointerSizeLog2 - 1)); in Generate_ResumeGeneratorTrampoline()
833 __ bind(&loop); in Generate_ResumeGeneratorTrampoline()
834 __ cmp(r0, r3); in Generate_ResumeGeneratorTrampoline()
835 __ b(eq, &done_loop); in Generate_ResumeGeneratorTrampoline()
836 __ ldr(ip, MemOperand(r0, kPointerSize, PostIndex)); in Generate_ResumeGeneratorTrampoline()
837 __ Push(ip); in Generate_ResumeGeneratorTrampoline()
838 __ b(&loop); in Generate_ResumeGeneratorTrampoline()
839 __ bind(&done_loop); in Generate_ResumeGeneratorTrampoline()
843 __ LoadRoot(ip, Heap::kEmptyFixedArrayRootIndex); in Generate_ResumeGeneratorTrampoline()
844 __ str(ip, FieldMemOperand(r1, JSGeneratorObject::kOperandStackOffset)); in Generate_ResumeGeneratorTrampoline()
847 __ ldr(r3, FieldMemOperand(r4, JSFunction::kSharedFunctionInfoOffset)); in Generate_ResumeGeneratorTrampoline()
848 __ ldr(r3, FieldMemOperand(r3, SharedFunctionInfo::kCodeOffset)); in Generate_ResumeGeneratorTrampoline()
849 __ add(r3, r3, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_ResumeGeneratorTrampoline()
850 __ ldr(r2, FieldMemOperand(r1, JSGeneratorObject::kContinuationOffset)); in Generate_ResumeGeneratorTrampoline()
851 __ add(r3, r3, Operand(r2, ASR, 1)); in Generate_ResumeGeneratorTrampoline()
852 __ mov(r2, Operand(Smi::FromInt(JSGeneratorObject::kGeneratorExecuting))); in Generate_ResumeGeneratorTrampoline()
853 __ str(r2, FieldMemOperand(r1, JSGeneratorObject::kContinuationOffset)); in Generate_ResumeGeneratorTrampoline()
854 __ Move(r0, r1); // Continuation expects generator object in r0. in Generate_ResumeGeneratorTrampoline()
855 __ Jump(r3); in Generate_ResumeGeneratorTrampoline()
858 __ bind(&prepare_step_in_if_stepping); in Generate_ResumeGeneratorTrampoline()
861 __ Push(r1, r2, r4); in Generate_ResumeGeneratorTrampoline()
862 __ CallRuntime(Runtime::kDebugPrepareStepInIfStepping); in Generate_ResumeGeneratorTrampoline()
863 __ Pop(r1, r2); in Generate_ResumeGeneratorTrampoline()
864 __ ldr(r4, FieldMemOperand(r1, JSGeneratorObject::kFunctionOffset)); in Generate_ResumeGeneratorTrampoline()
866 __ b(&stepping_prepared); in Generate_ResumeGeneratorTrampoline()
868 __ bind(&prepare_step_in_suspended_generator); in Generate_ResumeGeneratorTrampoline()
871 __ Push(r1, r2); in Generate_ResumeGeneratorTrampoline()
872 __ CallRuntime(Runtime::kDebugPrepareStepInSuspendedGenerator); in Generate_ResumeGeneratorTrampoline()
873 __ Pop(r1, r2); in Generate_ResumeGeneratorTrampoline()
874 __ ldr(r4, FieldMemOperand(r1, JSGeneratorObject::kFunctionOffset)); in Generate_ResumeGeneratorTrampoline()
876 __ b(&stepping_prepared); in Generate_ResumeGeneratorTrampoline()
881 __ push(r1); in Generate_ConstructedNonConstructable()
882 __ CallRuntime(Runtime::kThrowConstructedNonConstructable); in Generate_ConstructedNonConstructable()
894 __ LoadRoot(r2, Heap::kRealStackLimitRootIndex); in Generate_CheckStackOverflow()
897 __ sub(r2, sp, r2); in Generate_CheckStackOverflow()
900 __ cmp(r2, Operand::PointerOffsetFromSmiKey(argc)); in Generate_CheckStackOverflow()
903 __ cmp(r2, Operand(argc, LSL, kPointerSizeLog2)); in Generate_CheckStackOverflow()
905 __ b(gt, &okay); // Signed comparison. in Generate_CheckStackOverflow()
908 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_CheckStackOverflow()
910 __ bind(&okay); in Generate_CheckStackOverflow()
931 __ mov(cp, Operand(context_address)); in Generate_JSEntryTrampolineHelper()
932 __ ldr(cp, MemOperand(cp)); in Generate_JSEntryTrampolineHelper()
934 __ InitializeRootRegister(); in Generate_JSEntryTrampolineHelper()
937 __ Push(r1, r2); in Generate_JSEntryTrampolineHelper()
944 __ mov(r5, r0); in Generate_JSEntryTrampolineHelper()
951 __ add(r2, r4, Operand(r3, LSL, kPointerSizeLog2)); in Generate_JSEntryTrampolineHelper()
953 __ b(&entry); in Generate_JSEntryTrampolineHelper()
954 __ bind(&loop); in Generate_JSEntryTrampolineHelper()
955 __ ldr(r0, MemOperand(r4, kPointerSize, PostIndex)); // read next parameter in Generate_JSEntryTrampolineHelper()
956 __ ldr(r0, MemOperand(r0)); // dereference handle in Generate_JSEntryTrampolineHelper()
957 __ push(r0); // push parameter in Generate_JSEntryTrampolineHelper()
958 __ bind(&entry); in Generate_JSEntryTrampolineHelper()
959 __ cmp(r4, r2); in Generate_JSEntryTrampolineHelper()
960 __ b(ne, &loop); in Generate_JSEntryTrampolineHelper()
963 __ mov(r0, Operand(r3)); in Generate_JSEntryTrampolineHelper()
964 __ mov(r3, Operand(r5)); in Generate_JSEntryTrampolineHelper()
968 __ LoadRoot(r4, Heap::kUndefinedValueRootIndex); in Generate_JSEntryTrampolineHelper()
969 __ mov(r5, Operand(r4)); in Generate_JSEntryTrampolineHelper()
970 __ mov(r6, Operand(r4)); in Generate_JSEntryTrampolineHelper()
972 __ mov(r8, Operand(r4)); in Generate_JSEntryTrampolineHelper()
975 __ mov(r9, Operand(r4)); in Generate_JSEntryTrampolineHelper()
982 __ Call(builtin, RelocInfo::CODE_TARGET); in Generate_JSEntryTrampolineHelper()
988 __ Jump(lr); in Generate_JSEntryTrampolineHelper()
1005 __ ldr(args_count, in LeaveInterpreterFrame()
1007 __ ldr(args_count, in LeaveInterpreterFrame()
1011 __ LeaveFrame(StackFrame::JAVA_SCRIPT); in LeaveInterpreterFrame()
1014 __ add(sp, sp, args_count, LeaveCC); in LeaveInterpreterFrame()
1040 __ PushStandardFrame(r1); in Generate_InterpreterEntryTrampoline()
1044 __ ldr(r0, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_InterpreterEntryTrampoline()
1047 __ ldr(debug_info, FieldMemOperand(r0, SharedFunctionInfo::kDebugInfoOffset)); in Generate_InterpreterEntryTrampoline()
1048 __ cmp(debug_info, Operand(DebugInfo::uninitialized())); in Generate_InterpreterEntryTrampoline()
1050 __ ldr(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
1052 __ ldr(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
1057 __ ldr(r0, FieldMemOperand(r0, SharedFunctionInfo::kCodeOffset)); in Generate_InterpreterEntryTrampoline()
1058 __ cmp(r0, Operand(masm->CodeObject())); // Self-reference to this code. in Generate_InterpreterEntryTrampoline()
1059 __ b(ne, &switch_to_different_code_kind); in Generate_InterpreterEntryTrampoline()
1062 __ ldr(r2, FieldMemOperand(r1, JSFunction::kLiteralsOffset)); in Generate_InterpreterEntryTrampoline()
1063 __ ldr(r2, FieldMemOperand(r2, LiteralsArray::kFeedbackVectorOffset)); in Generate_InterpreterEntryTrampoline()
1064 __ ldr(r9, FieldMemOperand( in Generate_InterpreterEntryTrampoline()
1067 __ add(r9, r9, Operand(Smi::FromInt(1))); in Generate_InterpreterEntryTrampoline()
1068 __ str(r9, FieldMemOperand( in Generate_InterpreterEntryTrampoline()
1074 __ SmiTst(kInterpreterBytecodeArrayRegister); in Generate_InterpreterEntryTrampoline()
1075 __ Assert(ne, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); in Generate_InterpreterEntryTrampoline()
1076 __ CompareObjectType(kInterpreterBytecodeArrayRegister, r0, no_reg, in Generate_InterpreterEntryTrampoline()
1078 __ Assert(eq, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); in Generate_InterpreterEntryTrampoline()
1082 __ mov(kInterpreterBytecodeOffsetRegister, in Generate_InterpreterEntryTrampoline()
1086 __ SmiTag(r0, kInterpreterBytecodeOffsetRegister); in Generate_InterpreterEntryTrampoline()
1087 __ Push(r3, kInterpreterBytecodeArrayRegister, r0); in Generate_InterpreterEntryTrampoline()
1092 __ ldr(r4, FieldMemOperand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
1097 __ sub(r9, sp, Operand(r4)); in Generate_InterpreterEntryTrampoline()
1098 __ LoadRoot(r2, Heap::kRealStackLimitRootIndex); in Generate_InterpreterEntryTrampoline()
1099 __ cmp(r9, Operand(r2)); in Generate_InterpreterEntryTrampoline()
1100 __ b(hs, &ok); in Generate_InterpreterEntryTrampoline()
1101 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterEntryTrampoline()
1102 __ bind(&ok); in Generate_InterpreterEntryTrampoline()
1107 __ LoadRoot(r9, Heap::kUndefinedValueRootIndex); in Generate_InterpreterEntryTrampoline()
1108 __ b(&loop_check, al); in Generate_InterpreterEntryTrampoline()
1109 __ bind(&loop_header); in Generate_InterpreterEntryTrampoline()
1111 __ push(r9); in Generate_InterpreterEntryTrampoline()
1113 __ bind(&loop_check); in Generate_InterpreterEntryTrampoline()
1114 __ sub(r4, r4, Operand(kPointerSize), SetCC); in Generate_InterpreterEntryTrampoline()
1115 __ b(&loop_header, ge); in Generate_InterpreterEntryTrampoline()
1119 __ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex); in Generate_InterpreterEntryTrampoline()
1120 __ mov(kInterpreterDispatchTableRegister, in Generate_InterpreterEntryTrampoline()
1125 __ ldrb(r1, MemOperand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEntryTrampoline()
1127 __ ldr(ip, MemOperand(kInterpreterDispatchTableRegister, r1, LSL, in Generate_InterpreterEntryTrampoline()
1129 __ Call(ip); in Generate_InterpreterEntryTrampoline()
1134 __ Jump(lr); in Generate_InterpreterEntryTrampoline()
1139 __ bind(&switch_to_different_code_kind); in Generate_InterpreterEntryTrampoline()
1140 __ LeaveFrame(StackFrame::JAVA_SCRIPT); in Generate_InterpreterEntryTrampoline()
1141 __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_InterpreterEntryTrampoline()
1142 __ ldr(r4, FieldMemOperand(r4, SharedFunctionInfo::kCodeOffset)); in Generate_InterpreterEntryTrampoline()
1143 __ add(r4, r4, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_InterpreterEntryTrampoline()
1144 __ str(r4, FieldMemOperand(r1, JSFunction::kCodeEntryOffset)); in Generate_InterpreterEntryTrampoline()
1145 __ RecordWriteCodeEntryField(r1, r4, r5); in Generate_InterpreterEntryTrampoline()
1146 __ Jump(r4); in Generate_InterpreterEntryTrampoline()
1155 __ LoadRoot(scratch, Heap::kRealStackLimitRootIndex); in Generate_StackOverflowCheck()
1158 __ sub(scratch, sp, scratch); in Generate_StackOverflowCheck()
1160 __ cmp(scratch, Operand(num_args, LSL, kPointerSizeLog2)); in Generate_StackOverflowCheck()
1161 __ b(le, stack_overflow); // Signed comparison. in Generate_StackOverflowCheck()
1172 __ mov(limit, num_args); in Generate_InterpreterPushArgs()
1173 __ mov(limit, Operand(limit, LSL, kPointerSizeLog2)); in Generate_InterpreterPushArgs()
1174 __ sub(limit, index, limit); in Generate_InterpreterPushArgs()
1177 __ b(al, &loop_check); in Generate_InterpreterPushArgs()
1178 __ bind(&loop_header); in Generate_InterpreterPushArgs()
1179 __ ldr(scratch, MemOperand(index, -kPointerSize, PostIndex)); in Generate_InterpreterPushArgs()
1180 __ push(scratch); in Generate_InterpreterPushArgs()
1181 __ bind(&loop_check); in Generate_InterpreterPushArgs()
1182 __ cmp(index, limit); in Generate_InterpreterPushArgs()
1183 __ b(gt, &loop_header); in Generate_InterpreterPushArgs()
1199 __ add(r3, r0, Operand(1)); // Add one for receiver. in Generate_InterpreterPushArgsAndCallImpl()
1206 __ Jump(masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny, in Generate_InterpreterPushArgsAndCallImpl()
1211 __ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny, in Generate_InterpreterPushArgsAndCallImpl()
1216 __ bind(&stack_overflow); in Generate_InterpreterPushArgsAndCallImpl()
1218 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterPushArgsAndCallImpl()
1220 __ bkpt(0); in Generate_InterpreterPushArgsAndCallImpl()
1237 __ mov(ip, Operand::Zero()); in Generate_InterpreterPushArgsAndConstructImpl()
1238 __ push(ip); in Generate_InterpreterPushArgsAndConstructImpl()
1243 __ AssertUndefinedOrAllocationSite(r2, r5); in Generate_InterpreterPushArgsAndConstructImpl()
1245 __ AssertFunction(r1); in Generate_InterpreterPushArgsAndConstructImpl()
1249 __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_InterpreterPushArgsAndConstructImpl()
1250 __ ldr(r4, FieldMemOperand(r4, SharedFunctionInfo::kConstructStubOffset)); in Generate_InterpreterPushArgsAndConstructImpl()
1252 __ add(pc, r4, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_InterpreterPushArgsAndConstructImpl()
1257 __ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); in Generate_InterpreterPushArgsAndConstructImpl()
1260 __ bind(&stack_overflow); in Generate_InterpreterPushArgsAndConstructImpl()
1262 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterPushArgsAndConstructImpl()
1264 __ bkpt(0); in Generate_InterpreterPushArgsAndConstructImpl()
1279 __ add(r4, r0, Operand(1)); // Add one for receiver. in Generate_InterpreterPushArgsAndConstructArray()
1286 __ mov(r3, r1); in Generate_InterpreterPushArgsAndConstructArray()
1289 __ TailCallStub(&stub); in Generate_InterpreterPushArgsAndConstructArray()
1291 __ bind(&stack_overflow); in Generate_InterpreterPushArgsAndConstructArray()
1293 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_InterpreterPushArgsAndConstructArray()
1295 __ bkpt(0); in Generate_InterpreterPushArgsAndConstructArray()
1305 __ Move(r2, masm->isolate()->builtins()->InterpreterEntryTrampoline()); in Generate_InterpreterEnterBytecode()
1306 __ add(lr, r2, Operand(interpreter_entry_return_pc_offset->value() + in Generate_InterpreterEnterBytecode()
1310 __ mov(kInterpreterDispatchTableRegister, in Generate_InterpreterEnterBytecode()
1315 __ ldr(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEnterBytecode()
1320 __ SmiTst(kInterpreterBytecodeArrayRegister); in Generate_InterpreterEnterBytecode()
1321 __ Assert(ne, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); in Generate_InterpreterEnterBytecode()
1322 __ CompareObjectType(kInterpreterBytecodeArrayRegister, r1, no_reg, in Generate_InterpreterEnterBytecode()
1324 __ Assert(eq, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry); in Generate_InterpreterEnterBytecode()
1328 __ ldr(kInterpreterBytecodeOffsetRegister, in Generate_InterpreterEnterBytecode()
1330 __ SmiUntag(kInterpreterBytecodeOffsetRegister); in Generate_InterpreterEnterBytecode()
1333 __ ldrb(r1, MemOperand(kInterpreterBytecodeArrayRegister, in Generate_InterpreterEnterBytecode()
1335 __ ldr(ip, MemOperand(kInterpreterDispatchTableRegister, r1, LSL, in Generate_InterpreterEnterBytecode()
1337 __ mov(pc, ip); in Generate_InterpreterEnterBytecode()
1344 __ ldr(r1, MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); in Generate_InterpreterEnterBytecodeAdvance()
1345 __ ldr(r2, MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); in Generate_InterpreterEnterBytecodeAdvance()
1346 __ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); in Generate_InterpreterEnterBytecodeAdvance()
1349 __ Push(kInterpreterAccumulatorRegister, r1, r2); in Generate_InterpreterEnterBytecodeAdvance()
1350 __ CallRuntime(Runtime::kInterpreterAdvanceBytecodeOffset); in Generate_InterpreterEnterBytecodeAdvance()
1351 __ mov(r2, r0); // Result is the new bytecode offset. in Generate_InterpreterEnterBytecodeAdvance()
1352 __ Pop(kInterpreterAccumulatorRegister); in Generate_InterpreterEnterBytecodeAdvance()
1354 __ str(r2, MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); in Generate_InterpreterEnterBytecodeAdvance()
1377 __ push(argument_count); in Generate_CompileLazy()
1378 __ push(new_target); in Generate_CompileLazy()
1379 __ push(closure); in Generate_CompileLazy()
1383 __ ldr(map, FieldMemOperand(closure, JSFunction::kSharedFunctionInfoOffset)); in Generate_CompileLazy()
1384 __ ldr(map, in Generate_CompileLazy()
1386 __ ldr(index, FieldMemOperand(map, FixedArray::kLengthOffset)); in Generate_CompileLazy()
1387 __ cmp(index, Operand(Smi::FromInt(2))); in Generate_CompileLazy()
1388 __ b(lt, &gotta_call_runtime); in Generate_CompileLazy()
1397 __ ldr(native_context, NativeContextMemOperand()); in Generate_CompileLazy()
1399 __ bind(&loop_top); in Generate_CompileLazy()
1404 __ add(array_pointer, map, Operand::PointerOffsetFromSmiKey(index)); in Generate_CompileLazy()
1405 __ ldr(temp, FieldMemOperand(array_pointer, in Generate_CompileLazy()
1407 __ ldr(temp, FieldMemOperand(temp, WeakCell::kValueOffset)); in Generate_CompileLazy()
1408 __ cmp(temp, native_context); in Generate_CompileLazy()
1409 __ b(ne, &loop_bottom); in Generate_CompileLazy()
1411 __ ldr(temp, FieldMemOperand(array_pointer, in Generate_CompileLazy()
1414 __ cmp(temp, Operand(Smi::FromInt(bailout_id))); in Generate_CompileLazy()
1415 __ b(ne, &loop_bottom); in Generate_CompileLazy()
1417 __ ldr(temp, FieldMemOperand(array_pointer, in Generate_CompileLazy()
1419 __ ldr(temp, FieldMemOperand(temp, WeakCell::kValueOffset)); in Generate_CompileLazy()
1420 __ JumpIfSmi(temp, &gotta_call_runtime); in Generate_CompileLazy()
1423 __ ldr(r4, MemOperand(sp, 0)); in Generate_CompileLazy()
1424 __ str(temp, FieldMemOperand(r4, JSFunction::kLiteralsOffset)); in Generate_CompileLazy()
1425 __ push(index); in Generate_CompileLazy()
1426 __ RecordWriteField(r4, JSFunction::kLiteralsOffset, temp, index, in Generate_CompileLazy()
1429 __ pop(index); in Generate_CompileLazy()
1433 __ ldr(entry, in Generate_CompileLazy()
1436 __ ldr(entry, FieldMemOperand(entry, WeakCell::kValueOffset)); in Generate_CompileLazy()
1437 __ JumpIfSmi(entry, &try_shared); in Generate_CompileLazy()
1440 __ pop(closure); in Generate_CompileLazy()
1442 __ add(entry, entry, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_CompileLazy()
1443 __ str(entry, FieldMemOperand(closure, JSFunction::kCodeEntryOffset)); in Generate_CompileLazy()
1444 __ RecordWriteCodeEntryField(closure, entry, r5); in Generate_CompileLazy()
1450 __ ldr(r5, in Generate_CompileLazy()
1452 __ str(r5, FieldMemOperand(closure, JSFunction::kNextFunctionLinkOffset)); in Generate_CompileLazy()
1453 __ RecordWriteField(closure, JSFunction::kNextFunctionLinkOffset, r5, r0, in Generate_CompileLazy()
1458 __ str(closure, in Generate_CompileLazy()
1461 __ mov(r5, closure); in Generate_CompileLazy()
1462 __ RecordWriteContextSlot(native_context, function_list_offset, closure, r0, in Generate_CompileLazy()
1464 __ mov(closure, r5); in Generate_CompileLazy()
1465 __ pop(new_target); in Generate_CompileLazy()
1466 __ pop(argument_count); in Generate_CompileLazy()
1467 __ Jump(entry); in Generate_CompileLazy()
1469 __ bind(&loop_bottom); in Generate_CompileLazy()
1470 __ sub(index, index, Operand(Smi::FromInt(SharedFunctionInfo::kEntryLength))); in Generate_CompileLazy()
1471 __ cmp(index, Operand(Smi::FromInt(1))); in Generate_CompileLazy()
1472 __ b(gt, &loop_top); in Generate_CompileLazy()
1475 __ jmp(&gotta_call_runtime); in Generate_CompileLazy()
1477 __ bind(&try_shared); in Generate_CompileLazy()
1478 __ pop(closure); in Generate_CompileLazy()
1479 __ pop(new_target); in Generate_CompileLazy()
1480 __ pop(argument_count); in Generate_CompileLazy()
1481 __ ldr(entry, in Generate_CompileLazy()
1484 __ ldrb(r5, FieldMemOperand(entry, in Generate_CompileLazy()
1486 __ tst(r5, Operand(1 << SharedFunctionInfo::kMarkedForTierUpBitWithinByte)); in Generate_CompileLazy()
1487 __ b(ne, &gotta_call_runtime_no_stack); in Generate_CompileLazy()
1489 __ ldr(entry, FieldMemOperand(entry, SharedFunctionInfo::kCodeOffset)); in Generate_CompileLazy()
1490 __ ldr(r5, FieldMemOperand(entry, Code::kFlagsOffset)); in Generate_CompileLazy()
1491 __ and_(r5, r5, Operand(Code::KindField::kMask)); in Generate_CompileLazy()
1492 __ mov(r5, Operand(r5, LSR, Code::KindField::kShift)); in Generate_CompileLazy()
1493 __ cmp(r5, Operand(Code::BUILTIN)); in Generate_CompileLazy()
1494 __ b(eq, &gotta_call_runtime_no_stack); in Generate_CompileLazy()
1496 __ add(entry, entry, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_CompileLazy()
1497 __ str(entry, FieldMemOperand(closure, JSFunction::kCodeEntryOffset)); in Generate_CompileLazy()
1498 __ RecordWriteCodeEntryField(closure, entry, r5); in Generate_CompileLazy()
1499 __ Jump(entry); in Generate_CompileLazy()
1501 __ bind(&gotta_call_runtime); in Generate_CompileLazy()
1502 __ pop(closure); in Generate_CompileLazy()
1503 __ pop(new_target); in Generate_CompileLazy()
1504 __ pop(argument_count); in Generate_CompileLazy()
1505 __ bind(&gotta_call_runtime_no_stack); in Generate_CompileLazy()
1532 __ Move(r4, r0); in Generate_InstantiateAsmJs()
1534 __ SmiTag(r0); in Generate_InstantiateAsmJs()
1535 __ push(r0); in Generate_InstantiateAsmJs()
1537 __ push(r1); in Generate_InstantiateAsmJs()
1538 __ push(r3); in Generate_InstantiateAsmJs()
1541 __ push(r1); in Generate_InstantiateAsmJs()
1547 __ cmp(r4, Operand(j)); in Generate_InstantiateAsmJs()
1548 __ b(ne, &over); in Generate_InstantiateAsmJs()
1551 __ ldr(r4, MemOperand(fp, StandardFrameConstants::kCallerSPOffset + in Generate_InstantiateAsmJs()
1553 __ push(r4); in Generate_InstantiateAsmJs()
1556 __ PushRoot(Heap::kUndefinedValueRootIndex); in Generate_InstantiateAsmJs()
1559 __ jmp(&args_done); in Generate_InstantiateAsmJs()
1560 __ bind(&over); in Generate_InstantiateAsmJs()
1563 __ bind(&args_done); in Generate_InstantiateAsmJs()
1566 __ CallRuntime(Runtime::kInstantiateAsmJs, 4); in Generate_InstantiateAsmJs()
1568 __ JumpIfSmi(r0, &failed); in Generate_InstantiateAsmJs()
1570 __ Drop(2); in Generate_InstantiateAsmJs()
1571 __ pop(r4); in Generate_InstantiateAsmJs()
1572 __ SmiUntag(r4); in Generate_InstantiateAsmJs()
1575 __ add(r4, r4, Operand(1)); in Generate_InstantiateAsmJs()
1576 __ Drop(r4); in Generate_InstantiateAsmJs()
1577 __ Ret(); in Generate_InstantiateAsmJs()
1579 __ bind(&failed); in Generate_InstantiateAsmJs()
1581 __ pop(r3); in Generate_InstantiateAsmJs()
1582 __ pop(r1); in Generate_InstantiateAsmJs()
1583 __ pop(r0); in Generate_InstantiateAsmJs()
1584 __ SmiUntag(r0); in Generate_InstantiateAsmJs()
1603 __ stm(db_w, sp, r0.bit() | r1.bit() | r3.bit() | fp.bit() | lr.bit()); in GenerateMakeCodeYoungAgainCommon()
1604 __ PrepareCallCFunction(2, 0, r2); in GenerateMakeCodeYoungAgainCommon()
1605 __ mov(r1, Operand(ExternalReference::isolate_address(masm->isolate()))); in GenerateMakeCodeYoungAgainCommon()
1606 __ CallCFunction( in GenerateMakeCodeYoungAgainCommon()
1608 __ ldm(ia_w, sp, r0.bit() | r1.bit() | r3.bit() | fp.bit() | lr.bit()); in GenerateMakeCodeYoungAgainCommon()
1609 __ mov(pc, r0); in GenerateMakeCodeYoungAgainCommon()
1636 __ stm(db_w, sp, r0.bit() | r1.bit() | r3.bit() | fp.bit() | lr.bit()); in CODE_AGE_LIST()
1637 __ PrepareCallCFunction(2, 0, r2); in CODE_AGE_LIST()
1638 __ mov(r1, Operand(ExternalReference::isolate_address(masm->isolate()))); in CODE_AGE_LIST()
1639 __ CallCFunction( in CODE_AGE_LIST()
1642 __ ldm(ia_w, sp, r0.bit() | r1.bit() | r3.bit() | fp.bit() | lr.bit()); in CODE_AGE_LIST()
1645 __ PushStandardFrame(r1); in CODE_AGE_LIST()
1648 __ add(r0, r0, Operand(kNoCodeAgeSequenceLength)); in CODE_AGE_LIST()
1649 __ mov(pc, r0); in CODE_AGE_LIST()
1668 __ stm(db_w, sp, kJSCallerSaved | kCalleeSaved); in Generate_NotifyStubFailureHelper()
1670 __ CallRuntime(Runtime::kNotifyStubFailure, save_doubles); in Generate_NotifyStubFailureHelper()
1671 __ ldm(ia_w, sp, kJSCallerSaved | kCalleeSaved); in Generate_NotifyStubFailureHelper()
1674 __ add(sp, sp, Operand(kPointerSize)); // Ignore state in Generate_NotifyStubFailureHelper()
1675 __ mov(pc, lr); // Jump to miss handler in Generate_NotifyStubFailureHelper()
1691 __ mov(r0, Operand(Smi::FromInt(static_cast<int>(type)))); in Generate_NotifyDeoptimizedHelper()
1692 __ push(r0); in Generate_NotifyDeoptimizedHelper()
1693 __ CallRuntime(Runtime::kNotifyDeoptimized); in Generate_NotifyDeoptimizedHelper()
1697 __ ldr(r6, MemOperand(sp, 0 * kPointerSize)); in Generate_NotifyDeoptimizedHelper()
1698 __ SmiUntag(r6); in Generate_NotifyDeoptimizedHelper()
1701 __ cmp(r6, in Generate_NotifyDeoptimizedHelper()
1703 __ b(ne, &with_tos_register); in Generate_NotifyDeoptimizedHelper()
1704 __ add(sp, sp, Operand(1 * kPointerSize)); // Remove state. in Generate_NotifyDeoptimizedHelper()
1705 __ Ret(); in Generate_NotifyDeoptimizedHelper()
1707 __ bind(&with_tos_register); in Generate_NotifyDeoptimizedHelper()
1709 __ ldr(r0, MemOperand(sp, 1 * kPointerSize)); in Generate_NotifyDeoptimizedHelper()
1710 __ cmp(r6, in Generate_NotifyDeoptimizedHelper()
1712 __ b(ne, &unknown_state); in Generate_NotifyDeoptimizedHelper()
1713 __ add(sp, sp, Operand(2 * kPointerSize)); // Remove state. in Generate_NotifyDeoptimizedHelper()
1714 __ Ret(); in Generate_NotifyDeoptimizedHelper()
1716 __ bind(&unknown_state); in Generate_NotifyDeoptimizedHelper()
1717 __ stop("no cases left"); in Generate_NotifyDeoptimizedHelper()
1742 __ ldr(signature, FieldMemOperand(function_template_info, in CompatibleReceiverCheck()
1744 __ CompareRoot(signature, Heap::kUndefinedValueRootIndex); in CompatibleReceiverCheck()
1746 __ b(eq, &receiver_check_passed); in CompatibleReceiverCheck()
1749 __ ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset)); in CompatibleReceiverCheck()
1751 __ bind(&prototype_loop_start); in CompatibleReceiverCheck()
1754 __ GetMapConstructor(constructor, map, ip, ip); in CompatibleReceiverCheck()
1755 __ cmp(ip, Operand(JS_FUNCTION_TYPE)); in CompatibleReceiverCheck()
1757 __ b(ne, &next_prototype); in CompatibleReceiverCheck()
1759 __ ldr(type, in CompatibleReceiverCheck()
1761 __ ldr(type, FieldMemOperand(type, SharedFunctionInfo::kFunctionDataOffset)); in CompatibleReceiverCheck()
1765 __ bind(&function_template_loop); in CompatibleReceiverCheck()
1768 __ cmp(signature, type); in CompatibleReceiverCheck()
1769 __ b(eq, &receiver_check_passed); in CompatibleReceiverCheck()
1773 __ JumpIfSmi(type, &next_prototype); in CompatibleReceiverCheck()
1774 __ CompareObjectType(type, ip, ip, FUNCTION_TEMPLATE_INFO_TYPE); in CompatibleReceiverCheck()
1777 __ ldr(type, in CompatibleReceiverCheck()
1780 __ b(&function_template_loop, eq); in CompatibleReceiverCheck()
1783 __ bind(&next_prototype); in CompatibleReceiverCheck()
1784 __ ldr(ip, FieldMemOperand(map, Map::kBitField3Offset)); in CompatibleReceiverCheck()
1785 __ tst(ip, Operand(Map::HasHiddenPrototype::kMask)); in CompatibleReceiverCheck()
1786 __ b(eq, receiver_check_failed); in CompatibleReceiverCheck()
1787 __ ldr(receiver, FieldMemOperand(map, Map::kPrototypeOffset)); in CompatibleReceiverCheck()
1788 __ ldr(map, FieldMemOperand(receiver, HeapObject::kMapOffset)); in CompatibleReceiverCheck()
1790 __ b(&prototype_loop_start); in CompatibleReceiverCheck()
1792 __ bind(&receiver_check_passed); in CompatibleReceiverCheck()
1807 __ ldr(r3, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_HandleFastApiCall()
1808 __ ldr(r3, FieldMemOperand(r3, SharedFunctionInfo::kFunctionDataOffset)); in Generate_HandleFastApiCall()
1812 __ ldr(r2, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_HandleFastApiCall()
1817 __ ldr(r4, FieldMemOperand(r3, FunctionTemplateInfo::kCallCodeOffset)); in Generate_HandleFastApiCall()
1818 __ ldr(r4, FieldMemOperand(r4, CallHandlerInfo::kFastHandlerOffset)); in Generate_HandleFastApiCall()
1819 __ add(r4, r4, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_HandleFastApiCall()
1820 __ Jump(r4); in Generate_HandleFastApiCall()
1823 __ bind(&receiver_check_failed); in Generate_HandleFastApiCall()
1825 __ add(r0, r0, Operand(1)); in Generate_HandleFastApiCall()
1826 __ add(sp, sp, Operand(r0, LSL, kPointerSizeLog2)); in Generate_HandleFastApiCall()
1827 __ TailCallRuntime(Runtime::kThrowIllegalInvocation); in Generate_HandleFastApiCall()
1834 __ ldr(r0, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); in Generate_OnStackReplacementHelper()
1835 __ ldr(r0, MemOperand(r0, JavaScriptFrameConstants::kFunctionOffset)); in Generate_OnStackReplacementHelper()
1837 __ ldr(r0, MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); in Generate_OnStackReplacementHelper()
1843 __ push(r0); in Generate_OnStackReplacementHelper()
1844 __ CallRuntime(Runtime::kCompileForOnStackReplacement); in Generate_OnStackReplacementHelper()
1849 __ cmp(r0, Operand(Smi::kZero)); in Generate_OnStackReplacementHelper()
1850 __ b(ne, &skip); in Generate_OnStackReplacementHelper()
1851 __ Ret(); in Generate_OnStackReplacementHelper()
1853 __ bind(&skip); in Generate_OnStackReplacementHelper()
1858 __ LeaveFrame(StackFrame::STUB); in Generate_OnStackReplacementHelper()
1863 __ ldr(r1, FieldMemOperand(r0, Code::kDeoptimizationDataOffset)); in Generate_OnStackReplacementHelper()
1867 __ add(r0, r0, Operand(Code::kHeaderSize - kHeapObjectTag)); // Code start in Generate_OnStackReplacementHelper()
1870 __ LoadConstantPoolPointerRegisterFromCodeTargetAddress(r0); in Generate_OnStackReplacementHelper()
1875 __ ldr(r1, FieldMemOperand( in Generate_OnStackReplacementHelper()
1880 __ add(lr, r0, Operand::SmiUntag(r1)); in Generate_OnStackReplacementHelper()
1883 __ Ret(); in Generate_OnStackReplacementHelper()
1908 __ LoadRoot(r2, Heap::kUndefinedValueRootIndex); in Generate_FunctionPrototypeApply()
1909 __ mov(r3, r2); in Generate_FunctionPrototypeApply()
1910 __ ldr(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2)); // receiver in Generate_FunctionPrototypeApply()
1911 __ sub(r4, r0, Operand(1), SetCC); in Generate_FunctionPrototypeApply()
1912 __ ldr(r2, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // thisArg in Generate_FunctionPrototypeApply()
1913 __ sub(r4, r4, Operand(1), SetCC, ge); in Generate_FunctionPrototypeApply()
1914 __ ldr(r3, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // argArray in Generate_FunctionPrototypeApply()
1915 __ add(sp, sp, Operand(r0, LSL, kPointerSizeLog2)); in Generate_FunctionPrototypeApply()
1916 __ str(r2, MemOperand(sp, 0)); in Generate_FunctionPrototypeApply()
1917 __ mov(r0, r3); in Generate_FunctionPrototypeApply()
1928 __ JumpIfSmi(r1, &receiver_not_callable); in Generate_FunctionPrototypeApply()
1929 __ ldr(r4, FieldMemOperand(r1, HeapObject::kMapOffset)); in Generate_FunctionPrototypeApply()
1930 __ ldrb(r4, FieldMemOperand(r4, Map::kBitFieldOffset)); in Generate_FunctionPrototypeApply()
1931 __ tst(r4, Operand(1 << Map::kIsCallable)); in Generate_FunctionPrototypeApply()
1932 __ b(eq, &receiver_not_callable); in Generate_FunctionPrototypeApply()
1936 __ JumpIfRoot(r0, Heap::kNullValueRootIndex, &no_arguments); in Generate_FunctionPrototypeApply()
1937 __ JumpIfRoot(r0, Heap::kUndefinedValueRootIndex, &no_arguments); in Generate_FunctionPrototypeApply()
1941 __ LoadRoot(r3, Heap::kUndefinedValueRootIndex); in Generate_FunctionPrototypeApply()
1942 __ Jump(masm->isolate()->builtins()->Apply(), RelocInfo::CODE_TARGET); in Generate_FunctionPrototypeApply()
1946 __ bind(&no_arguments); in Generate_FunctionPrototypeApply()
1948 __ mov(r0, Operand(0)); in Generate_FunctionPrototypeApply()
1949 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); in Generate_FunctionPrototypeApply()
1953 __ bind(&receiver_not_callable); in Generate_FunctionPrototypeApply()
1955 __ str(r1, MemOperand(sp, 0)); in Generate_FunctionPrototypeApply()
1956 __ TailCallRuntime(Runtime::kThrowApplyNonFunction); in Generate_FunctionPrototypeApply()
1966 __ cmp(r0, Operand::Zero()); in Generate_FunctionPrototypeCall()
1967 __ b(ne, &done); in Generate_FunctionPrototypeCall()
1968 __ PushRoot(Heap::kUndefinedValueRootIndex); in Generate_FunctionPrototypeCall()
1969 __ add(r0, r0, Operand(1)); in Generate_FunctionPrototypeCall()
1970 __ bind(&done); in Generate_FunctionPrototypeCall()
1975 __ ldr(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_FunctionPrototypeCall()
1985 __ add(r2, sp, Operand(r0, LSL, kPointerSizeLog2)); in Generate_FunctionPrototypeCall()
1987 __ bind(&loop); in Generate_FunctionPrototypeCall()
1988 __ ldr(ip, MemOperand(r2, -kPointerSize)); in Generate_FunctionPrototypeCall()
1989 __ str(ip, MemOperand(r2)); in Generate_FunctionPrototypeCall()
1990 __ sub(r2, r2, Operand(kPointerSize)); in Generate_FunctionPrototypeCall()
1991 __ cmp(r2, sp); in Generate_FunctionPrototypeCall()
1992 __ b(ne, &loop); in Generate_FunctionPrototypeCall()
1995 __ sub(r0, r0, Operand(1)); in Generate_FunctionPrototypeCall()
1996 __ pop(); in Generate_FunctionPrototypeCall()
2000 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); in Generate_FunctionPrototypeCall()
2016 __ LoadRoot(r1, Heap::kUndefinedValueRootIndex); in Generate_ReflectApply()
2017 __ mov(r2, r1); in Generate_ReflectApply()
2018 __ mov(r3, r1); in Generate_ReflectApply()
2019 __ sub(r4, r0, Operand(1), SetCC); in Generate_ReflectApply()
2020 __ ldr(r1, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // target in Generate_ReflectApply()
2021 __ sub(r4, r4, Operand(1), SetCC, ge); in Generate_ReflectApply()
2022 __ ldr(r2, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // thisArgument in Generate_ReflectApply()
2023 __ sub(r4, r4, Operand(1), SetCC, ge); in Generate_ReflectApply()
2024 __ ldr(r3, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // argumentsList in Generate_ReflectApply()
2025 __ add(sp, sp, Operand(r0, LSL, kPointerSizeLog2)); in Generate_ReflectApply()
2026 __ str(r2, MemOperand(sp, 0)); in Generate_ReflectApply()
2027 __ mov(r0, r3); in Generate_ReflectApply()
2038 __ JumpIfSmi(r1, &target_not_callable); in Generate_ReflectApply()
2039 __ ldr(r4, FieldMemOperand(r1, HeapObject::kMapOffset)); in Generate_ReflectApply()
2040 __ ldrb(r4, FieldMemOperand(r4, Map::kBitFieldOffset)); in Generate_ReflectApply()
2041 __ tst(r4, Operand(1 << Map::kIsCallable)); in Generate_ReflectApply()
2042 __ b(eq, &target_not_callable); in Generate_ReflectApply()
2046 __ LoadRoot(r3, Heap::kUndefinedValueRootIndex); in Generate_ReflectApply()
2047 __ Jump(masm->isolate()->builtins()->Apply(), RelocInfo::CODE_TARGET); in Generate_ReflectApply()
2050 __ bind(&target_not_callable); in Generate_ReflectApply()
2052 __ str(r1, MemOperand(sp, 0)); in Generate_ReflectApply()
2053 __ TailCallRuntime(Runtime::kThrowApplyNonFunction); in Generate_ReflectApply()
2071 __ LoadRoot(r1, Heap::kUndefinedValueRootIndex); in Generate_ReflectConstruct()
2072 __ mov(r2, r1); in Generate_ReflectConstruct()
2073 __ str(r2, MemOperand(sp, r0, LSL, kPointerSizeLog2)); // receiver in Generate_ReflectConstruct()
2074 __ sub(r4, r0, Operand(1), SetCC); in Generate_ReflectConstruct()
2075 __ ldr(r1, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // target in Generate_ReflectConstruct()
2076 __ mov(r3, r1); // new.target defaults to target in Generate_ReflectConstruct()
2077 __ sub(r4, r4, Operand(1), SetCC, ge); in Generate_ReflectConstruct()
2078 __ ldr(r2, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // argumentsList in Generate_ReflectConstruct()
2079 __ sub(r4, r4, Operand(1), SetCC, ge); in Generate_ReflectConstruct()
2080 __ ldr(r3, MemOperand(sp, r4, LSL, kPointerSizeLog2), ge); // new.target in Generate_ReflectConstruct()
2081 __ add(sp, sp, Operand(r0, LSL, kPointerSizeLog2)); in Generate_ReflectConstruct()
2082 __ mov(r0, r2); in Generate_ReflectConstruct()
2094 __ JumpIfSmi(r1, &target_not_constructor); in Generate_ReflectConstruct()
2095 __ ldr(r4, FieldMemOperand(r1, HeapObject::kMapOffset)); in Generate_ReflectConstruct()
2096 __ ldrb(r4, FieldMemOperand(r4, Map::kBitFieldOffset)); in Generate_ReflectConstruct()
2097 __ tst(r4, Operand(1 << Map::kIsConstructor)); in Generate_ReflectConstruct()
2098 __ b(eq, &target_not_constructor); in Generate_ReflectConstruct()
2102 __ JumpIfSmi(r3, &new_target_not_constructor); in Generate_ReflectConstruct()
2103 __ ldr(r4, FieldMemOperand(r3, HeapObject::kMapOffset)); in Generate_ReflectConstruct()
2104 __ ldrb(r4, FieldMemOperand(r4, Map::kBitFieldOffset)); in Generate_ReflectConstruct()
2105 __ tst(r4, Operand(1 << Map::kIsConstructor)); in Generate_ReflectConstruct()
2106 __ b(eq, &new_target_not_constructor); in Generate_ReflectConstruct()
2109 __ Jump(masm->isolate()->builtins()->Apply(), RelocInfo::CODE_TARGET); in Generate_ReflectConstruct()
2112 __ bind(&target_not_constructor); in Generate_ReflectConstruct()
2114 __ str(r1, MemOperand(sp, 0)); in Generate_ReflectConstruct()
2115 __ TailCallRuntime(Runtime::kThrowCalledNonCallable); in Generate_ReflectConstruct()
2119 __ bind(&new_target_not_constructor); in Generate_ReflectConstruct()
2121 __ str(r3, MemOperand(sp, 0)); in Generate_ReflectConstruct()
2122 __ TailCallRuntime(Runtime::kThrowCalledNonCallable); in Generate_ReflectConstruct()
2127 __ SmiTag(r0); in EnterArgumentsAdaptorFrame()
2128 __ mov(r4, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); in EnterArgumentsAdaptorFrame()
2129 __ stm(db_w, sp, r0.bit() | r1.bit() | r4.bit() | in EnterArgumentsAdaptorFrame()
2132 __ add(fp, sp, in EnterArgumentsAdaptorFrame()
2142 __ ldr(r1, MemOperand(fp, -(StandardFrameConstants::kFixedFrameSizeFromFp + in LeaveArgumentsAdaptorFrame()
2145 __ LeaveFrame(StackFrame::ARGUMENTS_ADAPTOR); in LeaveArgumentsAdaptorFrame()
2146 __ add(sp, sp, Operand::PointerOffsetFromSmiKey(r1)); in LeaveArgumentsAdaptorFrame()
2147 __ add(sp, sp, Operand(kPointerSize)); // adjust for receiver in LeaveArgumentsAdaptorFrame()
2162 __ JumpIfSmi(r0, &create_runtime); in Generate_Apply()
2165 __ ldr(r2, FieldMemOperand(r0, HeapObject::kMapOffset)); in Generate_Apply()
2168 __ ldr(r4, NativeContextMemOperand()); in Generate_Apply()
2171 __ ldr(ip, ContextMemOperand(r4, Context::SLOPPY_ARGUMENTS_MAP_INDEX)); in Generate_Apply()
2172 __ cmp(ip, r2); in Generate_Apply()
2173 __ b(eq, &create_arguments); in Generate_Apply()
2174 __ ldr(ip, ContextMemOperand(r4, Context::STRICT_ARGUMENTS_MAP_INDEX)); in Generate_Apply()
2175 __ cmp(ip, r2); in Generate_Apply()
2176 __ b(eq, &create_arguments); in Generate_Apply()
2179 __ CompareInstanceType(r2, ip, JS_ARRAY_TYPE); in Generate_Apply()
2180 __ b(eq, &create_array); in Generate_Apply()
2183 __ bind(&create_runtime); in Generate_Apply()
2186 __ Push(r1, r3, r0); in Generate_Apply()
2187 __ CallRuntime(Runtime::kCreateListFromArrayLike); in Generate_Apply()
2188 __ Pop(r1, r3); in Generate_Apply()
2189 __ ldr(r2, FieldMemOperand(r0, FixedArray::kLengthOffset)); in Generate_Apply()
2190 __ SmiUntag(r2); in Generate_Apply()
2192 __ jmp(&done_create); in Generate_Apply()
2195 __ bind(&create_arguments); in Generate_Apply()
2196 __ ldr(r2, FieldMemOperand(r0, JSArgumentsObject::kLengthOffset)); in Generate_Apply()
2197 __ ldr(r4, FieldMemOperand(r0, JSObject::kElementsOffset)); in Generate_Apply()
2198 __ ldr(ip, FieldMemOperand(r4, FixedArray::kLengthOffset)); in Generate_Apply()
2199 __ cmp(r2, ip); in Generate_Apply()
2200 __ b(ne, &create_runtime); in Generate_Apply()
2201 __ SmiUntag(r2); in Generate_Apply()
2202 __ mov(r0, r4); in Generate_Apply()
2203 __ b(&done_create); in Generate_Apply()
2206 __ bind(&create_array); in Generate_Apply()
2207 __ ldr(r2, FieldMemOperand(r2, Map::kBitField2Offset)); in Generate_Apply()
2208 __ DecodeField<Map::ElementsKindBits>(r2); in Generate_Apply()
2212 __ cmp(r2, Operand(FAST_ELEMENTS)); in Generate_Apply()
2213 __ b(hi, &create_runtime); in Generate_Apply()
2214 __ cmp(r2, Operand(FAST_HOLEY_SMI_ELEMENTS)); in Generate_Apply()
2215 __ b(eq, &create_runtime); in Generate_Apply()
2216 __ ldr(r2, FieldMemOperand(r0, JSArray::kLengthOffset)); in Generate_Apply()
2217 __ ldr(r0, FieldMemOperand(r0, JSArray::kElementsOffset)); in Generate_Apply()
2218 __ SmiUntag(r2); in Generate_Apply()
2220 __ bind(&done_create); in Generate_Apply()
2228 __ LoadRoot(ip, Heap::kRealStackLimitRootIndex); in Generate_Apply()
2231 __ sub(ip, sp, ip); in Generate_Apply()
2233 __ cmp(ip, Operand(r2, LSL, kPointerSizeLog2)); in Generate_Apply()
2234 __ b(gt, &done); // Signed comparison. in Generate_Apply()
2235 __ TailCallRuntime(Runtime::kThrowStackOverflow); in Generate_Apply()
2236 __ bind(&done); in Generate_Apply()
2249 __ mov(r4, Operand(0)); in Generate_Apply()
2251 __ bind(&loop); in Generate_Apply()
2252 __ cmp(r4, r2); in Generate_Apply()
2253 __ b(eq, &done); in Generate_Apply()
2254 __ add(ip, r0, Operand(r4, LSL, kPointerSizeLog2)); in Generate_Apply()
2255 __ ldr(ip, FieldMemOperand(ip, FixedArray::kHeaderSize)); in Generate_Apply()
2256 __ Push(ip); in Generate_Apply()
2257 __ add(r4, r4, Operand(1)); in Generate_Apply()
2258 __ b(&loop); in Generate_Apply()
2259 __ bind(&done); in Generate_Apply()
2260 __ Move(r0, r4); in Generate_Apply()
2265 __ CompareRoot(r3, Heap::kUndefinedValueRootIndex); in Generate_Apply()
2266 __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET, eq); in Generate_Apply()
2267 __ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET); in Generate_Apply()
2311 __ mov(scratch1, Operand(is_tail_call_elimination_enabled)); in PrepareForTailCall()
2312 __ ldrb(scratch1, MemOperand(scratch1)); in PrepareForTailCall()
2313 __ cmp(scratch1, Operand(0)); in PrepareForTailCall()
2314 __ b(eq, &done); in PrepareForTailCall()
2319 __ ldr(scratch3, in PrepareForTailCall()
2321 __ cmp(scratch3, Operand(Smi::FromInt(StackFrame::STUB))); in PrepareForTailCall()
2322 __ b(ne, &no_interpreter_frame); in PrepareForTailCall()
2323 __ ldr(fp, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); in PrepareForTailCall()
2324 __ bind(&no_interpreter_frame); in PrepareForTailCall()
2330 __ ldr(scratch2, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); in PrepareForTailCall()
2331 __ ldr(scratch3, in PrepareForTailCall()
2333 __ cmp(scratch3, Operand(Smi::FromInt(StackFrame::ARGUMENTS_ADAPTOR))); in PrepareForTailCall()
2334 __ b(ne, &no_arguments_adaptor); in PrepareForTailCall()
2337 __ mov(fp, scratch2); in PrepareForTailCall()
2338 __ ldr(caller_args_count_reg, in PrepareForTailCall()
2340 __ SmiUntag(caller_args_count_reg); in PrepareForTailCall()
2341 __ b(&formal_parameter_count_loaded); in PrepareForTailCall()
2343 __ bind(&no_arguments_adaptor); in PrepareForTailCall()
2345 __ ldr(scratch1, in PrepareForTailCall()
2347 __ ldr(scratch1, in PrepareForTailCall()
2349 __ ldr(caller_args_count_reg, in PrepareForTailCall()
2352 __ SmiUntag(caller_args_count_reg); in PrepareForTailCall()
2354 __ bind(&formal_parameter_count_loaded); in PrepareForTailCall()
2357 __ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2, in PrepareForTailCall()
2359 __ bind(&done); in PrepareForTailCall()
2371 __ AssertFunction(r1); in Generate_CallFunction()
2376 __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_CallFunction()
2377 __ ldrb(r3, FieldMemOperand(r2, SharedFunctionInfo::kFunctionKindByteOffset)); in Generate_CallFunction()
2378 __ tst(r3, Operand(SharedFunctionInfo::kClassConstructorBitsWithinByte)); in Generate_CallFunction()
2379 __ b(ne, &class_constructor); in Generate_CallFunction()
2386 __ ldr(cp, FieldMemOperand(r1, JSFunction::kContextOffset)); in Generate_CallFunction()
2389 __ ldrb(r3, FieldMemOperand(r2, SharedFunctionInfo::kNativeByteOffset)); in Generate_CallFunction()
2390 __ tst(r3, Operand((1 << SharedFunctionInfo::kNativeBitWithinByte) | in Generate_CallFunction()
2392 __ b(ne, &done_convert); in Generate_CallFunction()
2403 __ LoadGlobalProxy(r3); in Generate_CallFunction()
2406 __ ldr(r3, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_CallFunction()
2407 __ JumpIfSmi(r3, &convert_to_object); in Generate_CallFunction()
2409 __ CompareObjectType(r3, r4, r4, FIRST_JS_RECEIVER_TYPE); in Generate_CallFunction()
2410 __ b(hs, &done_convert); in Generate_CallFunction()
2413 __ JumpIfRoot(r3, Heap::kUndefinedValueRootIndex, in Generate_CallFunction()
2415 __ JumpIfNotRoot(r3, Heap::kNullValueRootIndex, &convert_to_object); in Generate_CallFunction()
2416 __ bind(&convert_global_proxy); in Generate_CallFunction()
2419 __ LoadGlobalProxy(r3); in Generate_CallFunction()
2421 __ b(&convert_receiver); in Generate_CallFunction()
2423 __ bind(&convert_to_object); in Generate_CallFunction()
2429 __ SmiTag(r0); in Generate_CallFunction()
2430 __ Push(r0, r1); in Generate_CallFunction()
2431 __ mov(r0, r3); in Generate_CallFunction()
2432 __ Push(cp); in Generate_CallFunction()
2433 __ Call(masm->isolate()->builtins()->ToObject(), in Generate_CallFunction()
2435 __ Pop(cp); in Generate_CallFunction()
2436 __ mov(r3, r0); in Generate_CallFunction()
2437 __ Pop(r0, r1); in Generate_CallFunction()
2438 __ SmiUntag(r0); in Generate_CallFunction()
2440 __ ldr(r2, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_CallFunction()
2441 __ bind(&convert_receiver); in Generate_CallFunction()
2443 __ str(r3, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_CallFunction()
2445 __ bind(&done_convert); in Generate_CallFunction()
2458 __ ldr(r2, in Generate_CallFunction()
2460 __ SmiUntag(r2); in Generate_CallFunction()
2463 __ InvokeFunctionCode(r1, no_reg, expected, actual, JUMP_FUNCTION, in Generate_CallFunction()
2467 __ bind(&class_constructor); in Generate_CallFunction()
2470 __ push(r1); in Generate_CallFunction()
2471 __ CallRuntime(Runtime::kThrowConstructorNonCallableError); in Generate_CallFunction()
2486 __ ldr(r2, FieldMemOperand(r1, JSBoundFunction::kBoundArgumentsOffset)); in Generate_PushBoundArguments()
2487 __ ldr(r4, FieldMemOperand(r2, FixedArray::kLengthOffset)); in Generate_PushBoundArguments()
2488 __ SmiUntag(r4); in Generate_PushBoundArguments()
2489 __ cmp(r4, Operand(0)); in Generate_PushBoundArguments()
2490 __ b(eq, &no_bound_arguments); in Generate_PushBoundArguments()
2503 __ sub(sp, sp, Operand(r4, LSL, kPointerSizeLog2)); in Generate_PushBoundArguments()
2507 __ CompareRoot(sp, Heap::kRealStackLimitRootIndex); in Generate_PushBoundArguments()
2508 __ b(gt, &done); // Signed comparison. in Generate_PushBoundArguments()
2510 __ add(sp, sp, Operand(r4, LSL, kPointerSizeLog2)); in Generate_PushBoundArguments()
2513 __ EnterFrame(StackFrame::INTERNAL); in Generate_PushBoundArguments()
2514 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_PushBoundArguments()
2516 __ bind(&done); in Generate_PushBoundArguments()
2522 __ mov(r5, Operand(0)); in Generate_PushBoundArguments()
2523 __ bind(&loop); in Generate_PushBoundArguments()
2524 __ cmp(r5, r0); in Generate_PushBoundArguments()
2525 __ b(gt, &done_loop); in Generate_PushBoundArguments()
2526 __ ldr(ip, MemOperand(sp, r4, LSL, kPointerSizeLog2)); in Generate_PushBoundArguments()
2527 __ str(ip, MemOperand(sp, r5, LSL, kPointerSizeLog2)); in Generate_PushBoundArguments()
2528 __ add(r4, r4, Operand(1)); in Generate_PushBoundArguments()
2529 __ add(r5, r5, Operand(1)); in Generate_PushBoundArguments()
2530 __ b(&loop); in Generate_PushBoundArguments()
2531 __ bind(&done_loop); in Generate_PushBoundArguments()
2537 __ ldr(r4, FieldMemOperand(r2, FixedArray::kLengthOffset)); in Generate_PushBoundArguments()
2538 __ SmiUntag(r4); in Generate_PushBoundArguments()
2539 __ add(r2, r2, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); in Generate_PushBoundArguments()
2540 __ bind(&loop); in Generate_PushBoundArguments()
2541 __ sub(r4, r4, Operand(1), SetCC); in Generate_PushBoundArguments()
2542 __ ldr(ip, MemOperand(r2, r4, LSL, kPointerSizeLog2)); in Generate_PushBoundArguments()
2543 __ str(ip, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_PushBoundArguments()
2544 __ add(r0, r0, Operand(1)); in Generate_PushBoundArguments()
2545 __ b(gt, &loop); in Generate_PushBoundArguments()
2548 __ bind(&no_bound_arguments); in Generate_PushBoundArguments()
2560 __ AssertBoundFunction(r1); in Generate_CallBoundFunctionImpl()
2567 __ ldr(ip, FieldMemOperand(r1, JSBoundFunction::kBoundThisOffset)); in Generate_CallBoundFunctionImpl()
2568 __ str(ip, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_CallBoundFunctionImpl()
2574 __ ldr(r1, FieldMemOperand(r1, JSBoundFunction::kBoundTargetFunctionOffset)); in Generate_CallBoundFunctionImpl()
2575 __ mov(ip, Operand(ExternalReference(Builtins::kCall_ReceiverIsAny, in Generate_CallBoundFunctionImpl()
2577 __ ldr(ip, MemOperand(ip)); in Generate_CallBoundFunctionImpl()
2578 __ add(pc, ip, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_CallBoundFunctionImpl()
2590 __ JumpIfSmi(r1, &non_callable); in Generate_Call()
2591 __ bind(&non_smi); in Generate_Call()
2592 __ CompareObjectType(r1, r4, r5, JS_FUNCTION_TYPE); in Generate_Call()
2593 __ Jump(masm->isolate()->builtins()->CallFunction(mode, tail_call_mode), in Generate_Call()
2595 __ cmp(r5, Operand(JS_BOUND_FUNCTION_TYPE)); in Generate_Call()
2596 __ Jump(masm->isolate()->builtins()->CallBoundFunction(tail_call_mode), in Generate_Call()
2600 __ ldrb(r4, FieldMemOperand(r4, Map::kBitFieldOffset)); in Generate_Call()
2601 __ tst(r4, Operand(1 << Map::kIsCallable)); in Generate_Call()
2602 __ b(eq, &non_callable); in Generate_Call()
2604 __ cmp(r5, Operand(JS_PROXY_TYPE)); in Generate_Call()
2605 __ b(ne, &non_function); in Generate_Call()
2613 __ Push(r1); in Generate_Call()
2616 __ add(r0, r0, Operand(2)); in Generate_Call()
2618 __ JumpToExternalReference( in Generate_Call()
2623 __ bind(&non_function); in Generate_Call()
2625 __ str(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_Call()
2627 __ LoadNativeContextSlot(Context::CALL_AS_FUNCTION_DELEGATE_INDEX, r1); in Generate_Call()
2628 __ Jump(masm->isolate()->builtins()->CallFunction( in Generate_Call()
2633 __ bind(&non_callable); in Generate_Call()
2636 __ Push(r1); in Generate_Call()
2637 __ CallRuntime(Runtime::kThrowCalledNonCallable); in Generate_Call()
2648 __ AssertFunction(r1); in Generate_ConstructFunction()
2652 __ LoadRoot(r2, Heap::kUndefinedValueRootIndex); in Generate_ConstructFunction()
2656 __ ldr(r4, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); in Generate_ConstructFunction()
2657 __ ldr(r4, FieldMemOperand(r4, SharedFunctionInfo::kConstructStubOffset)); in Generate_ConstructFunction()
2658 __ add(pc, r4, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_ConstructFunction()
2668 __ AssertBoundFunction(r1); in Generate_ConstructBoundFunction()
2674 __ cmp(r1, r3); in Generate_ConstructBoundFunction()
2675 __ ldr(r3, FieldMemOperand(r1, JSBoundFunction::kBoundTargetFunctionOffset), in Generate_ConstructBoundFunction()
2679 __ ldr(r1, FieldMemOperand(r1, JSBoundFunction::kBoundTargetFunctionOffset)); in Generate_ConstructBoundFunction()
2680 __ mov(ip, Operand(ExternalReference(Builtins::kConstruct, masm->isolate()))); in Generate_ConstructBoundFunction()
2681 __ ldr(ip, MemOperand(ip)); in Generate_ConstructBoundFunction()
2682 __ add(pc, ip, Operand(Code::kHeaderSize - kHeapObjectTag)); in Generate_ConstructBoundFunction()
2695 __ Push(r1); in Generate_ConstructProxy()
2696 __ Push(r3); in Generate_ConstructProxy()
2698 __ add(r0, r0, Operand(3)); in Generate_ConstructProxy()
2700 __ JumpToExternalReference( in Generate_ConstructProxy()
2715 __ JumpIfSmi(r1, &non_constructor); in Generate_Construct()
2718 __ CompareObjectType(r1, r4, r5, JS_FUNCTION_TYPE); in Generate_Construct()
2719 __ Jump(masm->isolate()->builtins()->ConstructFunction(), in Generate_Construct()
2723 __ ldrb(r2, FieldMemOperand(r4, Map::kBitFieldOffset)); in Generate_Construct()
2724 __ tst(r2, Operand(1 << Map::kIsConstructor)); in Generate_Construct()
2725 __ b(eq, &non_constructor); in Generate_Construct()
2729 __ cmp(r5, Operand(JS_BOUND_FUNCTION_TYPE)); in Generate_Construct()
2730 __ Jump(masm->isolate()->builtins()->ConstructBoundFunction(), in Generate_Construct()
2734 __ cmp(r5, Operand(JS_PROXY_TYPE)); in Generate_Construct()
2735 __ Jump(masm->isolate()->builtins()->ConstructProxy(), RelocInfo::CODE_TARGET, in Generate_Construct()
2741 __ str(r1, MemOperand(sp, r0, LSL, kPointerSizeLog2)); in Generate_Construct()
2743 __ LoadNativeContextSlot(Context::CALL_AS_CONSTRUCTOR_DELEGATE_INDEX, r1); in Generate_Construct()
2744 __ Jump(masm->isolate()->builtins()->CallFunction(), in Generate_Construct()
2750 __ bind(&non_constructor); in Generate_Construct()
2751 __ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(), in Generate_Construct()
2761 __ SmiTag(r1); in Generate_AllocateInNewSpace()
2762 __ Push(r1); in Generate_AllocateInNewSpace()
2763 __ Move(cp, Smi::kZero); in Generate_AllocateInNewSpace()
2764 __ TailCallRuntime(Runtime::kAllocateInNewSpace); in Generate_AllocateInNewSpace()
2773 __ SmiTag(r1); in Generate_AllocateInOldSpace()
2774 __ Move(r2, Smi::FromInt(AllocateTargetSpace::encode(OLD_SPACE))); in Generate_AllocateInOldSpace()
2775 __ Push(r1, r2); in Generate_AllocateInOldSpace()
2776 __ Move(cp, Smi::kZero); in Generate_AllocateInOldSpace()
2777 __ TailCallRuntime(Runtime::kAllocateInTargetSpace); in Generate_AllocateInOldSpace()
2786 __ Push(r1); in Generate_Abort()
2787 __ Move(cp, Smi::kZero); in Generate_Abort()
2788 __ TailCallRuntime(Runtime::kAbort); in Generate_Abort()
2802 __ cmp(r0, r2); in Generate_ArgumentsAdaptorTrampoline()
2803 __ b(lt, &too_few); in Generate_ArgumentsAdaptorTrampoline()
2804 __ cmp(r2, Operand(SharedFunctionInfo::kDontAdaptArgumentsSentinel)); in Generate_ArgumentsAdaptorTrampoline()
2805 __ b(eq, &dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
2808 __ bind(&enough); in Generate_ArgumentsAdaptorTrampoline()
2817 __ add(r0, fp, Operand::PointerOffsetFromSmiKey(r0)); in Generate_ArgumentsAdaptorTrampoline()
2819 __ add(r0, r0, Operand(2 * kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
2820 __ sub(r4, r0, Operand(r2, LSL, kPointerSizeLog2)); in Generate_ArgumentsAdaptorTrampoline()
2830 __ bind(©); in Generate_ArgumentsAdaptorTrampoline()
2831 __ ldr(ip, MemOperand(r0, 0)); in Generate_ArgumentsAdaptorTrampoline()
2832 __ push(ip); in Generate_ArgumentsAdaptorTrampoline()
2833 __ cmp(r0, r4); // Compare before moving to next argument. in Generate_ArgumentsAdaptorTrampoline()
2834 __ sub(r0, r0, Operand(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
2835 __ b(ne, ©); in Generate_ArgumentsAdaptorTrampoline()
2837 __ b(&invoke); in Generate_ArgumentsAdaptorTrampoline()
2841 __ bind(&too_few); in Generate_ArgumentsAdaptorTrampoline()
2850 __ add(r0, fp, Operand::PointerOffsetFromSmiKey(r0)); in Generate_ArgumentsAdaptorTrampoline()
2858 __ bind(©); in Generate_ArgumentsAdaptorTrampoline()
2860 __ ldr(ip, MemOperand(r0, 2 * kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
2861 __ push(ip); in Generate_ArgumentsAdaptorTrampoline()
2862 __ cmp(r0, fp); // Compare before moving to next argument. in Generate_ArgumentsAdaptorTrampoline()
2863 __ sub(r0, r0, Operand(kPointerSize)); in Generate_ArgumentsAdaptorTrampoline()
2864 __ b(ne, ©); in Generate_ArgumentsAdaptorTrampoline()
2870 __ LoadRoot(ip, Heap::kUndefinedValueRootIndex); in Generate_ArgumentsAdaptorTrampoline()
2871 __ sub(r4, fp, Operand(r2, LSL, kPointerSizeLog2)); in Generate_ArgumentsAdaptorTrampoline()
2873 __ sub(r4, r4, Operand(StandardFrameConstants::kFixedFrameSizeFromFp + in Generate_ArgumentsAdaptorTrampoline()
2877 __ bind(&fill); in Generate_ArgumentsAdaptorTrampoline()
2878 __ push(ip); in Generate_ArgumentsAdaptorTrampoline()
2879 __ cmp(sp, r4); in Generate_ArgumentsAdaptorTrampoline()
2880 __ b(ne, &fill); in Generate_ArgumentsAdaptorTrampoline()
2884 __ bind(&invoke); in Generate_ArgumentsAdaptorTrampoline()
2885 __ mov(r0, r2); in Generate_ArgumentsAdaptorTrampoline()
2889 __ ldr(r4, FieldMemOperand(r1, JSFunction::kCodeEntryOffset)); in Generate_ArgumentsAdaptorTrampoline()
2890 __ Call(r4); in Generate_ArgumentsAdaptorTrampoline()
2897 __ Jump(lr); in Generate_ArgumentsAdaptorTrampoline()
2902 __ bind(&dont_adapt_arguments); in Generate_ArgumentsAdaptorTrampoline()
2903 __ ldr(r4, FieldMemOperand(r1, JSFunction::kCodeEntryOffset)); in Generate_ArgumentsAdaptorTrampoline()
2904 __ Jump(r4); in Generate_ArgumentsAdaptorTrampoline()
2906 __ bind(&stack_overflow); in Generate_ArgumentsAdaptorTrampoline()
2909 __ CallRuntime(Runtime::kThrowStackOverflow); in Generate_ArgumentsAdaptorTrampoline()
2910 __ bkpt(0); in Generate_ArgumentsAdaptorTrampoline()
2914 #undef __