)]}'
{
  "commit": "0e040b80fdab68d8629634366d667778654b6bf1",
  "tree": "0bf3aa1a57f0c6b7b5ca6005d245f69d84e96e8c",
  "parents": [
    "d8e046cac8e03f71bf1f807cdedb6924d41ce1bc"
  ],
  "author": {
    "name": "Nate Biggs",
    "email": "natebiggs@google.com",
    "time": "Mon Apr 28 17:51:59 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Apr 28 17:51:59 2025 -0700"
  },
  "message": "[dart2wasm] Use dynamic invocations to call closures when dynamic modules are enabled.\n\nRunning with dynamic modules means that closure invocation shapes cannot be statically known. A closure can flow between any modules and can then be invoked with a shape that\u0027s unknown to the module that defines the closure.\n\nGiven this, our 2 options are to generate code for every invocation shape or invoke the closure as if we don\u0027t know it\u0027s shape (dynamic invocation).\n\nThe former would scale exponentially relative to the number of named parameters so is not practical.\n\nThe latter generates slower, bigger code but is the more practical of the 2.\n\nChange-Id: I5e3613d23662e5b2213fdaa725642678fe26e43a\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/421920\nReviewed-by: Martin Kustermann \u003ckustermann@google.com\u003e\nReviewed-by: Ömer Ağacan \u003comersa@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "60bd22ab915d77decc5bbbe5933186380f7e33e9",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/closures.dart",
      "new_id": "d282d1fed34dfacabe9a47dac22b70df1f1a2418",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/closures.dart"
    },
    {
      "type": "modify",
      "old_id": "1abb2ab4c2dfb20f0c55cbd27a1ccf07391f3f02",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/code_generator.dart",
      "new_id": "c8c927e567fffb28f41e950849b8a4e8a1c243e6",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/code_generator.dart"
    },
    {
      "type": "modify",
      "old_id": "1d886844f84d89cee38cb60a1d54f3b41bba7456",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/dispatch_table.dart",
      "new_id": "df694d4e4d786eababdd93d45206941f942350bf",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/dispatch_table.dart"
    },
    {
      "type": "modify",
      "old_id": "8ec777aa18f92b6ade85198a3da2179abdffbb9f",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/dynamic_forwarders.dart",
      "new_id": "dc384249803906faafabba2151ea6d030823a278",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/dynamic_forwarders.dart"
    },
    {
      "type": "modify",
      "old_id": "6c3da5325d7b9c8e2589cf12d1b425a69a364b92",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/dynamic_modules.dart",
      "new_id": "281be4e708cf7ad12d6e9a6170d84f2be51f9441",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/dynamic_modules.dart"
    },
    {
      "type": "modify",
      "old_id": "26e7de94dfd97048fbf64d9e5bfd6a6437540b4e",
      "old_mode": 33188,
      "old_path": "pkg/dart2wasm/lib/translator.dart",
      "new_id": "124b4f58ac16c7e2f81fe2b62eb29fd5f5d56aca",
      "new_mode": 33188,
      "new_path": "pkg/dart2wasm/lib/translator.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd66d2c7e024224f6a0dc7ff8798e05d7ee629e3",
      "new_mode": 33188,
      "new_path": "pkg/dynamic_modules/test/data/closure_shapes/dynamic_interface.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "76afce03fd019bb443a4e27a4e096f711cd78883",
      "new_mode": 33188,
      "new_path": "pkg/dynamic_modules/test/data/closure_shapes/main.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "df664073437a699249ed032ac77a4fe98105566a",
      "new_mode": 33188,
      "new_path": "pkg/dynamic_modules/test/data/closure_shapes/modules/entry1.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "683f7290cee022245b990f5ada1565258846e356",
      "new_mode": 33188,
      "new_path": "pkg/dynamic_modules/test/data/closure_shapes/shared/shared.dart"
    }
  ]
}
