[VM] Rehash constant tables after cid-renumbering during app-jit training

When sorting classes during app-jit training we permute the class ids.

This makes canonical hash codes which depend directly (or indirectly) on
class ids change.  We already clear out the cached canonical hash codes
in type-related instances in the heap.

Though the cid renumbering makes the non-cached canonical hashcodes of
other objects, such as canonical Instance and Array objects, also change.

This means any data structures which use canonical hash codes of
type related objects or Instance/Array objects need to re-hash.

-> This CL makes us rehash the constant tables after cid renumbering.

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

Change-Id: Icfb5add3f14e2c62c5bca94f296133121ad0bc55
Reviewed-on: https://dart-review.googlesource.com/c/80801
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
1 file changed
tree: e603fa09387140f9de64342de12452cb6072d7bd
  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.