)]}'
{
  "commit": "1f67016b13ef87504a6d3f12a24f2459198f5ec9",
  "tree": "dc0797ecb57a03dd4b8362f9a2faeb834e03fa83",
  "parents": [
    "9d6a093095a780bbaed42fce6ff8f88699e9dc21"
  ],
  "author": {
    "name": "Thomas Lively",
    "email": "tlively@google.com",
    "time": "Wed Aug 26 00:07:00 2026"
  },
  "committer": {
    "name": "Thomas Lively",
    "email": "tlively@google.com",
    "time": "Thu Aug 27 01:17:45 2026"
  },
  "message": "Avoid newly exposing prototypes in GTO\n\nWhen GTO removes fields or makes them immutable, it may introduce an immutable externref first field on the descriptor of a JS-exposed type where there was none before. That means that the described type could now have a JS-observable prototype where it did not before optimization, which makes this a misoptimization.\n\nFix the problem by inserting an i8 placeholder first field wherever we would otherwise start exposing a prototype where there was none before. This is expected to be exceptionally rare in practice, so the extra memory use is not expected to be a real problem.\n\nInstead of adding a placeholder field, we could have inhibited optimization of the existing first field, but that would be more likely than an unaccessed placeholder field to have adverse effects in later passes.\n\nFixes #9026.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "105dea499cf7e4ea7cf7d88b65a754475dbe02f1",
      "old_mode": 33188,
      "old_path": "src/ir/js-utils.h",
      "new_id": "99d71e2388e8c2f0c8af5916097317c6d3bb475c",
      "new_mode": 33188,
      "new_path": "src/ir/js-utils.h"
    },
    {
      "type": "modify",
      "old_id": "46eb698eaa46cb31ea423ecf13b4ace01e741af6",
      "old_mode": 33188,
      "old_path": "src/passes/GlobalTypeOptimization.cpp",
      "new_id": "2a38d4e6da646088436f9c4f6b95588724b4cc4f",
      "new_mode": 33188,
      "new_path": "src/passes/GlobalTypeOptimization.cpp"
    },
    {
      "type": "modify",
      "old_id": "6376b7553f3d29e8faa42bb0b6356e0fa10d52ae",
      "old_mode": 33188,
      "old_path": "test/lit/passes/gto-jsinterop.wast",
      "new_id": "4cabdc0dbc529fcd9cde85b4185b7c7f1d563685",
      "new_mode": 33188,
      "new_path": "test/lit/passes/gto-jsinterop.wast"
    }
  ]
}
