| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 4e42b436b1317022c966370fae99334736912e51..45a6c576cd216bdd200ff178b633b04553db243c 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -1116,6 +1116,26 @@ Object* Isolate::UnwindAndFindHandler() {
|
| }
|
| }
|
|
|
| + // For interpreted frame we perform a range lookup in the handler table.
|
| + if (frame->is_interpreted() && catchable_by_js) {
|
| + InterpretedFrame* js_frame = static_cast<InterpretedFrame*>(frame);
|
| + int stack_slots = 0; // Will contain stack slot count of frame.
|
| + offset = js_frame->LookupExceptionHandlerInTable(&stack_slots, NULL);
|
| + if (offset >= 0) {
|
| + // Patch the bytecode offset in the interpreted frame to reflect the
|
| + // position of the exception handler. The special builtin below will
|
| + // take care of continuing to dispatch at that position.
|
| + js_frame->PatchBytecodeOffset(static_cast<int>(offset));
|
| + offset = 0;
|
| +
|
| + // Gather information from the frame.
|
| + code = *builtins()->InterpreterEnterExceptionHandler();
|
| + handler_sp = frame->sp();
|
| + handler_fp = frame->fp();
|
| + break;
|
| + }
|
| + }
|
| +
|
| // For JavaScript frames we perform a range lookup in the handler table.
|
| if (frame->is_java_script() && catchable_by_js) {
|
| JavaScriptFrame* js_frame = static_cast<JavaScriptFrame*>(frame);
|
|
|