Index: src/x87/interface-descriptors-x87.cc |
diff --git a/src/x87/interface-descriptors-x87.cc b/src/x87/interface-descriptors-x87.cc |
index 333564e09995afffc834146186bd7a14b4567cf8..a71c269f860065bc310cea4bd6442b51e02fa08e 100644 |
--- a/src/x87/interface-descriptors-x87.cc |
+++ b/src/x87/interface-descriptors-x87.cc |
@@ -32,7 +32,9 @@ const Register VectorStoreICTrampolineDescriptor::SlotRegister() { return edi; } |
const Register VectorStoreICDescriptor::VectorRegister() { return ebx; } |
-const Register StoreTransitionDescriptor::MapRegister() { return ebx; } |
+const Register StoreTransitionDescriptor::MapRegister() { |
+ return FLAG_vector_stores ? no_reg : ebx; |
+} |
const Register LoadGlobalViaContextDescriptor::DepthRegister() { return edx; } |
@@ -69,6 +71,20 @@ const Register GrowArrayElementsDescriptor::ObjectRegister() { return eax; } |
const Register GrowArrayElementsDescriptor::KeyRegister() { return ebx; } |
+void StoreTransitionDescriptor::InitializePlatformSpecific( |
+ CallInterfaceDescriptorData* data) { |
+ Register registers[] = {ReceiverRegister(), NameRegister(), ValueRegister(), |
+ MapRegister()}; |
+ |
+ // When FLAG_vector_stores is true, we want to pass the map register on the |
+ // stack instead of in a register. |
+ DCHECK(FLAG_vector_stores || !MapRegister().is(no_reg)); |
+ |
+ int register_count = FLAG_vector_stores ? 3 : 4; |
+ data->InitializePlatformSpecific(register_count, registers); |
+} |
+ |
+ |
void FastNewClosureDescriptor::InitializePlatformSpecific( |
CallInterfaceDescriptorData* data) { |
Register registers[] = {ebx}; |