dart-sdk/pkg/vm/lib
Alexander Markov 83d962339e [vm/nnbd] Fix handling of catch-all try blocks with null safety
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>
2020-08-06 23:46:09 +00:00
..
bytecode [vm/nnbd] Fix handling of catch-all try blocks with null safety 2020-08-06 23:46:09 +00:00
metadata [vm] Compute a partitioning of the program into loading units. 2020-06-19 21:35:47 +00:00
target Ensure CFE provides correct setter name to instantiateInvocation. 2020-07-30 06:21:20 +00:00
transformations [vm/aot/tfa] Fix return value of operator== in TFA summaries 2020-08-06 15:37:19 +00:00
dominators.dart [vm] Compute a partitioning of the program into loading units. 2020-06-19 21:35:47 +00:00
http_filesystem.dart
incremental_compiler.dart [CFE/VM] Fix 'reject' when using experimental invalidation strategy 2020-06-08 12:02:43 +00:00
kernel_front_end.dart [vm/nnbd] Remove obsolete --null-safety option 2020-07-20 23:09:29 +00:00