| Index: runtime/vm/object.cc
|
| diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
|
| index e09af298e4f2d5f263e741b2b3d5ba59f737ddf1..005fcef1f9758b03faaceb55760ca349b2bd1b46 100644
|
| --- a/runtime/vm/object.cc
|
| +++ b/runtime/vm/object.cc
|
| @@ -12493,7 +12493,9 @@ void ExceptionHandlers::SetHandlerInfo(intptr_t try_index,
|
| intptr_t outer_try_index,
|
| uword handler_pc_offset,
|
| bool needs_stacktrace,
|
| - bool has_catch_all) const {
|
| + bool has_catch_all,
|
| + TokenPosition token_pos,
|
| + bool is_generated) const {
|
| ASSERT((try_index >= 0) && (try_index < num_entries()));
|
| NoSafepointScope no_safepoint;
|
| ExceptionHandlerInfo* info =
|
| @@ -12506,6 +12508,7 @@ void ExceptionHandlers::SetHandlerInfo(intptr_t try_index,
|
| info->handler_pc_offset = handler_pc_offset;
|
| info->needs_stacktrace = needs_stacktrace;
|
| info->has_catch_all = has_catch_all;
|
| + info->is_generated = is_generated;
|
| }
|
|
|
| void ExceptionHandlers::GetHandlerInfo(intptr_t try_index,
|
| @@ -12534,6 +12537,12 @@ bool ExceptionHandlers::NeedsStackTrace(intptr_t try_index) const {
|
| }
|
|
|
|
|
| +bool ExceptionHandlers::IsGenerated(intptr_t try_index) const {
|
| + ASSERT((try_index >= 0) && (try_index < num_entries()));
|
| + return raw_ptr()->data()[try_index].is_generated;
|
| +}
|
| +
|
| +
|
| bool ExceptionHandlers::HasCatchAll(intptr_t try_index) const {
|
| ASSERT((try_index >= 0) && (try_index < num_entries()));
|
| return raw_ptr()->data()[try_index].has_catch_all;
|
| @@ -12612,7 +12621,7 @@ RawExceptionHandlers* ExceptionHandlers::New(const Array& handled_types_data) {
|
|
|
|
|
| const char* ExceptionHandlers::ToCString() const {
|
| -#define FORMAT1 "%" Pd " => %#x (%" Pd " types) (outer %d)\n"
|
| +#define FORMAT1 "%" Pd " => %#x (%" Pd " types) (outer %d) %s\n"
|
| #define FORMAT2 " %d. %s\n"
|
| if (num_entries() == 0) {
|
| return "empty ExceptionHandlers\n";
|
| @@ -12628,7 +12637,8 @@ const char* ExceptionHandlers::ToCString() const {
|
| const intptr_t num_types =
|
| handled_types.IsNull() ? 0 : handled_types.Length();
|
| len += OS::SNPrint(NULL, 0, FORMAT1, i, info.handler_pc_offset, num_types,
|
| - info.outer_try_index);
|
| + info.outer_try_index,
|
| + info.is_generated ? "(generated)" : "");
|
| for (int k = 0; k < num_types; k++) {
|
| type ^= handled_types.At(k);
|
| ASSERT(!type.IsNull());
|
| @@ -12646,7 +12656,8 @@ const char* ExceptionHandlers::ToCString() const {
|
| handled_types.IsNull() ? 0 : handled_types.Length();
|
| num_chars +=
|
| OS::SNPrint((buffer + num_chars), (len - num_chars), FORMAT1, i,
|
| - info.handler_pc_offset, num_types, info.outer_try_index);
|
| + info.handler_pc_offset, num_types, info.outer_try_index,
|
| + info.is_generated ? "(generated)" : "");
|
| for (int k = 0; k < num_types; k++) {
|
| type ^= handled_types.At(k);
|
| num_chars += OS::SNPrint((buffer + num_chars), (len - num_chars), FORMAT2,
|
|
|