Lines Matching refs:__
44 #define __ ACCESS_MASM(masm) macro
52 __ cmpb(type, Immediate(JS_GLOBAL_OBJECT_TYPE)); in GenerateGlobalInstanceTypeCheck()
53 __ j(equal, global_object); in GenerateGlobalInstanceTypeCheck()
54 __ cmpb(type, Immediate(JS_BUILTINS_OBJECT_TYPE)); in GenerateGlobalInstanceTypeCheck()
55 __ j(equal, global_object); in GenerateGlobalInstanceTypeCheck()
56 __ cmpb(type, Immediate(JS_GLOBAL_PROXY_TYPE)); in GenerateGlobalInstanceTypeCheck()
57 __ j(equal, global_object); in GenerateGlobalInstanceTypeCheck()
74 __ JumpIfSmi(receiver, miss); in GenerateStringDictionaryReceiverCheck()
77 __ movq(r1, FieldOperand(receiver, HeapObject::kMapOffset)); in GenerateStringDictionaryReceiverCheck()
78 __ movb(r0, FieldOperand(r1, Map::kInstanceTypeOffset)); in GenerateStringDictionaryReceiverCheck()
79 __ cmpb(r0, Immediate(FIRST_SPEC_OBJECT_TYPE)); in GenerateStringDictionaryReceiverCheck()
80 __ j(below, miss); in GenerateStringDictionaryReceiverCheck()
88 __ testb(FieldOperand(r1, Map::kBitFieldOffset), in GenerateStringDictionaryReceiverCheck()
91 __ j(not_zero, miss); in GenerateStringDictionaryReceiverCheck()
93 __ movq(r0, FieldOperand(receiver, JSObject::kPropertiesOffset)); in GenerateStringDictionaryReceiverCheck()
94 __ CompareRoot(FieldOperand(r0, HeapObject::kMapOffset), in GenerateStringDictionaryReceiverCheck()
96 __ j(not_equal, miss); in GenerateStringDictionaryReceiverCheck()
141 __ bind(&done); in GenerateDictionaryLoad()
146 __ Test(Operand(elements, r1, times_pointer_size, in GenerateDictionaryLoad()
149 __ j(not_zero, miss_label); in GenerateDictionaryLoad()
153 __ movq(result, in GenerateDictionaryLoad()
199 __ bind(&done); in GenerateDictionaryStore()
207 __ Test(Operand(elements, in GenerateDictionaryStore()
212 __ j(not_zero, miss_label); in GenerateDictionaryStore()
216 __ lea(scratch1, Operand(elements, in GenerateDictionaryStore()
220 __ movq(Operand(scratch1, 0), value); in GenerateDictionaryStore()
223 __ movq(scratch0, value); in GenerateDictionaryStore()
224 __ RecordWrite(elements, scratch1, scratch0, kDontSaveFPRegs); in GenerateDictionaryStore()
237 __ bind(&miss); in GenerateArrayLength()
252 __ bind(&miss); in GenerateStringLength()
266 __ bind(&miss); in GenerateFunctionPrototype()
284 __ JumpIfSmi(receiver, slow); in GenerateKeyedLoadReceiverCheck()
291 __ CmpObjectType(receiver, JS_OBJECT_TYPE, map); in GenerateKeyedLoadReceiverCheck()
292 __ j(below, slow); in GenerateKeyedLoadReceiverCheck()
295 __ testb(FieldOperand(map, Map::kBitFieldOffset), in GenerateKeyedLoadReceiverCheck()
298 __ j(not_zero, slow); in GenerateKeyedLoadReceiverCheck()
331 __ movq(elements, FieldOperand(receiver, JSObject::kElementsOffset)); in GenerateFastArrayLoad()
334 __ CompareRoot(FieldOperand(elements, HeapObject::kMapOffset), in GenerateFastArrayLoad()
336 __ j(not_equal, not_fast_array); in GenerateFastArrayLoad()
338 __ AssertFastElements(elements); in GenerateFastArrayLoad()
341 __ SmiCompare(key, FieldOperand(elements, FixedArray::kLengthOffset)); in GenerateFastArrayLoad()
343 __ j(above_equal, out_of_range); in GenerateFastArrayLoad()
346 __ movq(scratch, FieldOperand(elements, in GenerateFastArrayLoad()
350 __ CompareRoot(scratch, Heap::kTheHoleValueRootIndex); in GenerateFastArrayLoad()
353 __ j(equal, out_of_range); in GenerateFastArrayLoad()
355 __ movq(result, scratch); in GenerateFastArrayLoad()
373 __ CmpObjectType(key, FIRST_NONSTRING_TYPE, map); in GenerateKeyStringCheck()
374 __ j(above_equal, not_symbol); in GenerateKeyStringCheck()
376 __ movl(hash, FieldOperand(key, String::kHashFieldOffset)); in GenerateKeyStringCheck()
377 __ testl(hash, Immediate(String::kContainsCachedArrayIndexMask)); in GenerateKeyStringCheck()
378 __ j(zero, index_string); // The value in hash is used at jump target. in GenerateKeyStringCheck()
382 __ testb(FieldOperand(map, Map::kInstanceTypeOffset), in GenerateKeyStringCheck()
384 __ j(zero, not_symbol); in GenerateKeyStringCheck()
399 __ JumpIfNotSmi(rax, &check_string); in GenerateGeneric()
400 __ bind(&index_smi); in GenerateGeneric()
408 __ CheckFastElements(rcx, &check_number_dictionary); in GenerateGeneric()
419 __ IncrementCounter(counters->keyed_load_generic_smi(), 1); in GenerateGeneric()
420 __ ret(0); in GenerateGeneric()
422 __ bind(&check_number_dictionary); in GenerateGeneric()
423 __ SmiToInteger32(rbx, rax); in GenerateGeneric()
424 __ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset)); in GenerateGeneric()
431 __ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset), in GenerateGeneric()
433 __ j(not_equal, &slow); in GenerateGeneric()
434 __ LoadFromNumberDictionary(&slow, rcx, rax, rbx, r9, rdi, rax); in GenerateGeneric()
435 __ ret(0); in GenerateGeneric()
437 __ bind(&slow); in GenerateGeneric()
441 __ IncrementCounter(counters->keyed_load_generic_slow(), 1); in GenerateGeneric()
444 __ bind(&check_string); in GenerateGeneric()
452 __ movq(rbx, FieldOperand(rdx, JSObject::kPropertiesOffset)); in GenerateGeneric()
453 __ CompareRoot(FieldOperand(rbx, HeapObject::kMapOffset), in GenerateGeneric()
455 __ j(equal, &probe_dictionary); in GenerateGeneric()
459 __ movq(rbx, FieldOperand(rdx, HeapObject::kMapOffset)); in GenerateGeneric()
460 __ movl(rcx, rbx); in GenerateGeneric()
461 __ shr(rcx, Immediate(KeyedLookupCache::kMapHashShift)); in GenerateGeneric()
462 __ movl(rdi, FieldOperand(rax, String::kHashFieldOffset)); in GenerateGeneric()
463 __ shr(rdi, Immediate(String::kHashShift)); in GenerateGeneric()
464 __ xor_(rcx, rdi); in GenerateGeneric()
466 __ and_(rcx, Immediate(mask)); in GenerateGeneric()
478 __ movq(rdi, rcx); in GenerateGeneric()
479 __ shl(rdi, Immediate(kPointerSizeLog2 + 1)); in GenerateGeneric()
480 __ LoadAddress(kScratchRegister, cache_keys); in GenerateGeneric()
482 __ cmpq(rbx, Operand(kScratchRegister, rdi, times_1, off)); in GenerateGeneric()
483 __ j(not_equal, &try_next_entry); in GenerateGeneric()
484 __ cmpq(rax, Operand(kScratchRegister, rdi, times_1, off + kPointerSize)); in GenerateGeneric()
485 __ j(equal, &hit_on_nth_entry[i]); in GenerateGeneric()
486 __ bind(&try_next_entry); in GenerateGeneric()
490 __ cmpq(rbx, Operand(kScratchRegister, rdi, times_1, off)); in GenerateGeneric()
491 __ j(not_equal, &slow); in GenerateGeneric()
492 __ cmpq(rax, Operand(kScratchRegister, rdi, times_1, off + kPointerSize)); in GenerateGeneric()
493 __ j(not_equal, &slow); in GenerateGeneric()
501 __ bind(&hit_on_nth_entry[i]); in GenerateGeneric()
503 __ addl(rcx, Immediate(i)); in GenerateGeneric()
505 __ LoadAddress(kScratchRegister, cache_field_offsets); in GenerateGeneric()
506 __ movl(rdi, Operand(kScratchRegister, rcx, times_4, 0)); in GenerateGeneric()
507 __ movzxbq(rcx, FieldOperand(rbx, Map::kInObjectPropertiesOffset)); in GenerateGeneric()
508 __ subq(rdi, rcx); in GenerateGeneric()
509 __ j(above_equal, &property_array_property); in GenerateGeneric()
511 __ jmp(&load_in_object_property); in GenerateGeneric()
516 __ bind(&load_in_object_property); in GenerateGeneric()
517 __ movzxbq(rcx, FieldOperand(rbx, Map::kInstanceSizeOffset)); in GenerateGeneric()
518 __ addq(rcx, rdi); in GenerateGeneric()
519 __ movq(rax, FieldOperand(rdx, rcx, times_pointer_size, 0)); in GenerateGeneric()
520 __ IncrementCounter(counters->keyed_load_generic_lookup_cache(), 1); in GenerateGeneric()
521 __ ret(0); in GenerateGeneric()
524 __ bind(&property_array_property); in GenerateGeneric()
525 __ movq(rax, FieldOperand(rdx, JSObject::kPropertiesOffset)); in GenerateGeneric()
526 __ movq(rax, FieldOperand(rax, rdi, times_pointer_size, in GenerateGeneric()
528 __ IncrementCounter(counters->keyed_load_generic_lookup_cache(), 1); in GenerateGeneric()
529 __ ret(0); in GenerateGeneric()
533 __ bind(&probe_dictionary); in GenerateGeneric()
538 __ movq(rcx, FieldOperand(rdx, JSObject::kMapOffset)); in GenerateGeneric()
539 __ movb(rcx, FieldOperand(rcx, Map::kInstanceTypeOffset)); in GenerateGeneric()
543 __ IncrementCounter(counters->keyed_load_generic_symbol(), 1); in GenerateGeneric()
544 __ ret(0); in GenerateGeneric()
546 __ bind(&index_string); in GenerateGeneric()
547 __ IndexFromHash(rbx, rax); in GenerateGeneric()
548 __ jmp(&index_smi); in GenerateGeneric()
574 __ ret(0); in GenerateString()
579 __ bind(&miss); in GenerateString()
593 __ JumpIfSmi(rdx, &slow); in GenerateIndexedInterceptor()
597 __ JumpUnlessNonNegativeSmi(rax, &slow); in GenerateIndexedInterceptor()
600 __ movq(rcx, FieldOperand(rdx, HeapObject::kMapOffset)); in GenerateIndexedInterceptor()
604 __ movb(rcx, FieldOperand(rcx, Map::kBitFieldOffset)); in GenerateIndexedInterceptor()
605 __ andb(rcx, Immediate(kSlowCaseBitFieldMask)); in GenerateIndexedInterceptor()
606 __ cmpb(rcx, Immediate(1 << Map::kHasIndexedInterceptor)); in GenerateIndexedInterceptor()
607 __ j(not_zero, &slow); in GenerateIndexedInterceptor()
610 __ pop(rcx); in GenerateIndexedInterceptor()
611 __ push(rdx); // receiver in GenerateIndexedInterceptor()
612 __ push(rax); // key in GenerateIndexedInterceptor()
613 __ push(rcx); // return address in GenerateIndexedInterceptor()
616 __ TailCallExternalReference( in GenerateIndexedInterceptor()
622 __ bind(&slow); in GenerateIndexedInterceptor()
642 __ JumpIfSmi(rdx, &slow_with_tagged_index); in GenerateGeneric()
644 __ movq(r9, FieldOperand(rdx, HeapObject::kMapOffset)); in GenerateGeneric()
647 __ testb(FieldOperand(r9, Map::kBitFieldOffset), in GenerateGeneric()
649 __ j(not_zero, &slow_with_tagged_index); in GenerateGeneric()
651 __ JumpIfNotSmi(rcx, &slow_with_tagged_index); in GenerateGeneric()
652 __ SmiToInteger32(rcx, rcx); in GenerateGeneric()
654 __ CmpInstanceType(r9, JS_ARRAY_TYPE); in GenerateGeneric()
655 __ j(equal, &array); in GenerateGeneric()
657 __ CmpInstanceType(r9, FIRST_JS_OBJECT_TYPE); in GenerateGeneric()
658 __ j(below, &slow); in GenerateGeneric()
664 __ movq(rbx, FieldOperand(rdx, JSObject::kElementsOffset)); in GenerateGeneric()
666 __ SmiCompareInteger32(FieldOperand(rbx, FixedArray::kLengthOffset), rcx); in GenerateGeneric()
670 __ j(above, &fast_object_with_map_check); in GenerateGeneric()
673 __ bind(&slow); in GenerateGeneric()
674 __ Integer32ToSmi(rcx, rcx); in GenerateGeneric()
675 __ bind(&slow_with_tagged_index); in GenerateGeneric()
682 __ bind(&extra); in GenerateGeneric()
688 __ j(not_equal, &slow); // do not leave holes in the array in GenerateGeneric()
689 __ SmiCompareInteger32(FieldOperand(rbx, FixedArray::kLengthOffset), rcx); in GenerateGeneric()
690 __ j(below_equal, &slow); in GenerateGeneric()
692 __ movq(rdi, FieldOperand(rbx, HeapObject::kMapOffset)); in GenerateGeneric()
693 __ CompareRoot(rdi, Heap::kFixedArrayMapRootIndex); in GenerateGeneric()
694 __ j(not_equal, &check_extra_double); in GenerateGeneric()
695 __ leal(rdi, Operand(rcx, 1)); in GenerateGeneric()
696 __ Integer32ToSmiField(FieldOperand(rdx, JSArray::kLengthOffset), rdi); in GenerateGeneric()
697 __ jmp(&fast_object_without_map_check); in GenerateGeneric()
699 __ bind(&check_extra_double); in GenerateGeneric()
701 __ CompareRoot(rdi, Heap::kFixedDoubleArrayMapRootIndex); in GenerateGeneric()
702 __ j(not_equal, &slow); in GenerateGeneric()
703 __ leal(rdi, Operand(rcx, 1)); in GenerateGeneric()
704 __ Integer32ToSmiField(FieldOperand(rdx, JSArray::kLengthOffset), rdi); in GenerateGeneric()
705 __ jmp(&fast_double_without_map_check); in GenerateGeneric()
710 __ bind(&array); in GenerateGeneric()
714 __ movq(rbx, FieldOperand(rdx, JSObject::kElementsOffset)); in GenerateGeneric()
718 __ SmiCompareInteger32(FieldOperand(rdx, JSArray::kLengthOffset), rcx); in GenerateGeneric()
719 __ j(below_equal, &extra); in GenerateGeneric()
722 __ bind(&fast_object_with_map_check); in GenerateGeneric()
727 __ movq(rdi, FieldOperand(rbx, HeapObject::kMapOffset)); in GenerateGeneric()
728 __ CompareRoot(rdi, Heap::kFixedArrayMapRootIndex); in GenerateGeneric()
729 __ j(not_equal, &fast_double_with_map_check); in GenerateGeneric()
730 __ bind(&fast_object_without_map_check); in GenerateGeneric()
733 __ JumpIfNotSmi(rax, &non_smi_value); in GenerateGeneric()
735 __ movq(FieldOperand(rbx, rcx, times_pointer_size, FixedArray::kHeaderSize), in GenerateGeneric()
737 __ ret(0); in GenerateGeneric()
739 __ bind(&non_smi_value); in GenerateGeneric()
742 __ CheckFastObjectElements(r9, &transition_smi_elements); in GenerateGeneric()
743 __ bind(&finish_object_store); in GenerateGeneric()
744 __ movq(FieldOperand(rbx, rcx, times_pointer_size, FixedArray::kHeaderSize), in GenerateGeneric()
746 __ movq(rdx, rax); // Preserve the value which is returned. in GenerateGeneric()
747 __ RecordWriteArray( in GenerateGeneric()
749 __ ret(0); in GenerateGeneric()
751 __ bind(&fast_double_with_map_check); in GenerateGeneric()
755 __ CompareRoot(rdi, Heap::kFixedDoubleArrayMapRootIndex); in GenerateGeneric()
756 __ j(not_equal, &slow); in GenerateGeneric()
757 __ bind(&fast_double_without_map_check); in GenerateGeneric()
760 __ StoreNumberToDoubleElements(rax, rbx, rcx, xmm0, in GenerateGeneric()
762 __ ret(0); in GenerateGeneric()
764 __ bind(&transition_smi_elements); in GenerateGeneric()
765 __ movq(rbx, FieldOperand(rdx, HeapObject::kMapOffset)); in GenerateGeneric()
768 __ movq(r9, FieldOperand(rax, HeapObject::kMapOffset)); in GenerateGeneric()
769 __ CompareRoot(r9, Heap::kHeapNumberMapRootIndex); in GenerateGeneric()
770 __ j(not_equal, &non_double_value); in GenerateGeneric()
774 __ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, in GenerateGeneric()
780 __ movq(rbx, FieldOperand(rdx, JSObject::kElementsOffset)); in GenerateGeneric()
781 __ jmp(&fast_double_without_map_check); in GenerateGeneric()
783 __ bind(&non_double_value); in GenerateGeneric()
785 __ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, in GenerateGeneric()
791 __ movq(rbx, FieldOperand(rdx, JSObject::kElementsOffset)); in GenerateGeneric()
792 __ jmp(&finish_object_store); in GenerateGeneric()
794 __ bind(&transition_double_elements); in GenerateGeneric()
798 __ movq(rbx, FieldOperand(rdx, HeapObject::kMapOffset)); in GenerateGeneric()
799 __ LoadTransitionedArrayMapConditional(FAST_DOUBLE_ELEMENTS, in GenerateGeneric()
805 __ movq(rbx, FieldOperand(rdx, JSObject::kElementsOffset)); in GenerateGeneric()
806 __ jmp(&finish_object_store); in GenerateGeneric()
837 __ JumpIfSmi(rdx, &number); in GenerateMonomorphicCacheProbe()
838 __ CmpObjectType(rdx, HEAP_NUMBER_TYPE, rbx); in GenerateMonomorphicCacheProbe()
839 __ j(not_equal, &non_number); in GenerateMonomorphicCacheProbe()
840 __ bind(&number); in GenerateMonomorphicCacheProbe()
843 __ jmp(&probe); in GenerateMonomorphicCacheProbe()
846 __ bind(&non_number); in GenerateMonomorphicCacheProbe()
847 __ CmpInstanceType(rbx, FIRST_NONSTRING_TYPE); in GenerateMonomorphicCacheProbe()
848 __ j(above_equal, &non_string); in GenerateMonomorphicCacheProbe()
851 __ jmp(&probe); in GenerateMonomorphicCacheProbe()
854 __ bind(&non_string); in GenerateMonomorphicCacheProbe()
855 __ CompareRoot(rdx, Heap::kTrueValueRootIndex); in GenerateMonomorphicCacheProbe()
856 __ j(equal, &boolean); in GenerateMonomorphicCacheProbe()
857 __ CompareRoot(rdx, Heap::kFalseValueRootIndex); in GenerateMonomorphicCacheProbe()
858 __ j(not_equal, &miss); in GenerateMonomorphicCacheProbe()
859 __ bind(&boolean); in GenerateMonomorphicCacheProbe()
864 __ bind(&probe); in GenerateMonomorphicCacheProbe()
868 __ bind(&miss); in GenerateMonomorphicCacheProbe()
885 __ JumpIfSmi(rdi, miss); in GenerateFunctionTailCall()
887 __ CmpObjectType(rdi, JS_FUNCTION_TYPE, rdx); in GenerateFunctionTailCall()
888 __ j(not_equal, miss); in GenerateFunctionTailCall()
892 __ InvokeFunction(rdi, actual, JUMP_FUNCTION, in GenerateFunctionTailCall()
911 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); in GenerateNormal()
921 __ bind(&miss); in GenerateNormal()
941 __ IncrementCounter(counters->call_miss(), 1); in GenerateMiss()
943 __ IncrementCounter(counters->keyed_call_miss(), 1); in GenerateMiss()
947 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); in GenerateMiss()
954 __ push(rdx); in GenerateMiss()
955 __ push(rcx); in GenerateMiss()
959 __ Set(rax, 2); in GenerateMiss()
960 __ LoadAddress(rbx, ExternalReference(IC_Utility(id), masm->isolate())); in GenerateMiss()
961 __ CallStub(&stub); in GenerateMiss()
964 __ movq(rdi, rax); in GenerateMiss()
971 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); // receiver in GenerateMiss()
972 __ JumpIfSmi(rdx, &invoke); in GenerateMiss()
973 __ CmpObjectType(rdx, JS_GLOBAL_OBJECT_TYPE, rcx); in GenerateMiss()
974 __ j(equal, &global); in GenerateMiss()
975 __ CmpInstanceType(rcx, JS_BUILTINS_OBJECT_TYPE); in GenerateMiss()
976 __ j(not_equal, &invoke); in GenerateMiss()
979 __ bind(&global); in GenerateMiss()
980 __ movq(rdx, FieldOperand(rdx, GlobalObject::kGlobalReceiverOffset)); in GenerateMiss()
981 __ movq(Operand(rsp, (argc + 1) * kPointerSize), rdx); in GenerateMiss()
982 __ bind(&invoke); in GenerateMiss()
990 __ InvokeFunction(rdi, in GenerateMiss()
1012 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); in GenerateMegamorphic()
1030 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); in GenerateMegamorphic()
1037 __ JumpIfNotSmi(rcx, &check_string); in GenerateMegamorphic()
1039 __ bind(&index_smi); in GenerateMegamorphic()
1049 __ IncrementCounter(counters->keyed_call_generic_smi_fast(), 1); in GenerateMegamorphic()
1051 __ bind(&do_call); in GenerateMegamorphic()
1057 __ bind(&check_number_dictionary); in GenerateMegamorphic()
1061 __ CompareRoot(FieldOperand(rax, HeapObject::kMapOffset), in GenerateMegamorphic()
1063 __ j(not_equal, &slow_load); in GenerateMegamorphic()
1064 __ SmiToInteger32(rbx, rcx); in GenerateMegamorphic()
1066 __ LoadFromNumberDictionary(&slow_load, rax, rcx, rbx, r9, rdi, rdi); in GenerateMegamorphic()
1067 __ IncrementCounter(counters->keyed_call_generic_smi_dict(), 1); in GenerateMegamorphic()
1068 __ jmp(&do_call); in GenerateMegamorphic()
1070 __ bind(&slow_load); in GenerateMegamorphic()
1073 __ IncrementCounter(counters->keyed_call_generic_slow_load(), 1); in GenerateMegamorphic()
1076 __ push(rcx); // save the key in GenerateMegamorphic()
1077 __ push(rdx); // pass the receiver in GenerateMegamorphic()
1078 __ push(rcx); // pass the key in GenerateMegamorphic()
1079 __ CallRuntime(Runtime::kKeyedGetProperty, 2); in GenerateMegamorphic()
1080 __ pop(rcx); // restore the key in GenerateMegamorphic()
1082 __ movq(rdi, rax); in GenerateMegamorphic()
1083 __ jmp(&do_call); in GenerateMegamorphic()
1085 __ bind(&check_string); in GenerateMegamorphic()
1095 __ movq(rbx, FieldOperand(rdx, JSObject::kPropertiesOffset)); in GenerateMegamorphic()
1096 __ CompareRoot(FieldOperand(rbx, HeapObject::kMapOffset), in GenerateMegamorphic()
1098 __ j(not_equal, &lookup_monomorphic_cache); in GenerateMegamorphic()
1101 __ IncrementCounter(counters->keyed_call_generic_lookup_dict(), 1); in GenerateMegamorphic()
1102 __ jmp(&do_call); in GenerateMegamorphic()
1104 __ bind(&lookup_monomorphic_cache); in GenerateMegamorphic()
1105 __ IncrementCounter(counters->keyed_call_generic_lookup_cache(), 1); in GenerateMegamorphic()
1112 __ bind(&slow_call); in GenerateMegamorphic()
1119 __ IncrementCounter(counters->keyed_call_generic_slow(), 1); in GenerateMegamorphic()
1122 __ bind(&index_string); in GenerateMegamorphic()
1123 __ IndexFromHash(rbx, rcx); in GenerateMegamorphic()
1125 __ jmp(&index_smi); in GenerateMegamorphic()
1142 __ JumpIfSmi(rcx, &miss); in GenerateNormal()
1144 __ j(NegateCondition(cond), &miss); in GenerateNormal()
1146 __ bind(&miss); in GenerateNormal()
1164 __ JumpIfSmi(object, slow_case); in GenerateMappedArgumentsLookup()
1166 __ CmpObjectType(object, FIRST_JS_RECEIVER_TYPE, scratch1); in GenerateMappedArgumentsLookup()
1167 __ j(below, slow_case); in GenerateMappedArgumentsLookup()
1171 __ j(NegateCondition(check), slow_case); in GenerateMappedArgumentsLookup()
1176 __ movq(scratch1, FieldOperand(object, JSObject::kElementsOffset)); in GenerateMappedArgumentsLookup()
1177 __ CheckMap(scratch1, arguments_map, slow_case, DONT_DO_SMI_CHECK); in GenerateMappedArgumentsLookup()
1180 __ movq(scratch2, FieldOperand(scratch1, FixedArray::kLengthOffset)); in GenerateMappedArgumentsLookup()
1181 __ SmiSubConstant(scratch2, scratch2, Smi::FromInt(2)); in GenerateMappedArgumentsLookup()
1182 __ cmpq(key, scratch2); in GenerateMappedArgumentsLookup()
1183 __ j(greater_equal, unmapped_case); in GenerateMappedArgumentsLookup()
1187 __ SmiToInteger64(scratch3, key); in GenerateMappedArgumentsLookup()
1188 __ movq(scratch2, FieldOperand(scratch1, in GenerateMappedArgumentsLookup()
1192 __ CompareRoot(scratch2, Heap::kTheHoleValueRootIndex); in GenerateMappedArgumentsLookup()
1193 __ j(equal, unmapped_case); in GenerateMappedArgumentsLookup()
1198 __ movq(scratch1, FieldOperand(scratch1, FixedArray::kHeaderSize)); in GenerateMappedArgumentsLookup()
1199 __ SmiToInteger64(scratch3, scratch2); in GenerateMappedArgumentsLookup()
1218 __ movq(backing_store, FieldOperand(parameter_map, kBackingStoreOffset)); in GenerateUnmappedArgumentsLookup()
1220 __ CheckMap(backing_store, fixed_array_map, slow_case, DONT_DO_SMI_CHECK); in GenerateUnmappedArgumentsLookup()
1221 __ movq(scratch, FieldOperand(backing_store, FixedArray::kLengthOffset)); in GenerateUnmappedArgumentsLookup()
1222 __ cmpq(key, scratch); in GenerateUnmappedArgumentsLookup()
1223 __ j(greater_equal, slow_case); in GenerateUnmappedArgumentsLookup()
1224 __ SmiToInteger64(scratch, key); in GenerateUnmappedArgumentsLookup()
1242 __ movq(rax, mapped_location); in GenerateNonStrictArguments()
1243 __ Ret(); in GenerateNonStrictArguments()
1244 __ bind(¬in); in GenerateNonStrictArguments()
1248 __ CompareRoot(unmapped_location, Heap::kTheHoleValueRootIndex); in GenerateNonStrictArguments()
1249 __ j(equal, &slow); in GenerateNonStrictArguments()
1250 __ movq(rax, unmapped_location); in GenerateNonStrictArguments()
1251 __ Ret(); in GenerateNonStrictArguments()
1252 __ bind(&slow); in GenerateNonStrictArguments()
1267 __ movq(mapped_location, rax); in GenerateNonStrictArguments()
1268 __ lea(r9, mapped_location); in GenerateNonStrictArguments()
1269 __ movq(r8, rax); in GenerateNonStrictArguments()
1270 __ RecordWrite(rbx, in GenerateNonStrictArguments()
1276 __ Ret(); in GenerateNonStrictArguments()
1277 __ bind(¬in); in GenerateNonStrictArguments()
1281 __ movq(unmapped_location, rax); in GenerateNonStrictArguments()
1282 __ lea(r9, unmapped_location); in GenerateNonStrictArguments()
1283 __ movq(r8, rax); in GenerateNonStrictArguments()
1284 __ RecordWrite(rbx, in GenerateNonStrictArguments()
1290 __ Ret(); in GenerateNonStrictArguments()
1291 __ bind(&slow); in GenerateNonStrictArguments()
1308 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); in GenerateNonStrictArguments()
1311 __ movq(rdi, mapped_location); in GenerateNonStrictArguments()
1313 __ bind(¬in); in GenerateNonStrictArguments()
1317 __ CompareRoot(unmapped_location, Heap::kTheHoleValueRootIndex); in GenerateNonStrictArguments()
1318 __ j(equal, &slow); in GenerateNonStrictArguments()
1319 __ movq(rdi, unmapped_location); in GenerateNonStrictArguments()
1321 __ bind(&slow); in GenerateNonStrictArguments()
1356 __ ret(0); in GenerateNormal()
1359 __ bind(&miss); in GenerateNormal()
1372 __ IncrementCounter(counters->load_miss(), 1); in GenerateMiss()
1374 __ pop(rbx); in GenerateMiss()
1375 __ push(rax); // receiver in GenerateMiss()
1376 __ push(rcx); // name in GenerateMiss()
1377 __ push(rbx); // return address in GenerateMiss()
1382 __ TailCallExternalReference(ref, 2, 1); in GenerateMiss()
1394 __ IncrementCounter(counters->keyed_load_miss(), 1); in GenerateMiss()
1396 __ pop(rbx); in GenerateMiss()
1397 __ push(rdx); // receiver in GenerateMiss()
1398 __ push(rax); // name in GenerateMiss()
1399 __ push(rbx); // return address in GenerateMiss()
1406 __ TailCallExternalReference(ref, 2, 1); in GenerateMiss()
1417 __ pop(rbx); in GenerateRuntimeGetProperty()
1418 __ push(rdx); // receiver in GenerateRuntimeGetProperty()
1419 __ push(rax); // name in GenerateRuntimeGetProperty()
1420 __ push(rbx); // return address in GenerateRuntimeGetProperty()
1423 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); in GenerateRuntimeGetProperty()
1455 __ pop(rbx); in GenerateMiss()
1456 __ push(rdx); // receiver in GenerateMiss()
1457 __ push(rcx); // name in GenerateMiss()
1458 __ push(rax); // value in GenerateMiss()
1459 __ push(rbx); // return address in GenerateMiss()
1464 __ TailCallExternalReference(ref, 3, 1); in GenerateMiss()
1488 __ JumpIfSmi(receiver, &miss); in GenerateArrayLength()
1491 __ CmpObjectType(receiver, JS_ARRAY_TYPE, scratch); in GenerateArrayLength()
1492 __ j(not_equal, &miss); in GenerateArrayLength()
1497 __ movq(scratch, FieldOperand(receiver, JSArray::kElementsOffset)); in GenerateArrayLength()
1498 __ CmpObjectType(scratch, FIXED_ARRAY_TYPE, scratch); in GenerateArrayLength()
1499 __ j(not_equal, &miss); in GenerateArrayLength()
1503 __ movq(scratch, FieldOperand(receiver, JSArray::kPropertiesOffset)); in GenerateArrayLength()
1504 __ CompareRoot(FieldOperand(scratch, FixedArray::kMapOffset), in GenerateArrayLength()
1506 __ j(equal, &miss); in GenerateArrayLength()
1509 __ JumpIfNotSmi(value, &miss); in GenerateArrayLength()
1512 __ pop(scratch); in GenerateArrayLength()
1513 __ push(receiver); in GenerateArrayLength()
1514 __ push(value); in GenerateArrayLength()
1515 __ push(scratch); // return address in GenerateArrayLength()
1519 __ TailCallExternalReference(ref, 2, 1); in GenerateArrayLength()
1521 __ bind(&miss); in GenerateArrayLength()
1541 __ IncrementCounter(counters->store_normal_hit(), 1); in GenerateNormal()
1542 __ ret(0); in GenerateNormal()
1544 __ bind(&miss); in GenerateNormal()
1545 __ IncrementCounter(counters->store_normal_miss(), 1); in GenerateNormal()
1558 __ pop(rbx); in GenerateGlobalProxy()
1559 __ push(rdx); in GenerateGlobalProxy()
1560 __ push(rcx); in GenerateGlobalProxy()
1561 __ push(rax); in GenerateGlobalProxy()
1562 __ Push(Smi::FromInt(NONE)); // PropertyAttributes in GenerateGlobalProxy()
1563 __ Push(Smi::FromInt(strict_mode)); in GenerateGlobalProxy()
1564 __ push(rbx); // return address in GenerateGlobalProxy()
1567 __ TailCallRuntime(Runtime::kSetProperty, 5, 1); in GenerateGlobalProxy()
1580 __ pop(rbx); in GenerateRuntimeSetProperty()
1581 __ push(rdx); // receiver in GenerateRuntimeSetProperty()
1582 __ push(rcx); // key in GenerateRuntimeSetProperty()
1583 __ push(rax); // value in GenerateRuntimeSetProperty()
1584 __ Push(Smi::FromInt(NONE)); // PropertyAttributes in GenerateRuntimeSetProperty()
1585 __ Push(Smi::FromInt(strict_mode)); // Strict mode. in GenerateRuntimeSetProperty()
1586 __ push(rbx); // return address in GenerateRuntimeSetProperty()
1589 __ TailCallRuntime(Runtime::kSetProperty, 5, 1); in GenerateRuntimeSetProperty()
1601 __ pop(rbx); in GenerateSlow()
1602 __ push(rdx); // receiver in GenerateSlow()
1603 __ push(rcx); // key in GenerateSlow()
1604 __ push(rax); // value in GenerateSlow()
1605 __ push(rbx); // return address in GenerateSlow()
1609 __ TailCallExternalReference(ref, 3, 1); in GenerateSlow()
1621 __ pop(rbx); in GenerateMiss()
1622 __ push(rdx); // receiver in GenerateMiss()
1623 __ push(rcx); // key in GenerateMiss()
1624 __ push(rax); // value in GenerateMiss()
1625 __ push(rbx); // return address in GenerateMiss()
1632 __ TailCallExternalReference(ref, 3, 1); in GenerateMiss()
1646 __ movq(rax, rdx); in GenerateTransitionElementsSmiToDouble()
1647 __ Ret(); in GenerateTransitionElementsSmiToDouble()
1648 __ bind(&fail); in GenerateTransitionElementsSmiToDouble()
1651 __ pop(rbx); in GenerateTransitionElementsSmiToDouble()
1652 __ push(rdx); in GenerateTransitionElementsSmiToDouble()
1653 __ push(rbx); // return address in GenerateTransitionElementsSmiToDouble()
1654 __ TailCallRuntime(Runtime::kTransitionElementsSmiToDouble, 1, 1); in GenerateTransitionElementsSmiToDouble()
1669 __ movq(rax, rdx); in GenerateTransitionElementsDoubleToObject()
1670 __ Ret(); in GenerateTransitionElementsDoubleToObject()
1671 __ bind(&fail); in GenerateTransitionElementsDoubleToObject()
1674 __ pop(rbx); in GenerateTransitionElementsDoubleToObject()
1675 __ push(rdx); in GenerateTransitionElementsDoubleToObject()
1676 __ push(rbx); // return address in GenerateTransitionElementsDoubleToObject()
1677 __ TailCallRuntime(Runtime::kTransitionElementsDoubleToObject, 1, 1); in GenerateTransitionElementsDoubleToObject()
1681 #undef __