Index: runtime/lib/errors.cc |
diff --git a/runtime/lib/errors.cc b/runtime/lib/errors.cc |
index b039efa97257f8575b727c52ababeb0fc6c4af13..75f354d4f94ed60ebee55ff347dd6d845340d156 100644 |
--- a/runtime/lib/errors.cc |
+++ b/runtime/lib/errors.cc |
@@ -14,6 +14,15 @@ namespace dart { |
// Scan the stack until we hit the first function in the _AssertionError |
// class. We then return the next frame's script taking inlining into account. |
static RawScript* FindScript(DartFrameIterator* iterator) { |
+ if (FLAG_precompiled_runtime) { |
+ // The precompiled runtime faces two issues in recovering the correct |
+ // assertion text. First, the precompiled runtime does not include |
+ // the inlining meta-data so we cannot walk the inline-aware stack trace. |
+ // Second, the script text itself is missing so whatever script is returned |
+ // from here will be missing the assertion expression text. |
+ iterator->NextFrame(); // Skip _AssertionError._checkAssertion frame |
+ return Exceptions::GetCallerScript(iterator); |
+ } |
StackFrame* stack_frame = iterator->NextFrame(); |
Code& code = Code::Handle(); |
Function& func = Function::Handle(); |