Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Side by Side Diff: src/arm/ic-arm.cc

Issue 68213024: Remove keyed load "force generic" miss case. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm/stub-cache-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 // The unmapped lookup expects that the parameter map is in r2. 820 // The unmapped lookup expects that the parameter map is in r2.
821 MemOperand unmapped_location = 821 MemOperand unmapped_location =
822 GenerateUnmappedArgumentsLookup(masm, r0, r2, r3, &slow); 822 GenerateUnmappedArgumentsLookup(masm, r0, r2, r3, &slow);
823 __ ldr(r2, unmapped_location); 823 __ ldr(r2, unmapped_location);
824 __ LoadRoot(r3, Heap::kTheHoleValueRootIndex); 824 __ LoadRoot(r3, Heap::kTheHoleValueRootIndex);
825 __ cmp(r2, r3); 825 __ cmp(r2, r3);
826 __ b(eq, &slow); 826 __ b(eq, &slow);
827 __ mov(r0, r2); 827 __ mov(r0, r2);
828 __ Ret(); 828 __ Ret();
829 __ bind(&slow); 829 __ bind(&slow);
830 GenerateMiss(masm, MISS); 830 GenerateMiss(masm);
831 } 831 }
832 832
833 833
834 void KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) { 834 void KeyedStoreIC::GenerateNonStrictArguments(MacroAssembler* masm) {
835 // ---------- S t a t e -------------- 835 // ---------- S t a t e --------------
836 // -- r0 : value 836 // -- r0 : value
837 // -- r1 : key 837 // -- r1 : key
838 // -- r2 : receiver 838 // -- r2 : receiver
839 // -- lr : return address 839 // -- lr : return address
840 // ----------------------------------- 840 // -----------------------------------
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 __ ldr(r1, unmapped_location); 880 __ ldr(r1, unmapped_location);
881 __ LoadRoot(r3, Heap::kTheHoleValueRootIndex); 881 __ LoadRoot(r3, Heap::kTheHoleValueRootIndex);
882 __ cmp(r1, r3); 882 __ cmp(r1, r3);
883 __ b(eq, &slow); 883 __ b(eq, &slow);
884 GenerateFunctionTailCall(masm, argc, &slow, r3); 884 GenerateFunctionTailCall(masm, argc, &slow, r3);
885 __ bind(&slow); 885 __ bind(&slow);
886 GenerateMiss(masm, argc); 886 GenerateMiss(masm, argc);
887 } 887 }
888 888
889 889
890 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm, ICMissMode miss_mode) { 890 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
891 // ---------- S t a t e -------------- 891 // ---------- S t a t e --------------
892 // -- lr : return address 892 // -- lr : return address
893 // -- r0 : key 893 // -- r0 : key
894 // -- r1 : receiver 894 // -- r1 : receiver
895 // ----------------------------------- 895 // -----------------------------------
896 Isolate* isolate = masm->isolate(); 896 Isolate* isolate = masm->isolate();
897 897
898 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, r3, r4); 898 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, r3, r4);
899 899
900 __ Push(r1, r0); 900 __ Push(r1, r0);
901 901
902 // Perform tail call to the entry. 902 // Perform tail call to the entry.
903 ExternalReference ref = miss_mode == MISS_FORCE_GENERIC 903 ExternalReference ref =
904 ? ExternalReference(IC_Utility(kKeyedLoadIC_MissForceGeneric), isolate) 904 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
905 : ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
906 905
907 __ TailCallExternalReference(ref, 2, 1); 906 __ TailCallExternalReference(ref, 2, 1);
908 } 907 }
909 908
910 909
911 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) { 910 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm) {
912 // ---------- S t a t e -------------- 911 // ---------- S t a t e --------------
913 // -- lr : return address 912 // -- lr : return address
914 // -- r0 : key 913 // -- r0 : key
915 // -- r1 : receiver 914 // -- r1 : receiver
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 &miss, // When not a number. 1112 &miss, // When not a number.
1114 &miss, // When index out of range. 1113 &miss, // When index out of range.
1115 STRING_INDEX_IS_ARRAY_INDEX); 1114 STRING_INDEX_IS_ARRAY_INDEX);
1116 char_at_generator.GenerateFast(masm); 1115 char_at_generator.GenerateFast(masm);
1117 __ Ret(); 1116 __ Ret();
1118 1117
1119 StubRuntimeCallHelper call_helper; 1118 StubRuntimeCallHelper call_helper;
1120 char_at_generator.GenerateSlow(masm, call_helper); 1119 char_at_generator.GenerateSlow(masm, call_helper);
1121 1120
1122 __ bind(&miss); 1121 __ bind(&miss);
1123 GenerateMiss(masm, MISS); 1122 GenerateMiss(masm);
1124 } 1123 }
1125 1124
1126 1125
1127 void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) { 1126 void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
1128 // ---------- S t a t e -------------- 1127 // ---------- S t a t e --------------
1129 // -- lr : return address 1128 // -- lr : return address
1130 // -- r0 : key 1129 // -- r0 : key
1131 // -- r1 : receiver 1130 // -- r1 : receiver
1132 // ----------------------------------- 1131 // -----------------------------------
1133 Label slow; 1132 Label slow;
(...skipping 19 matching lines...) Expand all
1153 __ Push(r1, r0); // Receiver, key. 1152 __ Push(r1, r0); // Receiver, key.
1154 1153
1155 // Perform tail call to the entry. 1154 // Perform tail call to the entry.
1156 __ TailCallExternalReference( 1155 __ TailCallExternalReference(
1157 ExternalReference(IC_Utility(kKeyedLoadPropertyWithInterceptor), 1156 ExternalReference(IC_Utility(kKeyedLoadPropertyWithInterceptor),
1158 masm->isolate()), 1157 masm->isolate()),
1159 2, 1158 2,
1160 1); 1159 1);
1161 1160
1162 __ bind(&slow); 1161 __ bind(&slow);
1163 GenerateMiss(masm, MISS); 1162 GenerateMiss(masm);
1164 } 1163 }
1165 1164
1166 1165
1167 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { 1166 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) {
1168 // ---------- S t a t e -------------- 1167 // ---------- S t a t e --------------
1169 // -- r0 : value 1168 // -- r0 : value
1170 // -- r1 : key 1169 // -- r1 : key
1171 // -- r2 : receiver 1170 // -- r2 : receiver
1172 // -- lr : return address 1171 // -- lr : return address
1173 // ----------------------------------- 1172 // -----------------------------------
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 } else { 1679 } else {
1681 ASSERT(Assembler::GetCondition(branch_instr) == ne); 1680 ASSERT(Assembler::GetCondition(branch_instr) == ne);
1682 patcher.EmitCondition(eq); 1681 patcher.EmitCondition(eq);
1683 } 1682 }
1684 } 1683 }
1685 1684
1686 1685
1687 } } // namespace v8::internal 1686 } } // namespace v8::internal
1688 1687
1689 #endif // V8_TARGET_ARCH_ARM 1688 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/arm/stub-cache-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698