-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Please see description in #126302 :)
Copied from #126302
When I encounter bugs in production environment saying null pointer error on return _size!, I wish I could know more information! However, currently the information is revealed by assert(hasSize, 'RenderBox was not laid out: $this');, thus only in debug mode can I know what is this (and/or more information that can be added), while in release mode I can only see a stack trace saying it is RenderBox.size that throws - nothing more :/
Therefore, it is intuitive to add this extra information in release mode. However, will it affect performance? We all know this is in critical path and should be quite careful. Thus I did some experiments: https://godbolt.org/z/zPPPf5969 From my naive understanding of assembly, the two versions of code (size! vs size ?? throw) has the same assembly, except that they throw different types of errors. In other words, when there is no error, both code should be equivalent; when there is an error, surely the new code will be slower since it calls this.toString(), but the error handling process is rare and already heavy, so this is not a problem.
