[vm/compiler] Use loop framework for AOT inline heuristics

Rationale:
Without proper execution counters, the inline AOT inliner
marks every call site "cold", effectively disabling inlining
altogether. This change introduces loop-based static heuristic
that assumes statements nested inside loops are executed more
frequently. This results in more inlining.

Note:
Conservative version is used for now which yields
more performance without increasing code size too much.
There is still a lot of performance left at the table
which we could exploit if we fine tune heuristics
regarding code size.

Bug:
https://github.com/dart-lang/sdk/issues/34473
https://github.com/dart-lang/sdk/issues/32167


Change-Id: I86ba60f93bdab363cd22ab6bdbcf6688f2042fea
Reviewed-on: https://dart-review.googlesource.com/c/81187
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
3 files changed
tree: 16134a1b2ce8d6a481a7522475dfcea3d239854c
  1. .clang-format
  2. .gitattributes
  3. .gitconfig
  4. .github/
  5. .gitignore
  6. .gn
  7. .mailmap
  8. .packages
  9. .vpython
  10. AUTHORS
  11. BUILD.gn
  12. CHANGELOG.md
  13. CONTRIBUTING.md
  14. DEPS
  15. LICENSE
  16. PATENTS
  17. PRESUBMIT.py
  18. README.dart-sdk
  19. README.md
  20. WATCHLISTS
  21. build/
  22. client/
  23. codereview.settings
  24. dartdoc_options.yaml
  25. docs/
  26. pkg/
  27. runtime/
  28. samples-dev/
  29. samples/
  30. sdk/
  31. tests/
  32. third_party/
  33. tools/
  34. 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.