Index: runtime/vm/code_descriptors.h |
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h |
index 2500ed808d9b4ed161494d3145f11a6a204cbb63..5a1528e174c0317a8659752016f9827bb46d4181 100644 |
--- a/runtime/vm/code_descriptors.h |
+++ b/runtime/vm/code_descriptors.h |
@@ -74,6 +74,8 @@ class ExceptionHandlerList : public ZoneAllocated { |
struct HandlerDesc { |
intptr_t outer_try_index; // Try block in which this try block is nested. |
intptr_t pc_offset; // Handler PC offset value. |
+ TokenPosition token_pos; // Token position of handler. |
+ bool is_generated; // False if this is directly from Dart code. |
const Array* handler_types; // Catch clause guards. |
bool needs_stacktrace; |
}; |
@@ -86,6 +88,8 @@ class ExceptionHandlerList : public ZoneAllocated { |
struct HandlerDesc data; |
data.outer_try_index = -1; |
data.pc_offset = ExceptionHandlers::kInvalidPcOffset; |
+ data.token_pos = TokenPosition::kNoSource; |
+ data.is_generated = true; |
data.handler_types = NULL; |
data.needs_stacktrace = false; |
list_.Add(data); |
@@ -94,6 +98,8 @@ class ExceptionHandlerList : public ZoneAllocated { |
void AddHandler(intptr_t try_index, |
intptr_t outer_try_index, |
intptr_t pc_offset, |
+ TokenPosition token_pos, |
+ bool is_generated, |
const Array& handler_types, |
bool needs_stacktrace) { |
ASSERT(try_index >= 0); |
@@ -103,6 +109,8 @@ class ExceptionHandlerList : public ZoneAllocated { |
list_[try_index].outer_try_index = outer_try_index; |
ASSERT(list_[try_index].pc_offset == ExceptionHandlers::kInvalidPcOffset); |
list_[try_index].pc_offset = pc_offset; |
+ list_[try_index].token_pos = token_pos; |
+ list_[try_index].is_generated = is_generated; |
ASSERT(handler_types.IsZoneHandle()); |
list_[try_index].handler_types = &handler_types; |
list_[try_index].needs_stacktrace |= needs_stacktrace; |