)]}'
{
  "commit": "ff4d5858bb45dc9090f0bd05325eb5bfb8ebd6fc",
  "tree": "f873815dd84c88e0323c5d7e895415614db81913",
  "parents": [
    "cb1938ee3ecdd9cf8481e0471741631b9c8f346d"
  ],
  "author": {
    "name": "Denis Vnukov",
    "email": "vnukov@google.com",
    "time": "Mon Feb 05 09:02:44 2018 -0800"
  },
  "committer": {
    "name": "Denis Vnukov",
    "email": "vnukov@google.com",
    "time": "Mon Feb 05 09:02:44 2018 -0800"
  },
  "message": "Flipping if statement in case fall-through successor always throws.\n\nIn case an if instruction has fall-through successor which always throws an\nexception while the other (\u0027true-target\u0027) successor does not, it is very\nlikely that this if instruction serves as a safeguard for assertion-like\ntest, for example for null checks.\n\nIn this case we assume that always throwing branch is executed very rarely\nand \u0027true-target\u0027 branch is what is executed more frequently since it\nrepresents no error scenario.\n\nFor such if instructions we flip the branches and invert the test, so the\nnon-error branch becomes a fall-through successor. This helps improve\nperformance on ART.\n\nBug:\nChange-Id: I814003fe4487ca3a55c1acb77b5b4d11fc310b3c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bee0910d8b8c09fc7e25354e5e516396c9d19327",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java",
      "new_id": "931fbfacccc3acadf32011fd9f1f18a05156fc3e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "8fe89bbb8fec3b5baa74d5bcffaaa41390fd2454",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/BasicBlock.java",
      "new_id": "02a2dd9d8960356391d79b27a830909505f223d9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/BasicBlock.java"
    },
    {
      "type": "modify",
      "old_id": "d9bae9ec05c5d24aa791628515493368707b4e7c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java",
      "new_id": "a849e91aa1cf0bfca26368c3f7db2a477b8c30e2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java"
    },
    {
      "type": "modify",
      "old_id": "9dbfb13d6ec81ccc50ef662f7058447f71899996",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/movestringconstants/MoveStringConstantsTest.java",
      "new_id": "490162ac549780ebc5842f7a0587730c2f0db10b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/movestringconstants/MoveStringConstantsTest.java"
    },
    {
      "type": "modify",
      "old_id": "b801804eee740b7e2650e82816c80f3cf4662e62",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/movestringconstants/TestClass.java",
      "new_id": "bf13fc3299cff26cac0c04bab8ead9fe31616679",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/movestringconstants/TestClass.java"
    },
    {
      "type": "modify",
      "old_id": "7db0d6c7a9b1458cfc68bc1aa9620e41816074ae",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/utils/DexInspector.java",
      "new_id": "d4cec963241f1c2abdcb2062920c4d717b100d83",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/utils/DexInspector.java"
    }
  ]
}
