| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index b4b3c38289dcf1a3fc92f7eff04156c284f271a9..51978d82bb08c88e3afb074760d73295bb516ef9 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -1280,6 +1280,28 @@ Object* Isolate::UnwindAndFindHandler() {
|
| }
|
| }
|
|
|
| + if (frame->is_stub() && catchable_by_js) {
|
| + StubFrame* stub_frame = StubFrame::cast(frame);
|
| + int stack_depth = 0;
|
| + int code_offset =
|
| + stub_frame->LookupExceptionHandlerInTable(&stack_depth, nullptr);
|
| + if (code_offset >= 0) {
|
| + Address return_sp = frame->fp() -
|
| + StandardFrameConstants::kFixedFrameSizeFromFp -
|
| + stack_depth * kPointerSize;
|
| + STATIC_ASSERT(TryBlockConstant::kElementCount == 1);
|
| + Object* maybe_context = Memory::Object_at(return_sp - kPointerSize);
|
| + context = maybe_context->IsContext() ? Context::cast(maybe_context)
|
| + : raw_native_context();
|
| +
|
| + code = frame->LookupCode();
|
| + handler_sp = return_sp;
|
| + handler_fp = frame->fp();
|
| + offset = code_offset;
|
| + break;
|
| + }
|
| + }
|
| +
|
| RemoveMaterializedObjectsOnUnwind(frame);
|
| }
|
|
|
|
|