)]}'
{
  "commit": "2be26a709c303995d70ca0deb19e65e8483efa7a",
  "tree": "aac04ca5df11fe0dec5ed0e7f99288215ccfdcf8",
  "parents": [
    "0c4147675f7d74437030a7838a3f1c1d156efcb7"
  ],
  "author": {
    "name": "Nate Biggs",
    "email": "natebiggs@google.com",
    "time": "Fri Dec 29 07:13:09 2023 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Dec 29 07:13:09 2023 +0000"
  },
  "message": "[dart2js] Generate parameter stubs during codegen.\n\nToday we make a half-hearted attempt to generate the correct default type arguments for parameter stubs. By the time we create them in the emitter we don\u0027t have enough information to fully replace all the type variables that might appear in a type parameter\u0027s bound. So instead we erase all type variables to \"any\".\n\nBy generating parameter stubs in SSA we can use existing RTI infrastructure to generate the correct recipes/bindings/evals. Instead of directly creating JS we create the appropriate SSA graph and let the normal function compiler do the heavy lifting.\n\nThere are benefits and drawbacks to this new approach:\n1) The stub bodies go through the SSA optimizer so some parameters are abbreviated, some recurring nulls get replaced by a variable, etc. The net result is slightly more compact code.\n2) We are now compiling code during the emitter phase. This is relatively fast (adds ~2% duration to the phase) but also requires deserializing some data we weren\u0027t previously using. This results in ~200MB more memory being used. I\u0027ve changed the serialization layout a bit to try to mitigate this but some of it is unavoidable.\n\nChange-Id: Ie786da933accc039716e1c8481dbb8a09f3cc9b2\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/340700\nReviewed-by: Stephen Adams \u003csra@google.com\u003e\nReviewed-by: Kallen Tu \u003ckallentu@google.com\u003e\nCommit-Queue: Nate Biggs \u003cnatebiggs@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d4af6eb2272d501c4eb233e792307eb573fdb02d",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/common/codegen.dart",
      "new_id": "534b8a51293ed6d78bf97264790c20ff601f9751",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/common/codegen.dart"
    },
    {
      "type": "modify",
      "old_id": "aa7303c5090b6943d16e58cf4f819ee9bff70b79",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/compiler.dart",
      "new_id": "a2f98aeaef76e622c417711fb13cb87b9f2774d5",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/compiler.dart"
    },
    {
      "type": "modify",
      "old_id": "0dfea5a49ad158f7edc1ff2c501a87fcbc9fc5d1",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/inferrer/engine.dart",
      "new_id": "389103169c0f70718973bcd80d74d55525daba76",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/inferrer/engine.dart"
    },
    {
      "type": "modify",
      "old_id": "b23b5bb13ef7a42c53a082297cdaf4f84f7d30ec",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/inferrer/types.dart",
      "new_id": "f5c48cc0f7459805d302a033f66472b00b968e88",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/inferrer/types.dart"
    },
    {
      "type": "modify",
      "old_id": "13865cd79d9966ef50705042c945e6085e39098d",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/io/kernel_source_information.dart",
      "new_id": "8b8e82b35ae6c0d2e1dd4d770dac7aedeb345844",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/io/kernel_source_information.dart"
    },
    {
      "type": "modify",
      "old_id": "47469eaa7eb403e2cbe76cf688c9582f9d3e1084",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_backend/codegen_listener.dart",
      "new_id": "1cb4307c5689c0a0bdb1e728561e035de1535de8",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_backend/codegen_listener.dart"
    },
    {
      "type": "modify",
      "old_id": "a7dbc89335a9478fbae62d6d5f08bf671d35e3e2",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart",
      "new_id": "cf18f447f4c3e3cf6a41cc5a3a0fdfa08568d580",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"
    },
    {
      "type": "modify",
      "old_id": "e01a2e1513917d3232e31660f9bf00c28bf0f930",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_emitter/code_emitter_task.dart",
      "new_id": "aec85751f220b01c366176e3ff163efc830d5c92",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_emitter/code_emitter_task.dart"
    },
    {
      "type": "modify",
      "old_id": "b5d4f859090d7c67c85619347dfa37887f507cc1",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_emitter/js_emitter.dart",
      "new_id": "426d93c9654411a8958e66505453276ab934621f",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_emitter/js_emitter.dart"
    },
    {
      "type": "modify",
      "old_id": "fef46ebfe3ac816b6a8c5255d46b1236fc9de97c",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_emitter/native_emitter.dart",
      "new_id": "3ab56f1f4b5dad5dd29db4fccae18db215246728",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_emitter/native_emitter.dart"
    },
    {
      "type": "delete",
      "old_id": "bd47dde451aee49c6d6456696bdfb672064966a7",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_emitter/parameter_stub_generator.dart",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "85d0c75668d717da63b3811dd781c18fdcf501b8",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart",
      "new_id": "a13aa5eb1faabbf21d4b4ba6ee026fbaa1491b7e",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"
    },
    {
      "type": "modify",
      "old_id": "7a7f68ddc07086d0e4833781b4c4e8463da037aa",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/closure.dart",
      "new_id": "ab3311d12388ed5b8b095f5d3d4c4d465bed41a1",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/closure.dart"
    },
    {
      "type": "modify",
      "old_id": "0c4f6f7ec576cb2b5fde23a3ad3f7a33c4b548cc",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/element_map.dart",
      "new_id": "bb54521607c2804d27ca843054a0a3240ed897a5",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/element_map.dart"
    },
    {
      "type": "modify",
      "old_id": "ddfb0544924b2bfe1fe0cecad985d7c7661013cb",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/element_map_impl.dart",
      "new_id": "92c5455c16ab3e732563dea2bfaf482c817d1338",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/element_map_impl.dart"
    },
    {
      "type": "modify",
      "old_id": "b38bcf1684cb9bec7ff6754e510b0da7895780a6",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/elements.dart",
      "new_id": "937e6ca025852b9c7cceabb3c717d6d585c9f10e",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/elements.dart"
    },
    {
      "type": "modify",
      "old_id": "2551b11222196ee445a18246ba19926bc31ad87c",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/env.dart",
      "new_id": "64bfc625311bb0bdd6305a06200a587e2376e8a5",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/env.dart"
    },
    {
      "type": "modify",
      "old_id": "62d67109b0b3761a2e8ad3d1ce0b8e67b34178d7",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/js_strategy.dart",
      "new_id": "95fe4e62e078bb137749d10d64385d6b68c45f30",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/js_strategy.dart"
    },
    {
      "type": "modify",
      "old_id": "0129e99b9cc8f2106b2ebb960a0a141612180d7c",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_model/locals.dart",
      "new_id": "1ce66fea10156233035cc4d854b6796efcb764c7",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_model/locals.dart"
    },
    {
      "type": "modify",
      "old_id": "a5de3dd538b964c208f40f92e835bf6230bec8af",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/serialization/task.dart",
      "new_id": "0e52027ce2dad4859dfec75944b11787d3ea3ac4",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/serialization/task.dart"
    },
    {
      "type": "modify",
      "old_id": "9853b3bc736a42500ac16eec4fbd1792eeca018e",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/ssa/builder.dart",
      "new_id": "7f50c36e948894536fc6be463934776112c74d3b",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/ssa/builder.dart"
    },
    {
      "type": "modify",
      "old_id": "76f0e7c5dd2f1a06e110bca4527d0f0434b2ea01",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/ssa/ssa.dart",
      "new_id": "146ec2c718abd352c8e8a1279847bff1999c608c",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/ssa/ssa.dart"
    },
    {
      "type": "modify",
      "old_id": "46099a21483c963b7bc1feb58c9e7163056502a6",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/universe/codegen_world_builder.dart",
      "new_id": "ba186099061897b4757abfcdf6a9e3628a8a3eaf",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/universe/codegen_world_builder.dart"
    },
    {
      "type": "modify",
      "old_id": "c0dc47771b8c8db2097aa3faa36dcf893deb0ddf",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/universe/member_usage.dart",
      "new_id": "d90d597bfb3b7e82117e8e7a69cc0861f3891dfb",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/universe/member_usage.dart"
    },
    {
      "type": "modify",
      "old_id": "f046f831b29d43cc88fa4ecb729254043207676e",
      "old_mode": 33188,
      "old_path": "tests/language/closure/type_arguments_test.dart",
      "new_id": "c02c7645cffd66168b55fa9b85001a8193423864",
      "new_mode": 33188,
      "new_path": "tests/language/closure/type_arguments_test.dart"
    }
  ]
}
