| Index: src/ia32/deoptimizer-ia32.cc
 | 
| diff --git a/src/ia32/deoptimizer-ia32.cc b/src/ia32/deoptimizer-ia32.cc
 | 
| index d1d9254094863430d4c4678989211de5fd2702f5..21c7ff5dc1e824edfba466c29aba66e3ec079174 100644
 | 
| --- a/src/ia32/deoptimizer-ia32.cc
 | 
| +++ b/src/ia32/deoptimizer-ia32.cc
 | 
| @@ -659,9 +659,14 @@ void Deoptimizer::DoComputeJSFrame(TranslationIterator* iterator,
 | 
|    // Set the continuation for the topmost frame.
 | 
|    if (is_topmost && bailout_type_ != DEBUGGER) {
 | 
|      Builtins* builtins = isolate_->builtins();
 | 
| -    Code* continuation = (bailout_type_ == EAGER)
 | 
| -        ? builtins->builtin(Builtins::kNotifyDeoptimized)
 | 
| -        : builtins->builtin(Builtins::kNotifyLazyDeoptimized);
 | 
| +    Code* continuation = builtins->builtin(Builtins::kNotifyDeoptimized);
 | 
| +    if (bailout_type_ == LAZY) {
 | 
| +      continuation = builtins->builtin(Builtins::kNotifyLazyDeoptimized);
 | 
| +    } else if (bailout_type_ == SOFT) {
 | 
| +      continuation = builtins->builtin(Builtins::kNotifySoftDeoptimized);
 | 
| +    } else {
 | 
| +      ASSERT(bailout_type_ == EAGER);
 | 
| +    }
 | 
|      output_frame->SetContinuation(
 | 
|          reinterpret_cast<uint32_t>(continuation->entry()));
 | 
|    }
 | 
| @@ -740,7 +745,7 @@ void Deoptimizer::EntryGenerator::Generate() {
 | 
|  
 | 
|    // Get the address of the location in the code object if possible
 | 
|    // and compute the fp-to-sp delta in register edx.
 | 
| -  if (type() == EAGER) {
 | 
| +  if (type() == EAGER || type() == SOFT) {
 | 
|      __ Set(ecx, Immediate(0));
 | 
|      __ lea(edx, Operand(esp, kSavedRegistersAreaSize + 1 * kPointerSize));
 | 
|    } else {
 | 
| @@ -793,7 +798,7 @@ void Deoptimizer::EntryGenerator::Generate() {
 | 
|    __ fnclex();
 | 
|  
 | 
|    // Remove the bailout id and the double registers from the stack.
 | 
| -  if (type() == EAGER) {
 | 
| +  if (type() == EAGER || type() == SOFT) {
 | 
|      __ add(esp, Immediate(kDoubleRegsSize + kPointerSize));
 | 
|    } else {
 | 
|      __ add(esp, Immediate(kDoubleRegsSize + 2 * kPointerSize));
 | 
| 
 |