Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 86ac466ae8740dc46c85df4da8d887ee9a40e913..6165810ae9867e4f9ee5a6b2517d0c265349b55d 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -206,14 +206,25 @@ bool LCodeGen::GeneratePrologue() { |
if (NeedsEagerFrame()) { |
ASSERT(!frame_is_built_); |
frame_is_built_ = true; |
- __ push(ebp); // Caller's frame pointer. |
- __ mov(ebp, esp); |
- info()->AddNoFrameRange(0, masm_->pc_offset()); |
- __ push(esi); // Callee's context. |
- if (info()->IsStub()) { |
- __ push(Immediate(Smi::FromInt(StackFrame::STUB))); |
+ if (FLAG_optimize_for_size && FLAG_age_code && !info()->IsStub()) { |
+ // Pre-age the code. |
+ __ call(isolate()->builtins()->MarkCodeAsExecutedOnce(), |
+ RelocInfo::CODE_AGE_SEQUENCE); |
+ for (int i = Assembler::kCallInstructionLength; |
+ i < kNoCodeAgeSequenceLength; |
+ i++) { |
+ __ nop(); |
+ } |
} else { |
- __ push(edi); // Callee's JS function. |
+ __ push(ebp); // Caller's frame pointer. |
+ __ mov(ebp, esp); |
+ info()->AddNoFrameRange(0, masm_->pc_offset()); |
+ __ push(esi); // Callee's context. |
+ if (info()->IsStub()) { |
+ __ push(Immediate(Smi::FromInt(StackFrame::STUB))); |
+ } else { |
+ __ push(edi); // Callee's JS function. |
+ } |
} |
} |