Index: src/ic/ia32/handler-compiler-ia32.cc |
diff --git a/src/ic/ia32/handler-compiler-ia32.cc b/src/ic/ia32/handler-compiler-ia32.cc |
index 1d019092c7b91812cda2ad26c38e9f86d2625d18..2aff4847e27a35239785753477c82a8cbb50835a 100644 |
--- a/src/ic/ia32/handler-compiler-ia32.cc |
+++ b/src/ic/ia32/handler-compiler-ia32.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. |
} |