Index: src/ia32/codegen-ia32.cc |
diff --git a/src/ia32/codegen-ia32.cc b/src/ia32/codegen-ia32.cc |
index f0ad26defed06940678cfde33cfd09a2692390bb..1882ac59e1fc06c31ac05e86a26a7c003746ee33 100644 |
--- a/src/ia32/codegen-ia32.cc |
+++ b/src/ia32/codegen-ia32.cc |
@@ -125,7 +125,7 @@ Scope* CodeGenerator::scope() { return info_->function()->scope(); } |
// edi: called JS function |
// esi: callee's context |
-void CodeGenerator::Generate(CompilationInfo* info, Mode mode) { |
+void CodeGenerator::Generate(CompilationInfo* info) { |
// Record the position for debugging purposes. |
CodeForFunctionPosition(info->function()); |
@@ -164,7 +164,7 @@ void CodeGenerator::Generate(CompilationInfo* info, Mode mode) { |
// esi: callee's context |
allocator_->Initialize(); |
- if (mode == PRIMARY) { |
+ if (info->mode() == CompilationInfo::PRIMARY) { |
frame_->Enter(); |
// Allocate space for locals and initialize them. |
@@ -255,6 +255,12 @@ void CodeGenerator::Generate(CompilationInfo* info, Mode mode) { |
// frame to match this state. |
frame_->Adjust(3); |
allocator_->Unuse(edi); |
+ |
+ // Bind all the bailout labels to the beginning of the function. |
+ List<CompilationInfo::Bailout*>* bailouts = info->bailouts(); |
+ for (int i = 0; i < bailouts->length(); i++) { |
+ __ bind(bailouts->at(i)->label()); |
+ } |
} |
// Initialize the function return target after the locals are set |