)]}'
{
  "commit": "de91b49708340ae4dddca3ce9aa0d97bd4666b8c",
  "tree": "b762c758428364329f582b20ba291d206bf2c3df",
  "parents": [
    "21d0204b2bc5f0466304bb22777111575289919c"
  ],
  "author": {
    "name": "Martin Kustermann",
    "email": "kustermann@google.com",
    "time": "Thu Aug 08 11:48:58 2024 +0000"
  },
  "committer": {
    "name": "Martin Kustermann",
    "email": "kustermann@google.com",
    "time": "Thu Aug 08 11:48:58 2024 +0000"
  },
  "message": "[dart2wasm] Introduce `@pragma(\u0027wasm:static-dispatch\u0027)` and enable inlining of polymorphic specializations\n\nCertain indirect calls dart2wasm is unable to devirtualize. Some of them\nmay target callees that are really small, where the overhead of an\nindirect call is larger than the body of the function.\n\n\u003d\u003e We add a `@pragma(\u0027wasm:static-dispatch\u0027)` which can be used to\nannotate such methods\n\n\u003d\u003e Code generator will then call a polymorphic specializer helper\nfunction which switches on class-id and makes direct calls to the\ntargets.\n\n\u003d\u003e Add inlining ability to the polymorphic helper functions\n\u003d\u003e Make us inline them if there\u0027s \u003c\u003d 2 polymorphic targets.\n\n\u003d\u003e Make use of this in `_Type.checkInstance()` where we want 2 specific\nimplementations be dispatched to statically the rest via a indirect call\nfallback.\n\nChange-Id: Ifaf517e1a82540672fa509e71b7cfa465d925237\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/378940\nReviewed-by: Ömer Ağacan \u003comersa@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b637058e0b8653645ddd71d2cbddcbe5901d4748",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/dispatch_table.dart",
      "new_id": "09e7ae5c012c9002b485c3eb76b3ff901446bd98",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/dispatch_table.dart"
    },
    {
      "type": "modify",
      "old_id": "4a672dc48b33971e069cdc0ba628b01f1ea3842c",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/translator.dart",
      "new_id": "d7b5d56846b7d9bdb4446f318bf05bac215955b8",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/translator.dart"
    },
    {
      "type": "modify",
      "old_id": "8038cd20ba4b6fe2028c1109e2b43702c9cb4511",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/wasm/lib/type.dart",
      "new_id": "2bd1bba6b3cbb002994e40f1df9b33b5ee28395d",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/wasm/lib/type.dart"
    }
  ]
}
