)]}'
{
  "commit": "486f60a81dd4accb2a52106005f002fac4ddddff",
  "tree": "8fab85907c0b68843bd4a0ca6f2a3553e7ba8a9f",
  "parents": [
    "a262f43d962934bff1d3de45615dfb13b88e486c"
  ],
  "author": {
    "name": "Andrei Shikov",
    "email": "ashikov@google.com",
    "time": "Mon Jun 20 14:42:24 2022 +0100"
  },
  "committer": {
    "name": "Andrei Shikov",
    "email": "ashikov@google.com",
    "time": "Thu Jun 23 00:10:15 2022 +0100"
  },
  "message": "Optimize scope removal in SnapshotStateObserver\n\n`.clearIf` is frequently called after applying changes and usually only one node is removed at once. Iterating over tracked scopes in this case is more efficient than going through both internal structures.\n\nTest: SnapshotStateObserverBenchmark#modelIncrementalClear\nFixes: 236591959\n\nChange-Id: I151658a49fbfad931956096e782a2fdea862cbfb\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "25e96a6c77966435eb88e114adf0cdfa5fb1b79a",
      "old_mode": 33188,
      "old_path": "compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SnapshotStateObserverBenchmark.kt",
      "new_id": "7b760be54d3fb65590aca9a52198fe2304ffa630",
      "new_mode": 33188,
      "new_path": "compose/runtime/runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/runtime/benchmark/SnapshotStateObserverBenchmark.kt"
    },
    {
      "type": "modify",
      "old_id": "890dd67e98d901fd1ecba06583189e82a58724af",
      "old_mode": 33188,
      "old_path": "compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserver.kt",
      "new_id": "e462c814abfec775338c6017053758e7dde3af7d",
      "new_mode": 33188,
      "new_path": "compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/snapshots/SnapshotStateObserver.kt"
    }
  ]
}
