)]}'
{
  "commit": "95c1b22fe3a8645696a4e396fb3a3d5dd5f4a55c",
  "tree": "48d00843bb3ca960ecb8b0c55d4e11fac298108d",
  "parents": [
    "3cbf0295a446cfec319a3a37a55bb6c10b8dd3cc"
  ],
  "author": {
    "name": "Andrew Grieve",
    "email": "agrieve@google.com",
    "time": "Fri Nov 17 10:47:24 2023 -0500"
  },
  "committer": {
    "name": "Andrew Grieve",
    "email": "agrieve@google.com",
    "time": "Fri Nov 17 10:47:24 2023 -0500"
  },
  "message": "Adds (disabled) String.format() optimization\n\nSupports %s, %d, and %b without any modifiers.\n\nSupports phis and catch handlers via a new helper:\nValueUtils.computeSingleUseArrayValues(), which I\u0027m hoping will\nbe usable in other spots that optimize arrays.\n\nCan be enabled via system property.\n\nBug: b/244238384\nChange-Id: I5154058b44f0e4a14e3019d74658225e380cbd87",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aabacd05750fb78466708816ebd16c0e98f1e836",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexItemFactory.java",
      "new_id": "92ceda82125c176c050de92a78df2a5e8f8a9898",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexItemFactory.java"
    },
    {
      "type": "modify",
      "old_id": "f30ca8b45b9c87b74c3855ad53d98df02da78870",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/EnumMethodOptimizer.java",
      "new_id": "f5cc0a5cee43e7af87c75fb1ff4121bd0626c7b3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/EnumMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "fc72c7b30142674ec29ed869fcad0357cc90321c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMemberOptimizer.java",
      "new_id": "f47e771239b35eef8cb69096fe0d0ae44f69e029",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMemberOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "629e706a16102555f1a93cc3b1b4519d3fa6c614",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMethodModelCollection.java",
      "new_id": "ab2ea9c2021974fada167403459bfea59818ccb3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMethodModelCollection.java"
    },
    {
      "type": "modify",
      "old_id": "54b779d287d8ca8c0e135ba3bec76047392b9794",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LogMethodOptimizer.java",
      "new_id": "f4de53a66c45ca4d54d0e699a471938e42c320bf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LogMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "f772797e239373d0024c844861a4e0dc48b5ae56",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/NopLibraryMethodModelCollection.java",
      "new_id": "64d17152f78d2b70ef7d3844c95d44dc9d427092",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/NopLibraryMethodModelCollection.java"
    },
    {
      "type": "modify",
      "old_id": "f7340c4511cc2ff889178c9b934c6968187e9a1a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/ObjectMethodOptimizer.java",
      "new_id": "90ad90216a5558205e6be7bfc4c69cbf6f0aa45b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/ObjectMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "23a5d36681a9233e882e6c1d0c7723834098a91a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/ObjectsMethodOptimizer.java",
      "new_id": "8fe29c917cead07fcd1c181d40eff251111d02da",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/ObjectsMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "a9be970820933a86a80b6fe8d9867de8496431a7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/StatelessLibraryMethodModelCollection.java",
      "new_id": "4a73b82612a989dc7de50cc29543243e5fa6fb04",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/StatelessLibraryMethodModelCollection.java"
    },
    {
      "type": "modify",
      "old_id": "ea10630c8e231412874a970cb8a9bfda15b4c753",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/StringBuilderMethodOptimizer.java",
      "new_id": "5f1d8758a897b762c9ebeceda42e7a0ec29368fb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/StringBuilderMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "d95a1a99205dc8184c839050ca5795165a47ea2c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/StringMethodOptimizer.java",
      "new_id": "a43cbe6e956cd15e73bbe3f44e479a3ab47c2f55",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/StringMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "5bf57b13857a6d36043593571ba9cb4a7d3a17fd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/primitive/BooleanMethodOptimizer.java",
      "new_id": "395386dac57a2df358a26f60eab675fcd15cb60c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/primitive/BooleanMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "d80bdc14017f34c183ac2357d02d18f3fe8a9c1a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/primitive/PrimitiveMethodOptimizer.java",
      "new_id": "96d23ceb79323ef49cc67278bffcde86cff9525c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/primitive/PrimitiveMethodOptimizer.java"
    },
    {
      "type": "modify",
      "old_id": "51c126163e8266aa7d9210b56a44db77a80821f4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/utils/InternalOptions.java",
      "new_id": "2819a7434835c7a870175ec361513d806891c404",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/utils/InternalOptions.java"
    },
    {
      "type": "modify",
      "old_id": "60b2e4e862ead61ffae1b096e72ae5b244e3b8b0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/utils/ValueUtils.java",
      "new_id": "dcb72ad4d732d0384917046e8291750d06876c8a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/utils/ValueUtils.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0f49f156321171167479b73e6d094487c6bc02ea",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/string/StringFormatTest.java"
    }
  ]
}
