Index: src/ic/ia32/ic-compiler-ia32.cc |
diff --git a/src/ic/ia32/ic-compiler-ia32.cc b/src/ic/ia32/ic-compiler-ia32.cc |
index 3dcc625945c048ef8ea8aa533c2aeb5c4cfe0d19..a52f04689aa52821adfa229d067b3b903f3ea768 100644 |
--- a/src/ic/ia32/ic-compiler-ia32.cc |
+++ b/src/ic/ia32/ic-compiler-ia32.cc |
@@ -15,16 +15,20 @@ namespace internal { |
void PropertyICCompiler::GenerateRuntimeSetProperty( |
MacroAssembler* masm, LanguageMode language_mode) { |
- STATIC_ASSERT(StoreWithVectorDescriptor::kStackArgumentsCount == 3); |
- // Current stack layout: |
- // - esp[12] -- value |
- // - esp[8] -- slot |
- // - esp[4] -- vector |
- // - esp[0] -- return address |
- |
- __ mov(Operand(esp, 12), StoreDescriptor::ReceiverRegister()); |
- __ mov(Operand(esp, 8), StoreDescriptor::NameRegister()); |
- __ mov(Operand(esp, 4), StoreDescriptor::ValueRegister()); |
+ typedef StoreWithVectorDescriptor Descriptor; |
+ STATIC_ASSERT(Descriptor::kStackArgumentsCount == 3); |
+ // ----------- S t a t e ------------- |
+ // -- esp[12] : value |
+ // -- esp[8] : slot |
+ // -- esp[4] : vector |
+ // -- esp[0] : return address |
+ // ----------------------------------- |
+ __ LoadParameterFromStack<Descriptor>(Descriptor::ValueRegister(), |
+ Descriptor::kValue); |
+ |
+ __ mov(Operand(esp, 12), Descriptor::ReceiverRegister()); |
+ __ mov(Operand(esp, 8), Descriptor::NameRegister()); |
+ __ mov(Operand(esp, 4), Descriptor::ValueRegister()); |
__ pop(ebx); |
__ push(Immediate(Smi::FromInt(language_mode))); |
__ push(ebx); // return address |