| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 7e7190bc270f773e935f7f24908a1c57f27e9e91..dada993391a42e2fa1a1bbbd293779854493e349 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -1112,6 +1112,13 @@ Object* Isolate::UnwindAndFindHandler() {
|
|
|
| // Gather information from the frame.
|
| code = frame->LookupCode();
|
| + if (code->marked_for_deoptimization()) {
|
| + // If the target code is lazy deoptimized, we jump to the original
|
| + // return address, but we make a note that we are throwing, so that
|
| + // the deoptimizer can do the right thing.
|
| + offset = static_cast<int>(frame->pc() - code->entry());
|
| + set_deoptimizer_lazy_throw(true);
|
| + }
|
| handler_sp = return_sp;
|
| handler_fp = frame->fp();
|
| break;
|
| @@ -1755,7 +1762,6 @@ void Isolate::ThreadDataTable::RemoveAllThreads(Isolate* isolate) {
|
| #define TRACE_ISOLATE(tag)
|
| #endif
|
|
|
| -
|
| Isolate::Isolate(bool enable_serializer)
|
| : embedder_data_(),
|
| entry_stack_(NULL),
|
| @@ -1771,6 +1777,7 @@ Isolate::Isolate(bool enable_serializer)
|
| stub_cache_(NULL),
|
| code_aging_helper_(NULL),
|
| deoptimizer_data_(NULL),
|
| + deoptimizer_lazy_throw_(false),
|
| materialized_object_store_(NULL),
|
| capture_stack_trace_for_uncaught_exceptions_(false),
|
| stack_trace_for_uncaught_exceptions_frame_limit_(0),
|
|
|