)]}'
{
  "log": [
    {
      "commit": "b9aec2ccd8b9f39a4ddadde5ca8304cea6b1b188",
      "tree": "86154f70ec4a971540363673236bf6b3ff81593c",
      "parents": [
        "9d4d13f38398e880e610323242fe73d609bac40d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 23 22:23:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 11:17:20 2015 -0700"
      },
      "message": "ART: Check for duplicate classes when loading oat files\n\nOat files are usually produced standalone, and the compilers take\nadvantage of any information they get. It is thus possible that\nwhen compile-time and runtime class-path are not the same, classes\nare resolved differently and optimized code is incorrect.\n\nThis is a very conservative check, scanning the complete class tables\nof dex files. In case any duplicate class is found, the new oat file\nwill be rejected and the original dex files will be used in interpreted\nmode.\n\nA possible refinement to this is actual tracking of the compile-time\nclass-path instead. That is however significantly complicated by the\nDexFile API and the non-standard uses it allows.\n\nAn alternative for both optimized code and correct resolution is\nnative multidex. Apps should switch to multidex and benefit from\nthe optimization as well as the shift of all compile time to install\ntime. Split APKs are currently compiled separately, but it is a goal\nto change that install flow to simulated multidex.\n\nChange-Id: Ib9e0db5091e060e3bb2c0e5e6c007430becbfc21\n"
    }
  ]
}
