| Index: src/compiler/code-generator.cc
 | 
| diff --git a/src/compiler/code-generator.cc b/src/compiler/code-generator.cc
 | 
| index 6789f3a9fee75c5c1b6e1b08180e9eb390087f10..d4622c0a351d1962c415bee3d9f92050e1e53d50 100644
 | 
| --- a/src/compiler/code-generator.cc
 | 
| +++ b/src/compiler/code-generator.cc
 | 
| @@ -27,7 +27,8 @@ CodeGenerator::CodeGenerator(Frame* frame, Linkage* linkage,
 | 
|        deoptimization_states_(code->zone()),
 | 
|        deoptimization_literals_(code->zone()),
 | 
|        translations_(code->zone()),
 | 
| -      last_lazy_deopt_pc_(0) {
 | 
| +      last_lazy_deopt_pc_(0),
 | 
| +      ools_(nullptr) {
 | 
|    for (int i = 0; i < code->InstructionBlockCount(); ++i) {
 | 
|      new (&labels_[i]) Label;
 | 
|    }
 | 
| @@ -71,6 +72,16 @@ Handle<Code> CodeGenerator::GenerateCode() {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  // Assemble all out-of-line code.
 | 
| +  if (ools_) {
 | 
| +    masm()->RecordComment("-- Out of line code --");
 | 
| +    for (OutOfLineCode* ool = ools_; ool; ool = ool->next()) {
 | 
| +      masm()->bind(ool->entry());
 | 
| +      ool->Generate();
 | 
| +      masm()->jmp(ool->exit());
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
|    FinishCode(masm());
 | 
|  
 | 
|    // Ensure there is space for lazy deopt.
 | 
| @@ -555,6 +566,15 @@ void CodeGenerator::AddNopForSmiCodeInlining() { UNIMPLEMENTED(); }
 | 
|  
 | 
|  #endif  // !V8_TURBOFAN_BACKEND
 | 
|  
 | 
| +
 | 
| +OutOfLineCode::OutOfLineCode(CodeGenerator* gen)
 | 
| +    : masm_(gen->masm()), next_(gen->ools_) {
 | 
| +  gen->ools_ = this;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +OutOfLineCode::~OutOfLineCode() {}
 | 
| +
 | 
|  }  // namespace compiler
 | 
|  }  // namespace internal
 | 
|  }  // namespace v8
 | 
| 
 |