)]}'
{
  "commit": "bd950da0a8b170f99fdadeb4edc7ab62cd8a54fe",
  "tree": "c78660d27bc570614f665e241ab9f57ca6934258",
  "parents": [
    "eb75f13c7a0fe0ccc7d36d97018b101582170ca1"
  ],
  "author": {
    "name": "Vyacheslav Egorov",
    "email": "vegorov@google.com",
    "time": "Thu Apr 28 21:43:10 2022 +0000"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Thu Apr 28 21:43:10 2022 +0000"
  },
  "message": "[vm] Avoid duplicate entries in invocation dispatcher cache.\n\nWe would add function itself to the invocation dispatcher cache\nif the function itself can handle dynamic invocation.\n\nHowever GetInvocationDispatcher will never be able to find this\nentry because it looks specifically for functions with\nkDynamicInvocationForwarder kind.\n\nThis lead us to add many duplicated entries to the cache.\n\nThe logic in the resolver does not actually need the cache to contain\nthe function because it falls through to lookup using unmangled name.\n\nFor a large Flutter application: before this change invocation dispatcher caches were contributing 129244 bytes to the snapshot, after this change they contribute 7764 bytes.\n\nFixes https://github.com/dart-lang/sdk/issues/48914\n\nTEST\u003dci\n\nChange-Id: I639d268e75fd43d2f4f0b1ea5a7873ba169f9d66\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/242862\nReviewed-by: Ryan Macnak \u003crmacnak@google.com\u003e\nCommit-Queue: Slava Egorov \u003cvegorov@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "16d01785db7e8191a5b37d48d06419c11f12c5de",
      "old_mode": 33188,
      "old_path": "runtime/vm/object.cc",
      "new_id": "cb9df67a652d82535226b314a01ceb43928cbc48",
      "new_mode": 33188,
      "new_path": "runtime/vm/object.cc"
    }
  ]
}
