Index: src/ic/x87/handler-compiler-x87.cc |
diff --git a/src/ic/x87/handler-compiler-x87.cc b/src/ic/x87/handler-compiler-x87.cc |
index d9f7e8012d9cb7c3bd559505cc3f20c9c84a5cf3..8a25e235f91b16a6826fc1788ba97b9e2532dd93 100644 |
--- a/src/ic/x87/handler-compiler-x87.cc |
+++ b/src/ic/x87/handler-compiler-x87.cc |
@@ -362,18 +362,16 @@ void NamedStoreHandlerCompiler::GenerateRestoreName(Handle<Name> name) { |
} |
-void NamedStoreHandlerCompiler::GeneratePushMap(Register map_reg, |
- Register scratch) { |
- // current after GeneratePushMap |
- // ------------------------------------------------- |
- // ret addr slot |
- // vector vector |
- // sp -> slot map |
- // sp -> ret addr |
- // |
- __ xchg(map_reg, Operand(esp, 0)); |
- __ xchg(map_reg, Operand(esp, 2 * kPointerSize)); |
- __ push(map_reg); |
+void NamedStoreHandlerCompiler::RearrangeVectorAndSlot( |
+ Register current_map, Register destination_map) { |
+ DCHECK(destination_map.is(StoreTransitionHelper::MapRegister())); |
+ DCHECK(current_map.is(StoreTransitionHelper::VectorRegister())); |
+ ExternalReference virtual_slot = |
+ ExternalReference::virtual_slot_register(isolate()); |
+ __ mov(destination_map, current_map); |
+ __ pop(current_map); |
+ __ mov(Operand::StaticVariable(virtual_slot), current_map); |
+ __ pop(current_map); // put vector in place. |
} |