[VM] Extend subtype-test mechanism with support for generic methods

Until now the subtype-test cache mechanism did not work (i.e. could
return the wrong result) for partially instantiated generic closures.

Additionally, closures which close over generic methods were always
handled in runtime.  This caused a servere performance regression for
any code hitting this (e.g. code which uses `package:stack_trace`).

Fixes https://github.com/dart-lang/sdk/issues/34051
Fixes https://github.com/dart-lang/sdk/issues/34054

Change-Id: Idb73e6f348c2fe0c737f42c57009f5f7a636c9a6
Reviewed-on: https://dart-review.googlesource.com/68369
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: RĂ©gis Crelier <regis@google.com>
18 files changed
tree: 4aff55b4c6a54e461cc99908539841ebd22d4d2a
  1. .clang-format
  2. .gitattributes
  3. .gitconfig
  4. .github/
  5. .gitignore
  6. .gn
  7. .mailmap
  8. .packages
  9. AUTHORS
  10. BUILD.gn
  11. CHANGELOG.md
  12. DEPS
  13. LICENSE
  14. PATENTS
  15. PRESUBMIT.py
  16. README.dart-sdk
  17. README.md
  18. WATCHLISTS
  19. build/
  20. client/
  21. codereview.settings
  22. dartdoc_options.yaml
  23. docs/
  24. pkg/
  25. runtime/
  26. samples-dev/
  27. samples/
  28. sdk/
  29. tests/
  30. third_party/
  31. tools/
  32. utils/
README.md

Dart

Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.

Using Dart

Visit the dartlang.org to learn more about the language, tools, getting started, and more.

Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.

Building Dart

If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.

There are more documents on our wiki.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.

License & patents

See LICENSE and PATENTS.