dart-sdk/pkg/vm
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
..
bin Remove some misleading int returns from main 2020-07-29 00:47:01 +00:00
lib [vm/nnbd] Fix handling of catch-all try blocks with null safety 2020-08-06 23:46:09 +00:00
test Reland "[ VM / DartDev ] Launch DartDev in an isolate within a single main Dart process" 2020-07-21 16:23:18 +00:00
testcases [vm/nnbd/bytecode] Fix reuse of type arguments in bytecode 2020-07-23 00:35:29 +00:00
tool [vm] Delete ABI infrastructure 2020-08-06 19:55:12 +00:00
analysis_options.yaml Revert "[cfe/vm] Enable prefer_final lints in pkg/vm" 2019-09-25 08:23:20 +00:00
LICENSE [VM] Move kernel service to pkg/vm, populate pkg/vm with necessary files 2017-11-17 17:45:03 +00:00
pubspec.yaml Clean up no-publish comments in pubspecs 2020-06-23 10:34:09 +00:00
README.md

This package hosts VM specific Dart code and helper scripts.