Index: runtime/vm/stack_frame.cc |
=================================================================== |
--- runtime/vm/stack_frame.cc (revision 43041) |
+++ runtime/vm/stack_frame.cc (working copy) |
@@ -209,6 +209,7 @@ |
if (code.IsNull()) { |
return false; // Stub frames do not have exception handlers. |
} |
+ uword pc_offset = pc() - code.EntryPoint(); |
REUSABLE_EXCEPTION_HANDLERS_HANDLESCOPE(isolate); |
ExceptionHandlers& handlers = reused_exception_handlers_handle.Handle(); |
@@ -224,7 +225,7 @@ |
PcDescriptors::Iterator iter(descriptors, RawPcDescriptors::kAnyKind); |
while (iter.MoveNext()) { |
const intptr_t current_try_index = iter.TryIndex(); |
- if ((iter.Pc() == pc()) && (current_try_index != -1)) { |
+ if ((iter.PcOffset() == pc_offset) && (current_try_index != -1)) { |
RawExceptionHandlers::HandlerInfo handler_info; |
handlers.GetHandlerInfo(current_try_index, &handler_info); |
*handler_pc = handler_info.handler_pc; |
@@ -242,12 +243,13 @@ |
if (code.IsNull()) { |
return -1; // Stub frames do not have token_pos. |
} |
+ uword pc_offset = pc() - code.EntryPoint(); |
const PcDescriptors& descriptors = |
PcDescriptors::Handle(code.pc_descriptors()); |
ASSERT(!descriptors.IsNull()); |
PcDescriptors::Iterator iter(descriptors, RawPcDescriptors::kAnyKind); |
while (iter.MoveNext()) { |
- if (iter.Pc() == pc()) { |
+ if (iter.PcOffset() == pc_offset) { |
return iter.TokenPos(); |
} |
} |