| Index: src/ic/x87/ic-compiler-x87.cc
|
| diff --git a/src/ic/x87/ic-compiler-x87.cc b/src/ic/x87/ic-compiler-x87.cc
|
| index 9edf63b7224acf247d69d08f5ae29d306599929f..b1b04a2d51c52301f20943e77a868b4a5cb03cf0 100644
|
| --- a/src/ic/x87/ic-compiler-x87.cc
|
| +++ b/src/ic/x87/ic-compiler-x87.cc
|
| @@ -15,14 +15,17 @@ namespace internal {
|
|
|
| void PropertyICCompiler::GenerateRuntimeSetProperty(
|
| MacroAssembler* masm, LanguageMode language_mode) {
|
| - // Return address is on the stack.
|
| - DCHECK(!ebx.is(StoreDescriptor::ReceiverRegister()) &&
|
| - !ebx.is(StoreDescriptor::NameRegister()) &&
|
| - !ebx.is(StoreDescriptor::ValueRegister()));
|
| + 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());
|
| __ pop(ebx);
|
| - __ push(StoreDescriptor::ReceiverRegister());
|
| - __ push(StoreDescriptor::NameRegister());
|
| - __ push(StoreDescriptor::ValueRegister());
|
| __ push(Immediate(Smi::FromInt(language_mode)));
|
| __ push(ebx); // return address
|
|
|
|
|