| Index: src/x87/macro-assembler-x87.cc
|
| diff --git a/src/x87/macro-assembler-x87.cc b/src/x87/macro-assembler-x87.cc
|
| index d2b1742623195775e182b76cfa1ead3ffde8f462..cc27f1c87648ae1fcaf58e637d0e772b23264265 100644
|
| --- a/src/x87/macro-assembler-x87.cc
|
| +++ b/src/x87/macro-assembler-x87.cc
|
| @@ -1870,10 +1870,10 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
| Label invoke;
|
| if (expected.is_immediate()) {
|
| DCHECK(actual.is_immediate());
|
| + mov(eax, actual.immediate());
|
| if (expected.immediate() == actual.immediate()) {
|
| definitely_matches = true;
|
| } else {
|
| - mov(eax, actual.immediate());
|
| const int sentinel = SharedFunctionInfo::kDontAdaptArgumentsSentinel;
|
| if (expected.immediate() == sentinel) {
|
| // Don't worry about adapting arguments for builtins that
|
| @@ -1891,10 +1891,10 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
| // Expected is in register, actual is immediate. This is the
|
| // case when we invoke function values without going through the
|
| // IC mechanism.
|
| + mov(eax, actual.immediate());
|
| cmp(expected.reg(), actual.immediate());
|
| j(equal, &invoke);
|
| DCHECK(expected.reg().is(ebx));
|
| - mov(eax, actual.immediate());
|
| } else if (!expected.reg().is(actual.reg())) {
|
| // Both expected and actual are in (different) registers. This
|
| // is the case when we invoke functions using call and apply.
|
| @@ -1902,6 +1902,8 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
| j(equal, &invoke);
|
| DCHECK(actual.reg().is(eax));
|
| DCHECK(expected.reg().is(ebx));
|
| + } else {
|
| + Move(eax, actual.reg());
|
| }
|
| }
|
|
|
|
|