)]}'
{
  "commit": "ddcd028cdee2cd7223ffddbb1aa6ad9f8080fe2e",
  "tree": "7e1302f70338b269fc14c33610b925cad0fef581",
  "parents": [
    "860f7c532d9ca7b48e73314786aaf1e01f98dacb"
  ],
  "author": {
    "name": "Martin Kustermann",
    "email": "kustermann@google.com",
    "time": "Fri Feb 04 14:19:22 2022 +0000"
  },
  "committer": {
    "name": "Commit Bot",
    "email": "commit-bot@chromium.org",
    "time": "Fri Feb 04 14:19:22 2022 +0000"
  },
  "message": "[vm] Avoid expensive runtime function type checks in Future implementation\n\nThe `_FutureListener.callback` field is used for multiple purposes\n(possibly to save memory by avoiding additional fields) so it cannot\nhave a specific function type.\n\nThis causes the `Function?` typed `_FutureListener.callback` field to be\ncasted to proper function types such as `T Function(S)`.\n\u003d\u003e Those runtime type checks are very expensive.\n\nTo avoid introducing more fields we use an `unsafeCast\u003cT\u003e()` for those\ncasts, since the implementation guarantees they are going to suceed.\n\nIssue https://github.com/dart-lang/sdk/issues/48225\n\nTEST\u003dci\n\nChange-Id: I6f0cc87600462c8ca5baceeb511ce8a06c61237e\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/230240\nReviewed-by: Nicholas Shahan \u003cnshahan@google.com\u003e\nReviewed-by: Lasse Nielsen \u003clrn@google.com\u003e\nCommit-Queue: Martin Kustermann \u003ckustermann@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0d7662ffa8006057f2ce83483c4682ca9e5ced32",
      "old_mode": 33188,
      "old_path": "pkg/front_end/testcases/general/external_import.dart.weak.expect",
      "new_id": "5e7e2df62e6903f718523ce206ef2f1197842571",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/general/external_import.dart.weak.expect"
    },
    {
      "type": "modify",
      "old_id": "0d7662ffa8006057f2ce83483c4682ca9e5ced32",
      "old_mode": 33188,
      "old_path": "pkg/front_end/testcases/general/external_import.dart.weak.modular.expect",
      "new_id": "5e7e2df62e6903f718523ce206ef2f1197842571",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/general/external_import.dart.weak.modular.expect"
    },
    {
      "type": "modify",
      "old_id": "0d7662ffa8006057f2ce83483c4682ca9e5ced32",
      "old_mode": 33188,
      "old_path": "pkg/front_end/testcases/general/external_import.dart.weak.transformed.expect",
      "new_id": "5e7e2df62e6903f718523ce206ef2f1197842571",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/general/external_import.dart.weak.transformed.expect"
    },
    {
      "type": "modify",
      "old_id": "7670aed4785a1dc88adf776f89ff2b14e8409c4b",
      "old_mode": 33188,
      "old_path": "pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.expect",
      "new_id": "b24cb955388f0d68f4a659c32f96bf0aa9f74f7b",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.expect"
    },
    {
      "type": "modify",
      "old_id": "7670aed4785a1dc88adf776f89ff2b14e8409c4b",
      "old_mode": 33188,
      "old_path": "pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.modular.expect",
      "new_id": "b24cb955388f0d68f4a659c32f96bf0aa9f74f7b",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.modular.expect"
    },
    {
      "type": "modify",
      "old_id": "7670aed4785a1dc88adf776f89ff2b14e8409c4b",
      "old_mode": 33188,
      "old_path": "pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.transformed.expect",
      "new_id": "b24cb955388f0d68f4a659c32f96bf0aa9f74f7b",
      "new_mode": 33188,
      "new_path": "pkg/front_end/testcases/rasta/native_is_illegal.dart.weak.transformed.expect"
    },
    {
      "type": "modify",
      "old_id": "f4ab5561d59bea5d8c0b3edd3cf95ccf37de0794",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart",
      "new_id": "ca3bd4f699e20d2b26890c0e25d6c0994fc7fe5a",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart"
    },
    {
      "type": "modify",
      "old_id": "9bf6da67f667fb578e028632f2fd5c557c216a9b",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/js_runtime/lib/internal_patch.dart",
      "new_id": "ef27959937cfcffbae8f77e40915c0192fcb753c",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/js_runtime/lib/internal_patch.dart"
    },
    {
      "type": "modify",
      "old_id": "b8141d681122217421f6e3952200812e938a6601",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/vm/lib/internal_patch.dart",
      "new_id": "3d7a3cd8f5a78d7b610e8780afbf5754edc9ef49",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/vm/lib/internal_patch.dart"
    },
    {
      "type": "modify",
      "old_id": "0b16dae3492fc35030754bb667c1c6535a7b0c02",
      "old_mode": 33188,
      "old_path": "sdk/lib/async/async.dart",
      "new_id": "ca05fc66a6535e299e1a066fcad49fdca087d822",
      "new_mode": 33188,
      "new_path": "sdk/lib/async/async.dart"
    },
    {
      "type": "modify",
      "old_id": "4d13cc819f259ee81091c64310b6334db0a9cd4a",
      "old_mode": 33188,
      "old_path": "sdk/lib/async/future_impl.dart",
      "new_id": "26cfecd514fdfaeebf5113509eada7511602e716",
      "new_mode": 33188,
      "new_path": "sdk/lib/async/future_impl.dart"
    },
    {
      "type": "modify",
      "old_id": "5d38bd8917e8527bf7d23a94715107bf23d8f18a",
      "old_mode": 33188,
      "old_path": "sdk/lib/internal/internal.dart",
      "new_id": "a7a7eda1b069b05f27b848b69fa11c25d0a2f618",
      "new_mode": 33188,
      "new_path": "sdk/lib/internal/internal.dart"
    }
  ]
}
