| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 | 5 |
| 6 #include "src/v8.h" | 6 #include "src/v8.h" |
| 7 | 7 |
| 8 #if V8_TARGET_ARCH_MIPS64 | 8 #if V8_TARGET_ARCH_MIPS64 |
| 9 | 9 |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 981 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { | 981 void KeyedStoreIC::GenerateMiss(MacroAssembler* masm) { |
| 982 // Push receiver, key and value for runtime call. | 982 // Push receiver, key and value for runtime call. |
| 983 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); | 983 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); |
| 984 | 984 |
| 985 ExternalReference ref = | 985 ExternalReference ref = |
| 986 ExternalReference(IC_Utility(kKeyedStoreIC_Miss), masm->isolate()); | 986 ExternalReference(IC_Utility(kKeyedStoreIC_Miss), masm->isolate()); |
| 987 __ TailCallExternalReference(ref, 3, 1); | 987 __ TailCallExternalReference(ref, 3, 1); |
| 988 } | 988 } |
| 989 | 989 |
| 990 | 990 |
| 991 void StoreIC::GenerateSlow(MacroAssembler* masm) { | |
| 992 // Push receiver, key and value for runtime call. | |
| 993 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); | |
| 994 | |
| 995 // The slow case calls into the runtime to complete the store without causing | |
| 996 // an IC miss that would otherwise cause a transition to the generic stub. | |
| 997 ExternalReference ref = | |
| 998 ExternalReference(IC_Utility(kStoreIC_Slow), masm->isolate()); | |
| 999 __ TailCallExternalReference(ref, 3, 1); | |
| 1000 } | |
| 1001 | |
| 1002 | |
| 1003 void KeyedStoreIC::GenerateSlow(MacroAssembler* masm) { | |
| 1004 // Push receiver, key and value for runtime call. | |
| 1005 // We can't use MultiPush as the order of the registers is important. | |
| 1006 __ Push(ReceiverRegister(), NameRegister(), ValueRegister()); | |
| 1007 // The slow case calls into the runtime to complete the store without causing | |
| 1008 // an IC miss that would otherwise cause a transition to the generic stub. | |
| 1009 ExternalReference ref = | |
| 1010 ExternalReference(IC_Utility(kKeyedStoreIC_Slow), masm->isolate()); | |
| 1011 | |
| 1012 __ TailCallExternalReference(ref, 3, 1); | |
| 1013 } | |
| 1014 | |
| 1015 | |
| 1016 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { | 991 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { |
| 1017 Register receiver = ReceiverRegister(); | 992 Register receiver = ReceiverRegister(); |
| 1018 Register name = NameRegister(); | 993 Register name = NameRegister(); |
| 1019 DCHECK(receiver.is(a1)); | 994 DCHECK(receiver.is(a1)); |
| 1020 DCHECK(name.is(a2)); | 995 DCHECK(name.is(a2)); |
| 1021 DCHECK(ValueRegister().is(a0)); | 996 DCHECK(ValueRegister().is(a0)); |
| 1022 | 997 |
| 1023 // Get the receiver from the stack and probe the stub cache. | 998 // Get the receiver from the stack and probe the stub cache. |
| 1024 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( | 999 Code::Flags flags = Code::RemoveTypeAndHolderFromFlags( |
| 1025 Code::ComputeHandlerFlags(Code::STORE_IC)); | 1000 Code::ComputeHandlerFlags(Code::STORE_IC)); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 patcher.ChangeBranchCondition(ne); | 1128 patcher.ChangeBranchCondition(ne); |
| 1154 } else { | 1129 } else { |
| 1155 DCHECK(Assembler::IsBne(branch_instr)); | 1130 DCHECK(Assembler::IsBne(branch_instr)); |
| 1156 patcher.ChangeBranchCondition(eq); | 1131 patcher.ChangeBranchCondition(eq); |
| 1157 } | 1132 } |
| 1158 } | 1133 } |
| 1159 } | 1134 } |
| 1160 } // namespace v8::internal | 1135 } // namespace v8::internal |
| 1161 | 1136 |
| 1162 #endif // V8_TARGET_ARCH_MIPS64 | 1137 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |