Chromium Code Reviews| Index: src/ia32/macro-assembler-ia32.cc |
| diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
| index 12daec8285c79fea84149f25660fb1f593978118..cc2fd17efff7bf7a9395f1d13a596795766a3f4a 100644 |
| --- a/src/ia32/macro-assembler-ia32.cc |
| +++ b/src/ia32/macro-assembler-ia32.cc |
| @@ -1031,9 +1031,10 @@ void MacroAssembler::EnterFrame(StackFrame::Type type, |
| void MacroAssembler::EnterFrame(StackFrame::Type type) { |
| push(ebp); |
| mov(ebp, esp); |
| - push(esi); |
| push(Immediate(Smi::FromInt(type))); |
| - push(Immediate(CodeObject())); |
| + if (type == StackFrame::INTERNAL) { |
| + push(Immediate(CodeObject())); |
| + } |
| if (emit_debug_code()) { |
| cmp(Operand(esp, 0), Immediate(isolate()->factory()->undefined_value())); |
| Check(not_equal, kCodeObjectNotProperlyPatched); |
| @@ -1043,7 +1044,7 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) { |
| void MacroAssembler::LeaveFrame(StackFrame::Type type) { |
| if (emit_debug_code()) { |
| - cmp(Operand(ebp, StandardFrameConstants::kMarkerOffset), |
| + cmp(Operand(ebp, CommonFrameConstants::kContextOrFrameTypeOffset), |
| Immediate(Smi::FromInt(type))); |
| Check(equal, kStackFrameTypesMustMatch); |
| } |
| @@ -1060,8 +1061,10 @@ void MacroAssembler::EnterExitFramePrologue() { |
| mov(ebp, esp); |
| // Reserve room for entry stack pointer and push the code object. |
| - DCHECK(ExitFrameConstants::kSPOffset == -1 * kPointerSize); |
| + push(Immediate(Smi::FromInt(StackFrame::EXIT))); |
| + DCHECK_EQ(-2 * kPointerSize, ExitFrameConstants::kSPOffset); |
| push(Immediate(0)); // Saved entry sp, patched before call. |
| + DCHECK(ExitFrameConstants::kCodeOffset == -3 * kPointerSize); |
|
Michael Starzinger
2016/02/23 10:57:33
nit: DCHECK_EQ
danno
2016/03/07 09:33:38
Done.
|
| push(Immediate(CodeObject())); // Accessed from ExitFrame::code_slot. |
| // Save the frame pointer and the context in top. |
| @@ -1080,7 +1083,7 @@ void MacroAssembler::EnterExitFrameEpilogue(int argc, bool save_doubles) { |
| int space = XMMRegister::kMaxNumRegisters * kDoubleSize + |
| argc * kPointerSize; |
| sub(esp, Immediate(space)); |
| - const int offset = -2 * kPointerSize; |
| + const int offset = -ExitFrameConstants::kFixedFrameSizeFromFp; |
| for (int i = 0; i < XMMRegister::kMaxNumRegisters; i++) { |
| XMMRegister reg = XMMRegister::from_code(i); |
| movsd(Operand(ebp, offset - ((i + 1) * kDoubleSize)), reg); |
| @@ -1123,7 +1126,7 @@ void MacroAssembler::EnterApiExitFrame(int argc) { |
| void MacroAssembler::LeaveExitFrame(bool save_doubles, bool pop_arguments) { |
| // Optionally restore all XMM registers. |
| if (save_doubles) { |
| - const int offset = -2 * kPointerSize; |
| + const int offset = -ExitFrameConstants::kFixedFrameSizeFromFp; |
| for (int i = 0; i < XMMRegister::kMaxNumRegisters; i++) { |
| XMMRegister reg = XMMRegister::from_code(i); |
| movsd(reg, Operand(ebp, offset - ((i + 1) * kDoubleSize))); |