Index: src/ic/arm64/ic-arm64.cc |
diff --git a/src/ic/arm64/ic-arm64.cc b/src/ic/arm64/ic-arm64.cc |
index 4804a23be7055415a1e629cdfe57ed80879a2c59..1a42dfbd2586f6d918a39efdb119602e66c6b6fc 100644 |
--- a/src/ic/arm64/ic-arm64.cc |
+++ b/src/ic/arm64/ic-arm64.cc |
@@ -357,9 +357,17 @@ void LoadIC::GenerateMiss(MacroAssembler* masm) { |
__ IncrementCounter(isolate->counters()->load_miss(), 1, x3, x4); |
// Perform tail call to the entry. |
- __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); |
+ if (FLAG_vector_ics) { |
+ __ Push(VectorLoadICDescriptor::ReceiverRegister(), |
+ VectorLoadICDescriptor::NameRegister(), |
+ VectorLoadICDescriptor::SlotRegister(), |
+ VectorLoadICDescriptor::VectorRegister()); |
+ } else { |
+ __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); |
+ } |
ExternalReference ref = ExternalReference(IC_Utility(kLoadIC_Miss), isolate); |
- __ TailCallExternalReference(ref, 2, 1); |
+ int arg_count = FLAG_vector_ics ? 4 : 2; |
+ __ TailCallExternalReference(ref, arg_count, 1); |
} |
@@ -422,13 +430,20 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { |
__ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, x10, x11); |
- __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); |
+ if (FLAG_vector_ics) { |
+ __ Push(VectorLoadICDescriptor::ReceiverRegister(), |
+ VectorLoadICDescriptor::NameRegister(), |
+ VectorLoadICDescriptor::SlotRegister(), |
+ VectorLoadICDescriptor::VectorRegister()); |
+ } else { |
+ __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); |
+ } |
// Perform tail call to the entry. |
ExternalReference ref = |
ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate); |
- |
- __ TailCallExternalReference(ref, 2, 1); |
+ int arg_count = FLAG_vector_ics ? 4 : 2; |
+ __ TailCallExternalReference(ref, arg_count, 1); |
} |