Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 16b8bd79fb9166b59167a5a50fadd358bef5d77c..77f72a3186c9bd1cbb5582de132d58c09dae405f 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -1017,6 +1017,30 @@ void MacroAssembler::AssertNotSmi(Register object) { |
} |
+void MacroAssembler::Prologue(bool is_stub) { |
+ if (is_stub) { |
+ push(ebp); // Caller's frame pointer. |
+ mov(ebp, esp); |
+ push(esi); // Callee's context. |
+ push(Immediate(Smi::FromInt(StackFrame::STUB))); |
+ } else { |
+ PredictableCodeSizeScope predictible_code_size_scope(this, |
+ kNoCodeAgeSequenceLength); |
+ if (FLAG_optimize_for_size && FLAG_age_code) { |
+ // Pre-age the code. |
+ call(isolate()->builtins()->MarkCodeAsExecutedOnce(), |
+ RelocInfo::CODE_AGE_SEQUENCE); |
+ Nop(kNoCodeAgeSequenceLength - Assembler::kCallInstructionLength); |
+ } else { |
+ push(ebp); // Caller's frame pointer. |
+ mov(ebp, esp); |
+ push(esi); // Callee's context. |
+ push(edi); // Callee's JS function. |
+ } |
+ } |
+} |
+ |
+ |
void MacroAssembler::EnterFrame(StackFrame::Type type) { |
push(ebp); |
mov(ebp, esp); |