mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:03:19 +00:00
83d962339e
Before null safety try { ... } catch (e) { ... } was translated to a try-catch block with 'dynamic' catch type. VM has a special, more efficient handling of such catch-all try blocks. Those try blocks were detected by comparing catch type with 'dynamic'. With null safety front-end started to translate those try blocks using non-nullable Object as a catch type. As a result, this disabled all optimizations for catch-all try blocks in the VM. This change extends detection of catch-all try blocks to handle both dynamic and Object as catch types. Improves ParserCombinators benchmark with null safety 12x in JIT mode, 15x in AOT mode. This benchmark is now on par with legacy (pre-NNBD) version. Change-Id: I128aa1599d8a6f979fc2e8535d0f5c934bf3a5ba Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157565 Reviewed-by: Régis Crelier <regis@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com> |
||
---|---|---|
.. | ||
bytecode | ||
metadata | ||
target | ||
transformations | ||
dominators.dart | ||
http_filesystem.dart | ||
incremental_compiler.dart | ||
kernel_front_end.dart |