Lines Matching refs:__
48 #define __ ACCESS_MASM(masm) macro
56 __ Branch(global_object, eq, type, Operand(JS_GLOBAL_OBJECT_TYPE)); in GenerateGlobalInstanceTypeCheck()
57 __ Branch(global_object, eq, type, Operand(JS_BUILTINS_OBJECT_TYPE)); in GenerateGlobalInstanceTypeCheck()
58 __ Branch(global_object, eq, type, Operand(JS_GLOBAL_PROXY_TYPE)); in GenerateGlobalInstanceTypeCheck()
79 __ JumpIfSmi(receiver, miss); in GenerateStringDictionaryReceiverCheck()
82 __ GetObjectType(receiver, scratch0, scratch1); in GenerateStringDictionaryReceiverCheck()
83 __ Branch(miss, lt, scratch1, Operand(FIRST_SPEC_OBJECT_TYPE)); in GenerateStringDictionaryReceiverCheck()
91 __ lbu(scratch1, FieldMemOperand(scratch0, Map::kBitFieldOffset)); in GenerateStringDictionaryReceiverCheck()
92 __ And(scratch1, scratch1, Operand((1 << Map::kIsAccessCheckNeeded) | in GenerateStringDictionaryReceiverCheck()
94 __ Branch(miss, ne, scratch1, Operand(zero_reg)); in GenerateStringDictionaryReceiverCheck()
96 __ lw(elements, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); in GenerateStringDictionaryReceiverCheck()
97 __ lw(scratch1, FieldMemOperand(elements, HeapObject::kMapOffset)); in GenerateStringDictionaryReceiverCheck()
98 __ LoadRoot(scratch0, Heap::kHashTableMapRootIndex); in GenerateStringDictionaryReceiverCheck()
99 __ Branch(miss, ne, scratch1, Operand(scratch0)); in GenerateStringDictionaryReceiverCheck()
142 __ bind(&done); // scratch2 == elements + 4 * index. in GenerateDictionaryLoad()
146 __ lw(scratch1, FieldMemOperand(scratch2, kDetailsOffset)); in GenerateDictionaryLoad()
147 __ And(at, in GenerateDictionaryLoad()
150 __ Branch(miss, ne, at, Operand(zero_reg)); in GenerateDictionaryLoad()
153 __ lw(result, in GenerateDictionaryLoad()
195 __ bind(&done); // scratch2 == elements + 4 * index. in GenerateDictionaryStore()
202 __ lw(scratch1, FieldMemOperand(scratch2, kDetailsOffset)); in GenerateDictionaryStore()
203 __ And(at, scratch1, Operand(kTypeAndReadOnlyMask)); in GenerateDictionaryStore()
204 __ Branch(miss, ne, at, Operand(zero_reg)); in GenerateDictionaryStore()
208 __ Addu(scratch2, scratch2, Operand(kValueOffset - kHeapObjectTag)); in GenerateDictionaryStore()
209 __ sw(value, MemOperand(scratch2)); in GenerateDictionaryStore()
212 __ mov(scratch1, value); in GenerateDictionaryStore()
213 __ RecordWrite( in GenerateDictionaryStore()
228 __ bind(&miss); in GenerateArrayLength()
245 __ bind(&miss); in GenerateStringLength()
260 __ bind(&miss); in GenerateFunctionPrototype()
274 __ JumpIfSmi(receiver, slow); in GenerateKeyedLoadReceiverCheck()
276 __ lw(map, FieldMemOperand(receiver, HeapObject::kMapOffset)); in GenerateKeyedLoadReceiverCheck()
278 __ lbu(scratch, FieldMemOperand(map, Map::kBitFieldOffset)); in GenerateKeyedLoadReceiverCheck()
279 __ And(at, scratch, Operand(KeyedLoadIC::kSlowCaseBitFieldMask)); in GenerateKeyedLoadReceiverCheck()
280 __ Branch(slow, ne, at, Operand(zero_reg)); in GenerateKeyedLoadReceiverCheck()
286 __ lbu(scratch, FieldMemOperand(map, Map::kInstanceTypeOffset)); in GenerateKeyedLoadReceiverCheck()
287 __ Branch(slow, lt, scratch, Operand(JS_OBJECT_TYPE)); in GenerateKeyedLoadReceiverCheck()
324 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateFastArrayLoad()
327 __ lw(scratch1, FieldMemOperand(elements, HeapObject::kMapOffset)); in GenerateFastArrayLoad()
328 __ LoadRoot(at, Heap::kFixedArrayMapRootIndex); in GenerateFastArrayLoad()
329 __ Branch(not_fast_array, ne, scratch1, Operand(at)); in GenerateFastArrayLoad()
331 __ AssertFastElements(elements); in GenerateFastArrayLoad()
335 __ lw(scratch1, FieldMemOperand(elements, FixedArray::kLengthOffset)); in GenerateFastArrayLoad()
336 __ Branch(out_of_range, hs, key, Operand(scratch1)); in GenerateFastArrayLoad()
339 __ Addu(scratch1, elements, in GenerateFastArrayLoad()
343 __ sll(at, key, kPointerSizeLog2 - kSmiTagSize); in GenerateFastArrayLoad()
344 __ addu(at, at, scratch1); in GenerateFastArrayLoad()
345 __ lw(scratch2, MemOperand(at)); in GenerateFastArrayLoad()
347 __ LoadRoot(at, Heap::kTheHoleValueRootIndex); in GenerateFastArrayLoad()
350 __ Branch(out_of_range, eq, scratch2, Operand(at)); in GenerateFastArrayLoad()
351 __ mov(result, scratch2); in GenerateFastArrayLoad()
365 __ GetObjectType(key, map, hash); in GenerateKeyStringCheck()
366 __ Branch(not_symbol, ge, hash, Operand(FIRST_NONSTRING_TYPE)); in GenerateKeyStringCheck()
369 __ lw(hash, FieldMemOperand(key, String::kHashFieldOffset)); in GenerateKeyStringCheck()
370 __ And(at, hash, Operand(String::kContainsCachedArrayIndexMask)); in GenerateKeyStringCheck()
371 __ Branch(index_string, eq, at, Operand(zero_reg)); in GenerateKeyStringCheck()
375 __ lbu(hash, FieldMemOperand(map, Map::kInstanceTypeOffset)); in GenerateKeyStringCheck()
377 __ And(at, hash, Operand(kIsSymbolMask)); in GenerateKeyStringCheck()
378 __ Branch(not_symbol, eq, at, Operand(zero_reg)); in GenerateKeyStringCheck()
412 __ JumpIfSmi(a1, &number, t1); in GenerateMonomorphicCacheProbe()
413 __ GetObjectType(a1, a3, a3); in GenerateMonomorphicCacheProbe()
414 __ Branch(&non_number, ne, a3, Operand(HEAP_NUMBER_TYPE)); in GenerateMonomorphicCacheProbe()
415 __ bind(&number); in GenerateMonomorphicCacheProbe()
418 __ Branch(&probe); in GenerateMonomorphicCacheProbe()
421 __ bind(&non_number); in GenerateMonomorphicCacheProbe()
422 __ Branch(&non_string, Ugreater_equal, a3, Operand(FIRST_NONSTRING_TYPE)); in GenerateMonomorphicCacheProbe()
425 __ Branch(&probe); in GenerateMonomorphicCacheProbe()
428 __ bind(&non_string); in GenerateMonomorphicCacheProbe()
429 __ LoadRoot(t0, Heap::kTrueValueRootIndex); in GenerateMonomorphicCacheProbe()
430 __ Branch(&boolean, eq, a1, Operand(t0)); in GenerateMonomorphicCacheProbe()
431 __ LoadRoot(t1, Heap::kFalseValueRootIndex); in GenerateMonomorphicCacheProbe()
432 __ Branch(&miss, ne, a1, Operand(t1)); in GenerateMonomorphicCacheProbe()
433 __ bind(&boolean); in GenerateMonomorphicCacheProbe()
438 __ bind(&probe); in GenerateMonomorphicCacheProbe()
442 __ bind(&miss); in GenerateMonomorphicCacheProbe()
453 __ JumpIfSmi(a1, miss); in GenerateFunctionTailCall()
456 __ GetObjectType(a1, scratch, scratch); in GenerateFunctionTailCall()
457 __ Branch(miss, ne, scratch, Operand(JS_FUNCTION_TYPE)); in GenerateFunctionTailCall()
461 __ InvokeFunction(a1, actual, JUMP_FUNCTION, in GenerateFunctionTailCall()
474 __ lw(a1, MemOperand(sp, argc * kPointerSize)); in GenerateNormal()
485 __ bind(&miss); in GenerateNormal()
500 __ IncrementCounter(isolate->counters()->call_miss(), 1, a3, t0); in GenerateMiss()
502 __ IncrementCounter(isolate->counters()->keyed_call_miss(), 1, a3, t0); in GenerateMiss()
506 __ lw(a3, MemOperand(sp, argc*kPointerSize)); in GenerateMiss()
512 __ Push(a3, a2); in GenerateMiss()
515 __ PrepareCEntryArgs(2); in GenerateMiss()
516 __ PrepareCEntryFunction(ExternalReference(IC_Utility(id), isolate)); in GenerateMiss()
519 __ CallStub(&stub); in GenerateMiss()
522 __ mov(a1, v0); in GenerateMiss()
529 __ lw(a2, MemOperand(sp, argc * kPointerSize)); in GenerateMiss()
530 __ JumpIfSmi(a2, &invoke); in GenerateMiss()
531 __ GetObjectType(a2, a3, a3); in GenerateMiss()
532 __ Branch(&global, eq, a3, Operand(JS_GLOBAL_OBJECT_TYPE)); in GenerateMiss()
533 __ Branch(&invoke, ne, a3, Operand(JS_BUILTINS_OBJECT_TYPE)); in GenerateMiss()
536 __ bind(&global); in GenerateMiss()
537 __ lw(a2, FieldMemOperand(a2, GlobalObject::kGlobalReceiverOffset)); in GenerateMiss()
538 __ sw(a2, MemOperand(sp, argc * kPointerSize)); in GenerateMiss()
539 __ bind(&invoke); in GenerateMiss()
546 __ InvokeFunction(a1, in GenerateMiss()
563 __ lw(a1, MemOperand(sp, argc * kPointerSize)); in GenerateMegamorphic()
576 __ lw(a1, MemOperand(sp, argc * kPointerSize)); in GenerateMegamorphic()
583 __ JumpIfNotSmi(a2, &check_string); in GenerateMegamorphic()
584 __ bind(&index_smi); in GenerateMegamorphic()
594 __ IncrementCounter(counters->keyed_call_generic_smi_fast(), 1, a0, a3); in GenerateMegamorphic()
596 __ bind(&do_call); in GenerateMegamorphic()
603 __ bind(&check_number_dictionary); in GenerateMegamorphic()
608 __ LoadRoot(at, Heap::kHashTableMapRootIndex); in GenerateMegamorphic()
609 __ Branch(&slow_load, ne, a3, Operand(at)); in GenerateMegamorphic()
610 __ sra(a0, a2, kSmiTagSize); in GenerateMegamorphic()
612 __ LoadFromNumberDictionary(&slow_load, t0, a2, a1, a0, a3, t1); in GenerateMegamorphic()
613 __ IncrementCounter(counters->keyed_call_generic_smi_dict(), 1, a0, a3); in GenerateMegamorphic()
614 __ jmp(&do_call); in GenerateMegamorphic()
616 __ bind(&slow_load); in GenerateMegamorphic()
619 __ IncrementCounter(counters->keyed_call_generic_slow_load(), 1, a0, a3); in GenerateMegamorphic()
622 __ push(a2); // Save the key. in GenerateMegamorphic()
623 __ Push(a1, a2); // Pass the receiver and the key. in GenerateMegamorphic()
624 __ CallRuntime(Runtime::kKeyedGetProperty, 2); in GenerateMegamorphic()
625 __ pop(a2); // Restore the key. in GenerateMegamorphic()
627 __ mov(a1, v0); in GenerateMegamorphic()
628 __ jmp(&do_call); in GenerateMegamorphic()
630 __ bind(&check_string); in GenerateMegamorphic()
640 __ lw(a0, FieldMemOperand(a1, JSObject::kPropertiesOffset)); in GenerateMegamorphic()
641 __ lw(a3, FieldMemOperand(a0, HeapObject::kMapOffset)); in GenerateMegamorphic()
642 __ LoadRoot(at, Heap::kHashTableMapRootIndex); in GenerateMegamorphic()
643 __ Branch(&lookup_monomorphic_cache, ne, a3, Operand(at)); in GenerateMegamorphic()
646 __ IncrementCounter(counters->keyed_call_generic_lookup_dict(), 1, a0, a3); in GenerateMegamorphic()
647 __ jmp(&do_call); in GenerateMegamorphic()
649 __ bind(&lookup_monomorphic_cache); in GenerateMegamorphic()
650 __ IncrementCounter(counters->keyed_call_generic_lookup_cache(), 1, a0, a3); in GenerateMegamorphic()
657 __ bind(&slow_call); in GenerateMegamorphic()
664 __ IncrementCounter(counters->keyed_call_generic_slow(), 1, a0, a3); in GenerateMegamorphic()
667 __ bind(&index_string); in GenerateMegamorphic()
668 __ IndexFromHash(a3, a2); in GenerateMegamorphic()
670 __ jmp(&index_smi); in GenerateMegamorphic()
682 __ JumpIfSmi(a2, &miss); in GenerateNormal()
683 __ IsObjectJSStringType(a2, a0, &miss); in GenerateNormal()
686 __ bind(&miss); in GenerateNormal()
725 __ Ret(); in GenerateNormal()
728 __ bind(&miss); in GenerateNormal()
742 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a3, t0); in GenerateMiss()
744 __ mov(a3, a0); in GenerateMiss()
745 __ Push(a3, a2); in GenerateMiss()
749 __ TailCallExternalReference(ref, 2, 1); in GenerateMiss()
764 __ JumpIfSmi(object, slow_case); in GenerateMappedArgumentsLookup()
766 __ GetObjectType(object, scratch1, scratch2); in GenerateMappedArgumentsLookup()
767 __ Branch(slow_case, lt, scratch2, Operand(FIRST_JS_RECEIVER_TYPE)); in GenerateMappedArgumentsLookup()
770 __ And(scratch1, key, Operand(0x80000001)); in GenerateMappedArgumentsLookup()
771 __ Branch(slow_case, ne, scratch1, Operand(zero_reg)); in GenerateMappedArgumentsLookup()
774 __ lw(scratch1, FieldMemOperand(object, JSObject::kElementsOffset)); in GenerateMappedArgumentsLookup()
775 __ CheckMap(scratch1, in GenerateMappedArgumentsLookup()
782 __ lw(scratch2, FieldMemOperand(scratch1, FixedArray::kLengthOffset)); in GenerateMappedArgumentsLookup()
783 __ Subu(scratch2, scratch2, Operand(Smi::FromInt(2))); in GenerateMappedArgumentsLookup()
784 __ Branch(unmapped_case, Ugreater_equal, key, Operand(scratch2)); in GenerateMappedArgumentsLookup()
790 __ li(scratch3, Operand(kPointerSize >> 1)); in GenerateMappedArgumentsLookup()
791 __ Mul(scratch3, key, scratch3); in GenerateMappedArgumentsLookup()
792 __ Addu(scratch3, scratch3, Operand(kOffset)); in GenerateMappedArgumentsLookup()
794 __ Addu(scratch2, scratch1, scratch3); in GenerateMappedArgumentsLookup()
795 __ lw(scratch2, MemOperand(scratch2)); in GenerateMappedArgumentsLookup()
796 __ LoadRoot(scratch3, Heap::kTheHoleValueRootIndex); in GenerateMappedArgumentsLookup()
797 __ Branch(unmapped_case, eq, scratch2, Operand(scratch3)); in GenerateMappedArgumentsLookup()
802 __ lw(scratch1, FieldMemOperand(scratch1, FixedArray::kHeaderSize)); in GenerateMappedArgumentsLookup()
803 __ li(scratch3, Operand(kPointerSize >> 1)); in GenerateMappedArgumentsLookup()
804 __ Mul(scratch3, scratch2, scratch3); in GenerateMappedArgumentsLookup()
805 __ Addu(scratch3, scratch3, Operand(Context::kHeaderSize - kHeapObjectTag)); in GenerateMappedArgumentsLookup()
806 __ Addu(scratch2, scratch1, scratch3); in GenerateMappedArgumentsLookup()
822 __ lw(backing_store, FieldMemOperand(parameter_map, kBackingStoreOffset)); in GenerateUnmappedArgumentsLookup()
823 __ CheckMap(backing_store, in GenerateUnmappedArgumentsLookup()
828 __ lw(scratch, FieldMemOperand(backing_store, FixedArray::kLengthOffset)); in GenerateUnmappedArgumentsLookup()
829 __ Branch(slow_case, Ugreater_equal, key, Operand(scratch)); in GenerateUnmappedArgumentsLookup()
830 __ li(scratch, Operand(kPointerSize >> 1)); in GenerateUnmappedArgumentsLookup()
831 __ Mul(scratch, key, scratch); in GenerateUnmappedArgumentsLookup()
832 __ Addu(scratch, in GenerateUnmappedArgumentsLookup()
835 __ Addu(scratch, backing_store, scratch); in GenerateUnmappedArgumentsLookup()
849 __ Ret(USE_DELAY_SLOT); in GenerateNonStrictArguments()
850 __ lw(v0, mapped_location); in GenerateNonStrictArguments()
851 __ bind(¬in); in GenerateNonStrictArguments()
855 __ lw(a2, unmapped_location); in GenerateNonStrictArguments()
856 __ LoadRoot(a3, Heap::kTheHoleValueRootIndex); in GenerateNonStrictArguments()
857 __ Branch(&slow, eq, a2, Operand(a3)); in GenerateNonStrictArguments()
858 __ Ret(USE_DELAY_SLOT); in GenerateNonStrictArguments()
859 __ mov(v0, a2); in GenerateNonStrictArguments()
860 __ bind(&slow); in GenerateNonStrictArguments()
876 __ sw(a0, mapped_location); in GenerateNonStrictArguments()
877 __ mov(t5, a0); in GenerateNonStrictArguments()
879 __ RecordWrite(a3, mapped_location.rm(), t5, in GenerateNonStrictArguments()
881 __ Ret(USE_DELAY_SLOT); in GenerateNonStrictArguments()
882 __ mov(v0, a0); // (In delay slot) return the value stored in v0. in GenerateNonStrictArguments()
883 __ bind(¬in); in GenerateNonStrictArguments()
888 __ sw(a0, unmapped_location); in GenerateNonStrictArguments()
889 __ mov(t5, a0); in GenerateNonStrictArguments()
891 __ RecordWrite(a3, unmapped_location.rm(), t5, in GenerateNonStrictArguments()
893 __ Ret(USE_DELAY_SLOT); in GenerateNonStrictArguments()
894 __ mov(v0, a0); // (In delay slot) return the value stored in v0. in GenerateNonStrictArguments()
895 __ bind(&slow); in GenerateNonStrictArguments()
908 __ lw(a1, MemOperand(sp, argc * kPointerSize)); in GenerateNonStrictArguments()
911 __ lw(a1, mapped_location); in GenerateNonStrictArguments()
913 __ bind(¬in); in GenerateNonStrictArguments()
917 __ lw(a1, unmapped_location); in GenerateNonStrictArguments()
918 __ LoadRoot(a3, Heap::kTheHoleValueRootIndex); in GenerateNonStrictArguments()
919 __ Branch(&slow, eq, a1, Operand(a3)); in GenerateNonStrictArguments()
921 __ bind(&slow); in GenerateNonStrictArguments()
937 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a3, t0); in GenerateMiss()
939 __ Push(a1, a0); in GenerateMiss()
946 __ TailCallExternalReference(ref, 2, 1); in GenerateMiss()
957 __ Push(a1, a0); in GenerateRuntimeGetProperty()
959 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); in GenerateRuntimeGetProperty()
978 __ JumpIfNotSmi(key, &check_string); in GenerateGeneric()
979 __ bind(&index_smi); in GenerateGeneric()
987 __ CheckFastElements(a2, a3, &check_number_dictionary); in GenerateGeneric()
992 __ IncrementCounter(isolate->counters()->keyed_load_generic_smi(), 1, a2, a3); in GenerateGeneric()
993 __ Ret(); in GenerateGeneric()
995 __ bind(&check_number_dictionary); in GenerateGeneric()
996 __ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateGeneric()
997 __ lw(a3, FieldMemOperand(t0, JSObject::kMapOffset)); in GenerateGeneric()
1003 __ LoadRoot(at, Heap::kHashTableMapRootIndex); in GenerateGeneric()
1004 __ Branch(&slow, ne, a3, Operand(at)); in GenerateGeneric()
1005 __ sra(a2, a0, kSmiTagSize); in GenerateGeneric()
1006 __ LoadFromNumberDictionary(&slow, t0, a0, v0, a2, a3, t1); in GenerateGeneric()
1007 __ Ret(); in GenerateGeneric()
1010 __ bind(&slow); in GenerateGeneric()
1011 __ IncrementCounter(isolate->counters()->keyed_load_generic_slow(), in GenerateGeneric()
1017 __ bind(&check_string); in GenerateGeneric()
1026 __ lw(a3, FieldMemOperand(a1, JSObject::kPropertiesOffset)); in GenerateGeneric()
1027 __ lw(t0, FieldMemOperand(a3, HeapObject::kMapOffset)); in GenerateGeneric()
1028 __ LoadRoot(at, Heap::kHashTableMapRootIndex); in GenerateGeneric()
1029 __ Branch(&probe_dictionary, eq, t0, Operand(at)); in GenerateGeneric()
1033 __ lw(a2, FieldMemOperand(a1, HeapObject::kMapOffset)); in GenerateGeneric()
1034 __ sra(a3, a2, KeyedLookupCache::kMapHashShift); in GenerateGeneric()
1035 __ lw(t0, FieldMemOperand(a0, String::kHashFieldOffset)); in GenerateGeneric()
1036 __ sra(at, t0, String::kHashShift); in GenerateGeneric()
1037 __ xor_(a3, a3, at); in GenerateGeneric()
1039 __ And(a3, a3, Operand(mask)); in GenerateGeneric()
1048 __ li(t0, Operand(cache_keys)); in GenerateGeneric()
1049 __ sll(at, a3, kPointerSizeLog2 + 1); in GenerateGeneric()
1050 __ addu(t0, t0, at); in GenerateGeneric()
1054 __ lw(t1, MemOperand(t0, kPointerSize * i * 2)); in GenerateGeneric()
1055 __ Branch(&try_next_entry, ne, a2, Operand(t1)); in GenerateGeneric()
1056 __ lw(t1, MemOperand(t0, kPointerSize * (i * 2 + 1))); in GenerateGeneric()
1057 __ Branch(&hit_on_nth_entry[i], eq, a0, Operand(t1)); in GenerateGeneric()
1058 __ bind(&try_next_entry); in GenerateGeneric()
1061 __ lw(t1, MemOperand(t0, kPointerSize * (kEntriesPerBucket - 1) * 2)); in GenerateGeneric()
1062 __ Branch(&slow, ne, a2, Operand(t1)); in GenerateGeneric()
1063 __ lw(t1, MemOperand(t0, kPointerSize * ((kEntriesPerBucket - 1) * 2 + 1))); in GenerateGeneric()
1064 __ Branch(&slow, ne, a0, Operand(t1)); in GenerateGeneric()
1076 __ bind(&hit_on_nth_entry[i]); in GenerateGeneric()
1077 __ li(t0, Operand(cache_field_offsets)); in GenerateGeneric()
1078 __ sll(at, a3, kPointerSizeLog2); in GenerateGeneric()
1079 __ addu(at, t0, at); in GenerateGeneric()
1080 __ lw(t1, MemOperand(at, kPointerSize * i)); in GenerateGeneric()
1081 __ lbu(t2, FieldMemOperand(a2, Map::kInObjectPropertiesOffset)); in GenerateGeneric()
1082 __ Subu(t1, t1, t2); in GenerateGeneric()
1083 __ Branch(&property_array_property, ge, t1, Operand(zero_reg)); in GenerateGeneric()
1085 __ Branch(&load_in_object_property); in GenerateGeneric()
1090 __ bind(&load_in_object_property); in GenerateGeneric()
1091 __ lbu(t2, FieldMemOperand(a2, Map::kInstanceSizeOffset)); in GenerateGeneric()
1092 __ addu(t2, t2, t1); // Index from start of object. in GenerateGeneric()
1093 __ Subu(a1, a1, Operand(kHeapObjectTag)); // Remove the heap tag. in GenerateGeneric()
1094 __ sll(at, t2, kPointerSizeLog2); in GenerateGeneric()
1095 __ addu(at, a1, at); in GenerateGeneric()
1096 __ lw(v0, MemOperand(at)); in GenerateGeneric()
1097 __ IncrementCounter(isolate->counters()->keyed_load_generic_lookup_cache(), in GenerateGeneric()
1101 __ Ret(); in GenerateGeneric()
1104 __ bind(&property_array_property); in GenerateGeneric()
1105 __ lw(a1, FieldMemOperand(a1, JSObject::kPropertiesOffset)); in GenerateGeneric()
1106 __ Addu(a1, a1, FixedArray::kHeaderSize - kHeapObjectTag); in GenerateGeneric()
1107 __ sll(t0, t1, kPointerSizeLog2); in GenerateGeneric()
1108 __ Addu(t0, t0, a1); in GenerateGeneric()
1109 __ lw(v0, MemOperand(t0)); in GenerateGeneric()
1110 __ IncrementCounter(isolate->counters()->keyed_load_generic_lookup_cache(), in GenerateGeneric()
1114 __ Ret(); in GenerateGeneric()
1119 __ bind(&probe_dictionary); in GenerateGeneric()
1123 __ lw(a2, FieldMemOperand(a1, HeapObject::kMapOffset)); in GenerateGeneric()
1124 __ lbu(a2, FieldMemOperand(a2, Map::kInstanceTypeOffset)); in GenerateGeneric()
1128 __ IncrementCounter(isolate->counters()->keyed_load_generic_symbol(), in GenerateGeneric()
1132 __ Ret(); in GenerateGeneric()
1134 __ bind(&index_string); in GenerateGeneric()
1135 __ IndexFromHash(a3, key); in GenerateGeneric()
1137 __ Branch(&index_smi); in GenerateGeneric()
1163 __ Ret(); in GenerateString()
1168 __ bind(&miss); in GenerateString()
1183 __ Push(a2, a1, a0); in GenerateRuntimeSetProperty()
1184 __ li(a1, Operand(Smi::FromInt(NONE))); // PropertyAttributes. in GenerateRuntimeSetProperty()
1185 __ li(a0, Operand(Smi::FromInt(strict_mode))); // Strict mode. in GenerateRuntimeSetProperty()
1186 __ Push(a1, a0); in GenerateRuntimeSetProperty()
1188 __ TailCallRuntime(Runtime::kSetProperty, 5, 1); in GenerateRuntimeSetProperty()
1216 __ JumpIfNotSmi(key, &slow); in GenerateGeneric()
1218 __ JumpIfSmi(receiver, &slow); in GenerateGeneric()
1220 __ lw(receiver_map, FieldMemOperand(receiver, HeapObject::kMapOffset)); in GenerateGeneric()
1223 __ lbu(t0, FieldMemOperand(receiver_map, Map::kBitFieldOffset)); in GenerateGeneric()
1224 __ And(t0, t0, Operand(1 << Map::kIsAccessCheckNeeded)); in GenerateGeneric()
1225 __ Branch(&slow, ne, t0, Operand(zero_reg)); in GenerateGeneric()
1227 __ lbu(t0, FieldMemOperand(receiver_map, Map::kInstanceTypeOffset)); in GenerateGeneric()
1228 __ Branch(&array, eq, t0, Operand(JS_ARRAY_TYPE)); in GenerateGeneric()
1230 __ Branch(&slow, lt, t0, Operand(FIRST_JS_OBJECT_TYPE)); in GenerateGeneric()
1233 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateGeneric()
1235 __ lw(t0, FieldMemOperand(elements, FixedArray::kLengthOffset)); in GenerateGeneric()
1236 __ Branch(&fast_object_with_map_check, lo, key, Operand(t0)); in GenerateGeneric()
1239 __ bind(&slow); in GenerateGeneric()
1249 __ bind(&extra); in GenerateGeneric()
1252 __ Branch(&slow, ne, key, Operand(t0)); in GenerateGeneric()
1255 __ lw(t0, FieldMemOperand(elements, FixedArray::kLengthOffset)); in GenerateGeneric()
1256 __ Branch(&slow, hs, key, Operand(t0)); in GenerateGeneric()
1257 __ lw(elements_map, FieldMemOperand(elements, HeapObject::kMapOffset)); in GenerateGeneric()
1258 __ Branch( in GenerateGeneric()
1263 __ Addu(t0, key, Operand(Smi::FromInt(1))); in GenerateGeneric()
1264 __ sw(t0, FieldMemOperand(receiver, JSArray::kLengthOffset)); in GenerateGeneric()
1265 __ Branch(&fast_object_without_map_check); in GenerateGeneric()
1267 __ bind(&check_if_double_array); in GenerateGeneric()
1268 __ Branch(&slow, ne, elements_map, Heap::kFixedDoubleArrayMapRootIndex); in GenerateGeneric()
1271 __ Addu(t0, key, Operand(Smi::FromInt(1))); in GenerateGeneric()
1272 __ sw(t0, FieldMemOperand(receiver, JSArray::kLengthOffset)); in GenerateGeneric()
1273 __ jmp(&fast_double_without_map_check); in GenerateGeneric()
1278 __ bind(&array); in GenerateGeneric()
1279 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateGeneric()
1282 __ lw(t0, FieldMemOperand(receiver, JSArray::kLengthOffset)); in GenerateGeneric()
1283 __ Branch(&extra, hs, key, Operand(t0)); in GenerateGeneric()
1286 __ bind(&fast_object_with_map_check); in GenerateGeneric()
1289 __ lw(elements_map, FieldMemOperand(elements, HeapObject::kMapOffset)); in GenerateGeneric()
1290 __ Branch(&fast_double_with_map_check, in GenerateGeneric()
1294 __ bind(&fast_object_without_map_check); in GenerateGeneric()
1297 __ JumpIfNotSmi(value, &non_smi_value); in GenerateGeneric()
1299 __ Addu(address, elements, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); in GenerateGeneric()
1300 __ sll(scratch_value, key, kPointerSizeLog2 - kSmiTagSize); in GenerateGeneric()
1301 __ Addu(address, address, scratch_value); in GenerateGeneric()
1302 __ sw(value, MemOperand(address)); in GenerateGeneric()
1303 __ Ret(USE_DELAY_SLOT); in GenerateGeneric()
1304 __ mov(v0, value); in GenerateGeneric()
1306 __ bind(&non_smi_value); in GenerateGeneric()
1308 __ CheckFastObjectElements(receiver_map, scratch_value, in GenerateGeneric()
1311 __ bind(&finish_object_store); in GenerateGeneric()
1312 __ Addu(address, elements, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); in GenerateGeneric()
1313 __ sll(scratch_value, key, kPointerSizeLog2 - kSmiTagSize); in GenerateGeneric()
1314 __ Addu(address, address, scratch_value); in GenerateGeneric()
1315 __ sw(value, MemOperand(address)); in GenerateGeneric()
1317 __ mov(v0, value); // Preserve the value which is returned. in GenerateGeneric()
1318 __ RecordWrite(elements, in GenerateGeneric()
1325 __ Ret(); in GenerateGeneric()
1327 __ bind(&fast_double_with_map_check); in GenerateGeneric()
1330 __ Branch(&slow, ne, elements_map, Heap::kFixedDoubleArrayMapRootIndex); in GenerateGeneric()
1331 __ bind(&fast_double_without_map_check); in GenerateGeneric()
1332 __ StoreNumberToDoubleElements(value, in GenerateGeneric()
1341 __ Ret(USE_DELAY_SLOT); in GenerateGeneric()
1342 __ mov(v0, value); in GenerateGeneric()
1344 __ bind(&transition_smi_elements); in GenerateGeneric()
1346 __ lw(t0, FieldMemOperand(value, HeapObject::kMapOffset)); in GenerateGeneric()
1347 __ LoadRoot(at, Heap::kHeapNumberMapRootIndex); in GenerateGeneric()
1348 __ Branch(&non_double_value, ne, t0, Operand(at)); in GenerateGeneric()
1352 __ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, in GenerateGeneric()
1359 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateGeneric()
1360 __ jmp(&fast_double_without_map_check); in GenerateGeneric()
1362 __ bind(&non_double_value); in GenerateGeneric()
1364 __ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, in GenerateGeneric()
1371 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateGeneric()
1372 __ jmp(&finish_object_store); in GenerateGeneric()
1374 __ bind(&transition_double_elements); in GenerateGeneric()
1378 __ LoadTransitionedArrayMapConditional(FAST_DOUBLE_ELEMENTS, in GenerateGeneric()
1385 __ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); in GenerateGeneric()
1386 __ jmp(&finish_object_store); in GenerateGeneric()
1399 __ JumpIfSmi(a1, &slow); in GenerateIndexedInterceptor()
1402 __ And(t0, a0, Operand(kSmiTagMask | kSmiSignMask)); in GenerateIndexedInterceptor()
1403 __ Branch(&slow, ne, t0, Operand(zero_reg)); in GenerateIndexedInterceptor()
1406 __ lw(a2, FieldMemOperand(a1, HeapObject::kMapOffset)); in GenerateIndexedInterceptor()
1410 __ lbu(a3, FieldMemOperand(a2, Map::kBitFieldOffset)); in GenerateIndexedInterceptor()
1411 __ And(a3, a3, Operand(kSlowCaseBitFieldMask)); in GenerateIndexedInterceptor()
1412 __ Branch(&slow, ne, a3, Operand(1 << Map::kHasIndexedInterceptor)); in GenerateIndexedInterceptor()
1414 __ Push(a1, a0); // Receiver, key. in GenerateIndexedInterceptor()
1417 __ TailCallExternalReference(ExternalReference( in GenerateIndexedInterceptor()
1420 __ bind(&slow); in GenerateIndexedInterceptor()
1434 __ Push(a2, a1, a0); in GenerateMiss()
1440 __ TailCallExternalReference(ref, 3, 1); in GenerateMiss()
1454 __ Push(a2, a1, a0); in GenerateSlow()
1461 __ TailCallExternalReference(ref, 3, 1); in GenerateSlow()
1475 __ Ret(USE_DELAY_SLOT); in GenerateTransitionElementsSmiToDouble()
1476 __ mov(v0, a2); in GenerateTransitionElementsSmiToDouble()
1477 __ bind(&fail); in GenerateTransitionElementsSmiToDouble()
1480 __ push(a2); in GenerateTransitionElementsSmiToDouble()
1481 __ TailCallRuntime(Runtime::kTransitionElementsSmiToDouble, 1, 1); in GenerateTransitionElementsSmiToDouble()
1496 __ Ret(USE_DELAY_SLOT); in GenerateTransitionElementsDoubleToObject()
1497 __ mov(v0, a2); in GenerateTransitionElementsDoubleToObject()
1498 __ bind(&fail); in GenerateTransitionElementsDoubleToObject()
1501 __ push(a2); in GenerateTransitionElementsDoubleToObject()
1502 __ TailCallRuntime(Runtime::kTransitionElementsDoubleToObject, 1, 1); in GenerateTransitionElementsDoubleToObject()
1534 __ Push(a1, a2, a0); in GenerateMiss()
1538 __ TailCallExternalReference(ref, 3, 1); in GenerateMiss()
1562 __ JumpIfSmi(receiver, &miss); in GenerateArrayLength()
1565 __ GetObjectType(receiver, scratch, scratch); in GenerateArrayLength()
1566 __ Branch(&miss, ne, scratch, Operand(JS_ARRAY_TYPE)); in GenerateArrayLength()
1571 __ lw(scratch, FieldMemOperand(receiver, JSArray::kElementsOffset)); in GenerateArrayLength()
1572 __ GetObjectType(scratch, scratch, scratch); in GenerateArrayLength()
1573 __ Branch(&miss, ne, scratch, Operand(FIXED_ARRAY_TYPE)); in GenerateArrayLength()
1577 __ lw(scratch, FieldMemOperand(receiver, JSArray::kPropertiesOffset)); in GenerateArrayLength()
1578 __ lw(scratch, FieldMemOperand(scratch, FixedArray::kMapOffset)); in GenerateArrayLength()
1579 __ LoadRoot(at, Heap::kHashTableMapRootIndex); in GenerateArrayLength()
1580 __ Branch(&miss, eq, scratch, Operand(at)); in GenerateArrayLength()
1583 __ JumpIfNotSmi(value, &miss); in GenerateArrayLength()
1586 __ Push(receiver, value); in GenerateArrayLength()
1590 __ TailCallExternalReference(ref, 2, 1); in GenerateArrayLength()
1592 __ bind(&miss); in GenerateArrayLength()
1611 __ IncrementCounter(counters->store_normal_hit(), 1, t0, t1); in GenerateNormal()
1612 __ Ret(); in GenerateNormal()
1614 __ bind(&miss); in GenerateNormal()
1615 __ IncrementCounter(counters->store_normal_miss(), 1, t0, t1); in GenerateNormal()
1629 __ Push(a1, a2, a0); in GenerateGlobalProxy()
1631 __ li(a1, Operand(Smi::FromInt(NONE))); // PropertyAttributes. in GenerateGlobalProxy()
1632 __ li(a0, Operand(Smi::FromInt(strict_mode))); in GenerateGlobalProxy()
1633 __ Push(a1, a0); in GenerateGlobalProxy()
1636 __ TailCallRuntime(Runtime::kSetProperty, 5, 1); in GenerateGlobalProxy()
1640 #undef __