)]}'
{
  "commit": "0f36671578ba35c1427ab815f3a8564ef35650e0",
  "tree": "3aacc6687329989e384cde83fa339fb9fabebfd5",
  "parents": [
    "b40740620faa4ae6ccdda2572973fc70525b1ebe"
  ],
  "author": {
    "name": "Christoffer Quist Adamsen",
    "email": "christofferqa@google.com",
    "time": "Sun Jun 13 14:45:05 2021 +0200"
  },
  "committer": {
    "name": "Christoffer Quist Adamsen",
    "email": "christofferqa@google.com",
    "time": "Mon Jun 14 07:39:23 2021 +0000"
  },
  "message": "Use arraycopy to create enum values array in enum unboxing\n\nThis changes such that a shared utility class now contains (n being the largest enum value of any unboxed enum):\n\n  public static final synthetic $VALUES \u003d\n      new int[] { 1, 2, 3, ..., n };\n\nAccesses to MyEnum.$VALUES and calls to MyEnum.values() are rewritten to MyEnum$LocalUtility.values() (m being the largest enum value of MyEnum):\n\n  public static final synthetic values() {\n    int[] result \u003d new int[m];\n    System.arraycopy($VALUES, 0, result, 0, m);\n    return result;\n  }\n\nThis returns a copy of the underlying $VALUES array when accessing it via a field read. The $VALUES array generally only has a single use, which is followed by a call to clone(). This CL therefore identifies the call to clone() and removes it.\n\nAs a result of this, MyEnum.$VALUES \u003d\u003d MyEnum.$VALUES will return false (but Arrays.equals(MyEnum$VALUES, MyEnum$VALUES) is true). If this turns out to be a problem, we can consider disabling enum unboxing of enums that have unsupported reads of $VALUES.\n\nChange-Id: I543fb1b73bf34faa12486d00137ca1d0d10cf863",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "14f001528917a25721be125d8e4b7b5a07d0bc57",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/CfCode.java",
      "new_id": "3d1a24619bebcc187d45bdb5d38221aea12e7071",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/CfCode.java"
    },
    {
      "type": "modify",
      "old_id": "0611cdd5ce6e90b4f794db21bd3d7775316f1096",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexEncodedField.java",
      "new_id": "da8323cebf44a42a987ddd311ac436c04b44c943",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexEncodedField.java"
    },
    {
      "type": "modify",
      "old_id": "dedc362bc254385555043b11aac1c91b161a2558",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexItemFactory.java",
      "new_id": "d7a48c1023b08d57abeba5d0cee76c19b977f08c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexItemFactory.java"
    },
    {
      "type": "modify",
      "old_id": "1697f4355bdf6e372044a26284d314c9862f258c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/FieldAccessFlags.java",
      "new_id": "850c3cbd0663d71e20e771159138e9a6f1c4418e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/FieldAccessFlags.java"
    },
    {
      "type": "modify",
      "old_id": "21608cf8c063f7993c2fbd3998f93d01d49f9946",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java",
      "new_id": "44896ea9ff5325c93b69e48218b7b45b2809aaeb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "7f06207df7a0be5feb01cc9bca502d308b4aaa9e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/conversion/PostOptimization.java",
      "new_id": "30c873d95de84cfc16e627f19b9323c54469556e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/conversion/PostOptimization.java"
    },
    {
      "type": "modify",
      "old_id": "3403e7bef1c5572fdc1ae8e734e16c760ef05a0f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/CallSiteOptimizationInfoPropagator.java",
      "new_id": "2f04f11ce50a666a84de516bc64dc7d88611d482",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/CallSiteOptimizationInfoPropagator.java"
    },
    {
      "type": "modify",
      "old_id": "a6f246f10df49b9c4bdaf0039a62a6410e4fafd2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/Inliner.java",
      "new_id": "9e8236137408d2b66589036574db18d9d12e82c6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/Inliner.java"
    },
    {
      "type": "modify",
      "old_id": "07471e78c5c3263729090bb1f6b4b0fb8bc91cf7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumDataMap.java",
      "new_id": "b47ec05d530e31b3904332258375f40482fffd60",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumDataMap.java"
    },
    {
      "type": "modify",
      "old_id": "7bc7e56689a913fa2a25d1f79e007798cb6b54d2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java",
      "new_id": "edd774e43b9933a2c30cf6e50542b4582300bdbd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java"
    },
    {
      "type": "modify",
      "old_id": "9b159f24c2354b626ba02672533fcc1853debcb8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java",
      "new_id": "3bbd63616374ca5a07403e076e432cd20f6f7b17",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingRewriter.java"
    },
    {
      "type": "modify",
      "old_id": "d36d9b7826a35452f8ac59076c86a8cf7da0b47d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java",
      "new_id": "8bab979df2ed687385f785124f7d0b0429b8a60a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6026c71095e80985326a59e5edb5c9ee4b9b225e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingUtilityClass.java"
    },
    {
      "type": "modify",
      "old_id": "dda477974a9da0faba397781f05cf1f4d04510fa",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingUtilityClasses.java",
      "new_id": "1753375e5ddc43a9670e3b47560bb830ee153ed0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingUtilityClasses.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f4d4636f3fa5d2174352668dadbe4289d346ee51",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/LocalEnumUnboxingUtilityClass.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "19adc9f1b0ce826ac580aaaa883cc6ae6fa25aa1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java"
    },
    {
      "type": "modify",
      "old_id": "faf1061310f8116e4b15042683c06399a280e0e6",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/enumunboxing/DoubleProcessingEnumUnboxingTest.java",
      "new_id": "e7b5dce10d8762370096c5960f932e1024f4c45c",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/enumunboxing/DoubleProcessingEnumUnboxingTest.java"
    },
    {
      "type": "modify",
      "old_id": "58d220f43a83e18dbec636a222e208c628b28c61",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/enumunboxing/DoubleProcessingMergeEnumUnboxingTest.java",
      "new_id": "4ef092dc8b5c662b81a89b4dde99a55e15ad4e69",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/enumunboxing/DoubleProcessingMergeEnumUnboxingTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "82c48ebb16e148b8644a6a4c310ecd6df75e56b2",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/enumunboxing/RedundantValuesCloneEnumUnboxingTest.java"
    }
  ]
}
