| Index: src/frames.cc
|
| diff --git a/src/frames.cc b/src/frames.cc
|
| index 04ebbd85c6dffb8ca1a10d0b12cc90010b4c9354..53ae5079f0caff31d06750b518a5867c967c1bd0 100644
|
| --- a/src/frames.cc
|
| +++ b/src/frames.cc
|
| @@ -424,10 +424,27 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
|
| // into the heap to determine the state. This is safe as long
|
| // as nobody tries to GC...
|
| if (!iterator->can_access_heap_objects_) return JAVA_SCRIPT;
|
| - Code::Kind kind = GetContainingCode(iterator->isolate(),
|
| - *(state->pc_address))->kind();
|
| - DCHECK(kind == Code::FUNCTION || kind == Code::OPTIMIZED_FUNCTION);
|
| - return (kind == Code::OPTIMIZED_FUNCTION) ? OPTIMIZED : JAVA_SCRIPT;
|
| + Code* code_obj =
|
| + GetContainingCode(iterator->isolate(), *(state->pc_address));
|
| + switch (code_obj->kind()) {
|
| + case Code::FUNCTION:
|
| + return JAVA_SCRIPT;
|
| +
|
| + case Code::HANDLER:
|
| +#ifdef DEBUG
|
| + if (!code_obj->is_hydrogen_stub()) {
|
| + // There's currently no support for non-hydrogen stub handlers. If
|
| + // you this, you'll have to implement it yourself.
|
| + UNREACHABLE();
|
| + }
|
| +#endif
|
| + case Code::OPTIMIZED_FUNCTION:
|
| + return OPTIMIZED;
|
| +
|
| + default:
|
| + UNREACHABLE();
|
| + return JAVA_SCRIPT;
|
| + }
|
| }
|
| return static_cast<StackFrame::Type>(Smi::cast(marker)->value());
|
| }
|
|
|