)]}'
{
  "commit": "de1880a92ea575cdb1b237d8e4311a6f27f7032a",
  "tree": "cbdd808a7845e0d0714ee725774fefbe45c26bf7",
  "parents": [
    "64b376712bebd66fdfa9faf27026d7234df812a3"
  ],
  "author": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Mon Jun 22 13:00:32 2026 +0200"
  },
  "committer": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Mon Jun 22 13:00:32 2026 +0200"
  },
  "message": "Merge simple non-abstract methods into abstract methods\n\nThis introduces a new optimization that attempts to merge non-abstract virtual methods into the abstract methods they override, to reduce the overall method count.\n\nExample:\n\nabstract class A {\n  abstract boolean m();\n}\nclass B extends A {\n  @Override\n  boolean m() {\n    return true;\n  }\n}\n\nGets optimized into:\n\nabstract class A {\n  boolean m() {\n    return true;\n  }\n}\nclass B extends A {}\n\nBug: b/241190995\nChange-Id: I4925bb25f69d58962199a4f82212139eaa47f3ec",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "376be979a470192d530c7bb2f67322611a0a936a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/R8.java",
      "new_id": "3aaecc5fe9499cbe71e1d5f1772fb98e8f1d3e46",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/R8.java"
    },
    {
      "type": "modify",
      "old_id": "4fa727096169927a864f4dc2fc3e99b8b8556bc4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/AppView.java",
      "new_id": "5277d5d6a199396e5e24cb24f395bb1b4124613a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/AppView.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aa8a5a5c50e84176455b7caebe7263e2330e8f83",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/optimize/virtualmethodhoisting/VirtualMethodHoister.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47af9d123f747266d3cc9d5ee903ef8cc32466cd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/optimize/virtualmethodhoisting/VirtualMethodHoisterLens.java"
    },
    {
      "type": "modify",
      "old_id": "ee067de998719f7c429bc328049ed8127eb7d3ab",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureMap.java",
      "new_id": "6ec6d19612fa2ff93754c2e5ff952e03604708cd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureMap.java"
    },
    {
      "type": "rename",
      "old_id": "bb9a37b6830c46b093680cae25ab4236278acdb5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/classmerging/ClassMergerMode.java",
      "new_id": "bae4e34146ae250173a578de0fe6296b2a01442d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/ClassMergerMode.java",
      "score": 76
    },
    {
      "type": "modify",
      "old_id": "b64c347e91eaf6f26d40994018d68181089a68dd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/IncompleteVerticalClassMergerBridgeCode.java",
      "new_id": "e129b0c3d2b0636b0b21d616d3e8454eeda56caa",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/IncompleteVerticalClassMergerBridgeCode.java"
    },
    {
      "type": "modify",
      "old_id": "5af18036109e5c35b509162b98f05a592dddd5c8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java",
      "new_id": "a36a91c6f4934d203804d60d5dc6e625cefb6624",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java"
    },
    {
      "type": "modify",
      "old_id": "aaeae0e3b8cd839f928d6a2375b4dcc51544d16a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerOptions.java",
      "new_id": "32ce8213b338da551dfafaca31051ef99e85384c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerOptions.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2cd16d000f7e43158029b0e226f0fe74d3e43e3b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/optimize/virtualmethodhoisting/VirtualMethodHoistingTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0fae771a1f222360454bb43300ecab7bc50cf3e3",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/optimize/virtualmethodhoisting/VirtualMethodHoistingTwoLevelsTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e93f769090f12033f9b2b3ea598107ad272e50b3",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/optimize/virtualmethodhoisting/VirtualMethodHoistingWithNonReboundReferenceTest.java"
    }
  ]
}
