)]}'
{
  "commit": "64ecd073c4365750b4b2c45db9a27026f46302e2",
  "tree": "607d881ef7b793c5222d5fecd35860ee1343859f",
  "parents": [
    "40d57bebee32cccb1436aaaa2f990dac45ffce8b"
  ],
  "author": {
    "name": "Jinseong Jeon",
    "email": "jsjeon@google.com",
    "time": "Wed Aug 29 18:28:56 2018 -0700"
  },
  "committer": {
    "name": "Jinseong Jeon",
    "email": "jsjeon@google.com",
    "time": "Wed Aug 29 18:28:56 2018 -0700"
  },
  "message": "Do not alter already native/abstract methods while tree pruning.\n\nIf native method is targeted but not live, TreePruner regards that as\nnon-abstract, and adds throwing instructions. That results in dex2oat\nerror: a method has code, but is marked native or abstract.\n\nAlso, a couple of refactorings:\n+ introduced hasCode() and shouldNotHaveCode() into DexEncodedMethod\nand applied them to relevant use points.\n+ assert we\u0027re not making final method _abstract_, which is found\nwhile trying a little bit different approach.\n\nBug: 113138046\nChange-Id: I04da7d4e56aed836376824efa3cba530b1522cd3\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f1b14b3afe044f36e14c99ec92bc4c07acdafb1f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/dex/FileWriter.java",
      "new_id": "6ac38269b184c42b0917b28ad63032d7289e983b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/dex/FileWriter.java"
    },
    {
      "type": "modify",
      "old_id": "8a98122774d591f2f07bfcd30f50e777969efe6f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java",
      "new_id": "248765d57a0e7287f9c50afaa99e4114d8f1d3ca",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java"
    },
    {
      "type": "modify",
      "old_id": "c5993dd4b397ddfcaf939cbbcafb1581341e1a80",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java",
      "new_id": "bab3ec4c87ea73632e9fe334958ecfb24e8ca8d0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/staticizer/StaticizingProcessor.java"
    },
    {
      "type": "modify",
      "old_id": "9562ac15dcb088e714d75eaf64d236cc4d32c14d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java",
      "new_id": "1498be4dac1b8b74afb0dc6810d8a91566ab6f66",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java"
    },
    {
      "type": "modify",
      "old_id": "1feed4dc3a15c3540af42e85c5785841b83da4c9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java",
      "new_id": "b2be4a9717c906277dab42689229b16982c0e516",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java"
    },
    {
      "type": "modify",
      "old_id": "1dd6e31681e89c764c7e14cd6319586ae4fb1c75",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java",
      "new_id": "fc28ab003d312d6946e6d171fa438278883534c2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java"
    },
    {
      "type": "modify",
      "old_id": "b91c27dc192395e2520e10f2265bf95e0868de06",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/TreePruner.java",
      "new_id": "77f912900f5c3fe62a833a42ce1fa58d2d614088",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/TreePruner.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3eb1247ab5ac7f6a15c5e1b160d93336686cc294",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/b113138046/B113138046.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3737ea0a4c3a9cea12c46131ab91535320e56854",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/b113138046/NativeMethodTest.java"
    }
  ]
}
