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

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

Issue 496283004: Move "slow handler" compiler code to handler-compiler (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 months 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 | « src/ic/arm64/handler-compiler-arm64.cc ('k') | src/ic/handler-compiler.h » ('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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/ic/ic.h" 10 #include "src/ic/ic.h"
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 768
769 // Push receiver, key and value for runtime call. 769 // Push receiver, key and value for runtime call.
770 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); 770 __ Push(ReceiverRegister(), NameRegister(), ValueRegister());
771 771
772 ExternalReference ref = 772 ExternalReference ref =
773 ExternalReference(IC_Utility(kKeyedStoreIC_Miss), masm->isolate()); 773 ExternalReference(IC_Utility(kKeyedStoreIC_Miss), masm->isolate());
774 __ TailCallExternalReference(ref, 3, 1); 774 __ TailCallExternalReference(ref, 3, 1);
775 } 775 }
776 776
777 777
778 void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) {
779 ASM_LOCATION("KeyedStoreIC::GenerateSlow");
780
781 // Push receiver, key and value for runtime call.
782 __ Push(ReceiverRegister(), NameRegister(), ValueRegister());
783
784 // The slow case calls into the runtime to complete the store without causing
785 // an IC miss that would otherwise cause a transition to the generic stub.
786 ExternalReference ref =
787 ExternalReference(IC_Utility(kKeyedStoreIC_Slow), masm->isolate());
788 __ TailCallExternalReference(ref, 3, 1);
789 }
790
791
792 static void KeyedStoreGenerateGenericHelper( 778 static void KeyedStoreGenerateGenericHelper(
793 MacroAssembler* masm, Label* fast_object, Label* fast_double, Label* slow, 779 MacroAssembler* masm, Label* fast_object, Label* fast_double, Label* slow,
794 KeyedStoreCheckMap check_map, KeyedStoreIncrementLength increment_length, 780 KeyedStoreCheckMap check_map, KeyedStoreIncrementLength increment_length,
795 Register value, Register key, Register receiver, Register receiver_map, 781 Register value, Register key, Register receiver, Register receiver_map,
796 Register elements_map, Register elements) { 782 Register elements_map, Register elements) {
797 DCHECK(!AreAliased(value, key, receiver, receiver_map, elements_map, elements, 783 DCHECK(!AreAliased(value, key, receiver, receiver_map, elements_map, elements,
798 x10, x11)); 784 x10, x11));
799 785
800 Label transition_smi_elements; 786 Label transition_smi_elements;
801 Label transition_double_elements; 787 Label transition_double_elements;
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 __ IncrementCounter(counters->store_normal_hit(), 1, x4, x5); 1048 __ IncrementCounter(counters->store_normal_hit(), 1, x4, x5);
1063 __ Ret(); 1049 __ Ret();
1064 1050
1065 // Cache miss: Jump to runtime. 1051 // Cache miss: Jump to runtime.
1066 __ Bind(&miss); 1052 __ Bind(&miss);
1067 __ IncrementCounter(counters->store_normal_miss(), 1, x4, x5); 1053 __ IncrementCounter(counters->store_normal_miss(), 1, x4, x5);
1068 GenerateMiss(masm); 1054 GenerateMiss(masm);
1069 } 1055 }
1070 1056
1071 1057
1072 void StoreIC::GenerateSlow(MacroAssembler* masm) {
1073 // ---------- S t a t e --------------
1074 // -- x0 : value
1075 // -- x1 : receiver
1076 // -- x2 : name
1077 // -- lr : return address
1078 // -----------------------------------
1079
1080 // Push receiver, name and value for runtime call.
1081 __ Push(ReceiverRegister(), NameRegister(), ValueRegister());
1082
1083 // The slow case calls into the runtime to complete the store without causing
1084 // an IC miss that would otherwise cause a transition to the generic stub.
1085 ExternalReference ref =
1086 ExternalReference(IC_Utility(kStoreIC_Slow), masm->isolate());
1087 __ TailCallExternalReference(ref, 3, 1);
1088 }
1089
1090
1091 Condition CompareIC::ComputeCondition(Token::Value op) { 1058 Condition CompareIC::ComputeCondition(Token::Value op) {
1092 switch (op) { 1059 switch (op) {
1093 case Token::EQ_STRICT: 1060 case Token::EQ_STRICT:
1094 case Token::EQ: 1061 case Token::EQ:
1095 return eq; 1062 return eq;
1096 case Token::LT: 1063 case Token::LT:
1097 return lt; 1064 return lt;
1098 case Token::GT: 1065 case Token::GT:
1099 return gt; 1066 return gt;
1100 case Token::LTE: 1067 case Token::LTE:
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 } else { 1137 } else {
1171 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ); 1138 DCHECK(to_patch->Mask(TestBranchMask) == TBNZ);
1172 // This is JumpIfSmi(smi_reg, branch_imm). 1139 // This is JumpIfSmi(smi_reg, branch_imm).
1173 patcher.tbz(smi_reg, 0, branch_imm); 1140 patcher.tbz(smi_reg, 0, branch_imm);
1174 } 1141 }
1175 } 1142 }
1176 } 1143 }
1177 } // namespace v8::internal 1144 } // namespace v8::internal
1178 1145
1179 #endif // V8_TARGET_ARCH_ARM64 1146 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/ic/arm64/handler-compiler-arm64.cc ('k') | src/ic/handler-compiler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698