)]}'
{
  "commit": "8d89cbb271d7992a7dfa5ce06af2ab78b81494ef",
  "tree": "4f470bb9387a914e2675c6f195aefc79e2ecfdb1",
  "parents": [
    "0a8600da5a0485c62404c4db3fad84e286c37154"
  ],
  "author": {
    "name": "Christoffer Quist Adamsen",
    "email": "christofferqa@google.com",
    "time": "Thu Jul 05 12:55:33 2018 +0200"
  },
  "committer": {
    "name": "Christoffer Quist Adamsen",
    "email": "christofferqa@google.com",
    "time": "Thu Jul 05 12:55:33 2018 +0200"
  },
  "message": "Towards an inlining oracle for jar code\n\nIt is only possible to merge a type A into its subtype B if A.\u003cinit\u003e() can be inlined into B.\u003cinit\u003e(). Thus we need to be sure that A.\u003cinit\u003e() can in fact be inlined into B.\u003cinit\u003e() *before* we merge the two classes.\n\nThe current infrastructure does not allow us to determine if this is possible, since we only have the jar code available by the time we run the vertical class merger, and the inliner looks at the instructions in the IR to determine if a method is eligible for inlining (see Inliner.computeInliningConstraint).\n\nTo address this problem, this CL creates a new visitor for ASM code called InliningConstraintVisitor that carries out the same checks as Inliner.computeInliningConstraint.\n\n(Note that the implementation of InliningConstraintVisitor is still incomplete.)\n\nChange-Id: I535425554bbeba4da0a2bd57f281a866b7ffdcef",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "640172ff53995e55cb863323e042370e4b4bb901",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/graph/JarCode.java",
      "new_id": "d64eaf01a8f3d0ff790cc0426596e9d4b3ed4b23",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/graph/JarCode.java"
    },
    {
      "type": "modify",
      "old_id": "b343de77087cc0a002640ebb7a36f6b50a526daa",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokeDirect.java",
      "new_id": "1ad50bccfaa1d0bbf80b0504508bd2dff3b672e7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokeDirect.java"
    },
    {
      "type": "modify",
      "old_id": "ff8f0d0be7641113d73e2d54143dfa544e0ee55a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokeInterface.java",
      "new_id": "0fb447bf9743ab65ad0ba74b2d39ef87aae1b8eb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokeInterface.java"
    },
    {
      "type": "modify",
      "old_id": "5fe89727d70d1116fd2adf768a7d937853c4bd12",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokeMethod.java",
      "new_id": "56b659a03f4cae31fd285b7c5d49156124042fac",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokeMethod.java"
    },
    {
      "type": "modify",
      "old_id": "81d4cdc5d8f2953218fe81f47272246d1c4de1df",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokePolymorphic.java",
      "new_id": "91f657d6287314a1084e3170243dc42f9d1f8f46",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokePolymorphic.java"
    },
    {
      "type": "modify",
      "old_id": "94df8d38419475263033fc7ee93250929ad44d25",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokeStatic.java",
      "new_id": "b985916b9dd48fef4cf2f59ba712ad6b39c3cc6f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokeStatic.java"
    },
    {
      "type": "modify",
      "old_id": "e5bd6040bdcbfcb458003373046bb4f1c2c920ed",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokeSuper.java",
      "new_id": "64f0d7beeb1f1704d15f882332f1be21e9f0ae57",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokeSuper.java"
    },
    {
      "type": "modify",
      "old_id": "d104270fef42fb097249a7d15de9be42c3b63650",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java",
      "new_id": "85c80edf16500c34e94dcdda83d7a8da741aacdf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d4a06cd3152f60a16f958786ba7816c599c6d95b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/ir/optimize/InliningConstraints.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5652be8fc72e40117250359153b03e5530bb4b3f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/jar/InliningConstraintVisitor.java"
    },
    {
      "type": "modify",
      "old_id": "531c7311008435702b7da31fe67e4095ffcdebf5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java",
      "new_id": "0ed3c112e5aecce53c52d94bcfb0127896a7d12f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java"
    },
    {
      "type": "modify",
      "old_id": "c2df29adf4a38a25b1d60532852bcc68621a7c59",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java",
      "new_id": "55f0919a1139ad8d9e9a860645c00fc8b9ce4f21",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java"
    }
  ]
}
