)]}'
{
  "commit": "39aa68eb5befebe19ac8a97f13cea9feab8cd132",
  "tree": "3c030c4fb98f6b829ea12cba97cc722ab81fbeec",
  "parents": [
    "40e2e3fd832f731d4536910400f8dfc6b67aada5"
  ],
  "author": {
    "name": "Clément Béra",
    "email": "clementbera@google.com",
    "time": "Thu Oct 15 10:35:24 2026 +0200"
  },
  "committer": {
    "name": "r8-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "r8-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Oct 22 02:05:14 2026 -0700"
  },
  "message": "Support Kotlin $ENTRIES via side-effect inference\n\nInfer that the Kotlin $ENTRIES initialization has no side effects\ninstead of modeling kotlin.enums.EnumEntriesList.\u003cinit\u003e in the library\nside effect models.\n\n- Record context-sensitive instance initializer info for constructors\n  that only have side effects due to argument null checks, such as\n  EnumEntriesList.\u003cinit\u003e(entries).\n- Side effect free invokes in constructors no longer mark all fields\n  as read nor make the constructor have side effects.\n- Allow modeling of the state of most remaining Kotlin enums, enabling\n  other enum optimizations on them (on-going work on type switches, enum\n  unboxing, WhenMapping removal, etc.)\n\nBug: b/268005228\nFixes: b/461691875\nChange-Id: I0135a7e5898245bbfacb0187dffa9fa7d6fafe2a\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "20e9b6149427572de4ca4d2144bc4eb779558329",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexItemFactory.java",
      "new_id": "1c10d5c357977ff612ce86d42e07716ded94a6b9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexItemFactory.java"
    },
    {
      "type": "modify",
      "old_id": "87a66fcf34b61da33031a48fd595a23ec027b29e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java",
      "new_id": "4a9271ea0d0f77523ae3168dc5d80db6304f5eca",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/MethodOptimizationInfoCollector.java"
    },
    {
      "type": "modify",
      "old_id": "de71f01f67293488eb726d94197db1decc0dd6e8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/ContextSensitiveInstanceInitializerInfoCollection.java",
      "new_id": "44f561f04899d1744141968daf9f3111752eb176",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/ContextSensitiveInstanceInitializerInfoCollection.java"
    },
    {
      "type": "modify",
      "old_id": "8c28004d589d8cfb90f234379cade2c32db7b500",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfoContext.java",
      "new_id": "295a522e9331fa101a018f1bac8a037cfc4b9a23",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/InstanceInitializerInfoContext.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3013a994e6228223a224cc638b9a73e68ac4beca",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/info/initializer/SimpleInliningConstraintInstanceInitializerInfoContext.java"
    },
    {
      "type": "modify",
      "old_id": "4f3ba3182b01cefab034c46a91cfa6e81eb75c8f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMethodSideEffectModelCollection.java",
      "new_id": "68b03ce3ad95c0a34e78e911bde5be1192ff4eb3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMethodSideEffectModelCollection.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eda3e08ac74bc39a645301187b4908ba81b4959a",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingNullCheckedArgumentSideEffectTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bb22f37d104b8694948247da6ab577387f4c3ee3",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/enumunboxing/kotlin/EnumEntries.kt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "31d9dd3eacc9d772e1f1ce6f5e59726202b609ba",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/enumunboxing/kotlin/KotlinEnumEntriesEnumUnboxingTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "75d0ca4c72edd20430f20770967e415c4e84f773",
      "new_mode": 33188,
      "new_path": "src/test/java8/ir/com/android/tools/r8/ir/analysis/sideeffect/InstanceInitializerWithArgumentNullCheckSideEffectTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "27407c61e605fb156764881fd04bc8a2992ee69c",
      "new_mode": 33188,
      "new_path": "src/test/java8/ir/com/android/tools/r8/ir/analysis/sideeffect/InstanceInitializerWithManyArgumentNullChecksTest.java"
    },
    {
      "type": "modify",
      "old_id": "d4dade192ff40d418f00e5d1f4be1a98e7e29527",
      "old_mode": 33188,
      "old_path": "src/test/java8/kotlin/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java",
      "new_id": "0b19f8b4b499a9f8557038591e251ce243a256c7",
      "new_mode": 33188,
      "new_path": "src/test/java8/kotlin/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java"
    },
    {
      "type": "modify",
      "old_id": "b438fb98604c184a6524e4ecc3ae14cded558da4",
      "old_mode": 33188,
      "old_path": "src/test/testbase/java/com/android/tools/r8/TestBase.java",
      "new_id": "9f1f2a2b36549f6ac6dadd1d05e58a66221fccaa",
      "new_mode": 33188,
      "new_path": "src/test/testbase/java/com/android/tools/r8/TestBase.java"
    }
  ]
}
