)]}'
{
  "log": [
    {
      "commit": "1061c7d2bf7a559abe5a234c680b27b8838862ca",
      "tree": "b9e299414fbdb05f9763a71fe46b9078449eaac6",
      "parents": [
        "8b959958d1df3545957ddbce2be2ea21003a121c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 23 21:00:29 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Clean up profile AddMethod APIs\n\nRestructure the profile assistant test to use the same APIs as profile\nsaver and\nclean up all the other usages for AddMethodIndex and AddMethod.\n\nBug: 139884006\nTest: m test-art-host\n\nChange-Id: Icf76d6aa05f0f9dcc589182196ca34a0298f2cb7\n"
    },
    {
      "commit": "a6c9b78a3f2c7a7f39761427dcd32e0bf6c546f3",
      "tree": "59676cd563b71a5bb866681224a9ac9b2d35991a",
      "parents": [
        "38cf1105e340888f075517936679cce1864fd0b4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 16 18:57:26 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 24 23:22:12 2019 +0000"
      },
      "message": "Consolidate profile methods\n\nRemove unnecessary profile APIs or the ones that were added only for tests.\nThis makes the profile data flow much easier to understand (as we have to follow\nfewer entry points when adding methods and classes). It will also make it easier\nto restructure the profile format with new data.\n\nTest: m test-art-host-gtest\nChange-Id: I09ea91229278877d16b12af7a0b356ccceb4b520\n"
    },
    {
      "commit": "e58624f221b967553d7b71f14d8677ceaa000553",
      "tree": "00d6caa5ca66562d9c8e448abc77c0c6018fca0c",
      "parents": [
        "48349ad38887f65da76df268f8e548d508d8c6a1"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Fri Sep 20 15:53:40 2019 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 24 17:40:00 2019 +0000"
      },
      "message": "Various renames following the name change from \"Runtime APEX\" to \"ART APEX\".\n\nIn particular ANDROID_RUNTIME_ROOT is now ANDROID_ART_ROOT.\n\nTest: Build \u0026 boot\nTest: art/tools/run-gtests.sh in chroot\nTest: art/test/testrunner/testrunner.py --target --64 in chroot\nTest: art/tools/run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64 in chroot\nTest: art/tools/run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64 in chroot\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --host --64\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost\nBug: 135753770\nChange-Id: Ia74da964e54cf396d66e9e12ea56da4e9483662a\n"
    },
    {
      "commit": "fb6a5c00ef02cda7ea919d717daaf46abd0414e4",
      "tree": "9ecfaac9bee174b3b31e0294c46c4d32a5f7b714",
      "parents": [
        "f160394fda141184f0ec3d139ec5ca810f142bda"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Mar 29 20:20:16 2019 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Apr 12 13:47:09 2019 +0100"
      },
      "message": "Add and use art::GetAndroidRuntimeBinDir.\n\nThis method returns the location of the directory containing the\nAndroid Runtime binaries, which is expected to be the Android Runtime\nAPEX\u0027s bin directory on target and the Android Root\u0027s bin directory on\nhost (at least for now).\n\nAlso remove art::CommonArtTestImpl::GetTestAndroidRoot as it is no\nlonger used.\n\nTest: ART gtests on host and target\nBug: 121117762\nChange-Id: I4593bbd4d675ca9d3f7b708482aac82c1892a9ad\n"
    },
    {
      "commit": "93aa8b035fe17bee04d3271a3595e3c098d63937",
      "tree": "6ea6675d9a1763d40e1d5abea58236d65c2c72f3",
      "parents": [
        "f75dce49ebe792cfd0b62c59c86fdc793926ee4d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 08 13:40:29 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 09 04:12:55 2019 +0000"
      },
      "message": "Fix include order\n\nFix a code review comment that came in after submit of aog/940389.\n\nBug: None\nTest: make test-art-host-gtest-dexlayout_test\nChange-Id: I093440a027541f94a96c594a624757c2f2c7948c\n"
    },
    {
      "commit": "a8d23cb7febebc44ddfc03a3a135bb983eb95029",
      "tree": "6228c445b8321eec2c813802aefa7ce593acee64",
      "parents": [
        "1ea8a62e320cb53b65910093b35240b3139b2cfa"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 08 11:29:11 2019 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 08 20:20:18 2019 +0000"
      },
      "message": "Use CommonArtTest for dexlayout, dexdiag\n\nUse the non-Runtime CommonArtTest for dexlayout and dexdiag.  Also,\nmove some lines that should have been put in common_runtime test.h.\n\nBug: None\nTest: build test-art-host-gtest\nChange-Id: Ie2f7feb1c62de4994ea2eac368d352634e088e74\n"
    },
    {
      "commit": "4f215d1b1ceba9dfc8d8f3d8644da81302b2cd86",
      "tree": "34ee009a807d394ab7e1bb7f9ab3b1d36e3c7269",
      "parents": [
        "774232ae5a825ad4a366edc57081bff265e0ac32"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 03 09:28:21 2019 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 04 15:28:48 2019 +0000"
      },
      "message": "Rename dexdump2 to dexdump\n\nComplete the migration from dalvik/dexdump to art/dexdump.\n\nBug: 22322814\nTest: make checkbuild test-art-host-dexdump\nChange-Id: I95d5b83d9855b440f2fe4073f1e1d746fe807888\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "9b031f7e4834b263ae531409a9f6c82cfdc89477",
      "tree": "4b5fdfc3ecc12b5b7e32959bec0c26595b87d2ab",
      "parents": [
        "c71f38bdf7dca39a070ba25d436edcd758551f42"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 04 11:03:34 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 09 14:38:45 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles smaller subdirectories.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I81c8f3396b9922684b68e9f3d8fccefe364f1279\n"
    },
    {
      "commit": "4146840f4a88d7c4f44300758c942fd4d95db17a",
      "tree": "0fb437912c47ab5b5b9e9f9f099102129ba6a409",
      "parents": [
        "ecbb5701276dd5965d68fe825da31637ca62d8c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 29 11:39:00 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 29 14:48:55 2018 -0700"
      },
      "message": "Change dex naming for output directory\n\nWrite to Dex file names to match storage inside APK for -w option.\ndir/classes.dex\ndir/classes2.dex\n...\ndir/classesn.dex\n\nThis makes it easier to overwrite the Dex files in the APK.\n\nBug: 113059564\nTest: test-art-host\n\nChange-Id: Iadf1621402315887165813da4abf00d466f0f623\n"
    },
    {
      "commit": "a34812c0801b8b991b5b5b1d0d5e5a4ccf2bf0ac",
      "tree": "7a45987265ef96b06bfb8d7761f7a83a16c340b5",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 17:10:43 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 18:03:24 2018 -0700"
      },
      "message": "Move dex_file_verifier_test and dexlayout to ClassAccessor\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I01d53eaf45d28fd762800c2716d6bf2dd3c9ad9e\n"
    },
    {
      "commit": "bc802de2244ed9769d1ddf8841d7965a29493d9a",
      "tree": "acac22c89c8cdedb65d6dc0657755851834500f7",
      "parents": [
        "35d4b9410c362685fdd8181483a6126dd3e20cdd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 17:24:11 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 17:25:25 2018 -0700"
      },
      "message": "Revert^2 \"ART: Fix some performance-X tidy\"\n\nThis reverts commit 6856214f2c849600bcb94cc6e84975ba8cb69920.\n\nFix lifetime issue in imgdiag.\n\nTest: mmma art\nTest: m test-art-target-gtest-imgdiag_test\nChange-Id: I919db6310c0713313340adfe66bcd75a1c5c236e\n"
    },
    {
      "commit": "6856214f2c849600bcb94cc6e84975ba8cb69920",
      "tree": "a103f54ec49fac8d5cd15661f5c2d0cb5dab32e5",
      "parents": [
        "89de444350fdbd7df4fb4d95bb71f00e6673b466"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 21:49:11 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 21:49:11 2018 +0000"
      },
      "message": "Revert \"ART: Fix some performance-X tidy\"\n\nThis reverts commit 89de444350fdbd7df4fb4d95bb71f00e6673b466.\n\nReason for revert: Seemingly breaks imgdiag_test on device.\n\nChange-Id: I46084ecb4205575381aafffd90a0f1a1126e8d2d\nTest: mmma art\n"
    },
    {
      "commit": "89de444350fdbd7df4fb4d95bb71f00e6673b466",
      "tree": "57fa7214c4059afcfd11aa35a81999b8558b91b8",
      "parents": [
        "e383d23918db4eede30c3d78589d4639de3ec446"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 18 13:33:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:11:21 2018 -0700"
      },
      "message": "ART: Fix some performance-X tidy\n\nFix performance-for-range-copy, performance-unnecessary-copy-initialization\nand performance-unnecessary-value-param issues.\n\nTest: mmma art\nTest: m test-art-host\nChange-Id: I43d8736fc541030a3c61f66aeee0b9c2f1d295f7\n"
    },
    {
      "commit": "82d046e7c9daad9b706cbec7df7025c5a4ef9163",
      "tree": "92b7deea052015dd64bea6fc72d76c67f69e0e5d",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 23 08:14:19 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 12:37:04 2018 -0700"
      },
      "message": "Add a profiling library\n\nMove profile_compilation_info to a separate library.  Another step\ntowards building many of our tools without libart[d].\n\nBug: 78459333\nTest: make -j 50 checkbuild\nChange-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "2daa13448d5caeb7eb4f7fd3981c0d430264c7c3",
      "tree": "547222519fc7627a99eae914fbaa39eb294a82c6",
      "parents": [
        "b2f1edc3d1f162bd9007f10bc66009eac5b2daab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:19:28 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 22 10:37:31 2018 -0800"
      },
      "message": "Fix unquickening logic for quickened input dexes\n\nIn the case where an input dex is already quickened (i.e.\nobfuscation), do not attempt to unquicken it. This is done by\nswitching the quicken info table to the compact offset table (used by\ncdex debug infos).\n\nAdded test.\n\nPosssible to get a bit of extra savings by deleting the quicken info\nnum entries field.\n\nQuicken filter size regression average on golem: -0.14%.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest-dex2oat_test -j64\nChange-Id: I5534a7509b4c718a9b959fa43b82bde857e0b59e\n"
    },
    {
      "commit": "05f90d133d288b524eaa9deacdc56e7d29ea9f99",
      "tree": "89153d3bccc0aba04423f5712fee09e768d5aa2c",
      "parents": [
        "0efe3243d4f1878e8220ff8bc469beee9ac90518"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 13:47:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 14:56:50 2018 -0800"
      },
      "message": "Avoid generating cdex for dex files with duplicate methods\n\nFor the cases where two different method have the same code item or\ndebug info, avoid generating cdex and write the input dex into the\noat file isntead.\n\nTest: test-art-host-gtest\nBug: 72997076\nBug: 72100771\nBug: 72100668\nBug: 63756964\n\nChange-Id: I5dfe2b47b2c908921c8421367536c2d950186ac6\n"
    },
    {
      "commit": "e1123402f14879643f722885b4748965451be1b2",
      "tree": "63c22592b312cfb66d8cb81ad28f6d297f705f12",
      "parents": [
        "abee76ef780877132cf82c84f42e8ab50e6cc1d1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 01 02:46:18 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Feb 06 17:39:39 2018 -0800"
      },
      "message": "Make libdexfile tests independent of runtime\n\nRemove dependencies on common_runtime_test and related so that\nlibdexfile\u0027s tests can be run independently of the runtime directory.\n\nBug: 22322814\nTest: make -j 50 test-art-host-gtest\nChange-Id: If306c1995e87cbfc944e11fb13c927bc287014ad\n"
    },
    {
      "commit": "9827367cb7a5dd813995ade66def8d28befd50e5",
      "tree": "d1e1e74979a515779e8b82d9f9eb17409d5cf592",
      "parents": [
        "83784ca898f823e6f02c86996626b5e48e328d85"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 11:50:27 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 11:52:04 2018 +0000"
      },
      "message": "Fix failure in CodeItemOverrun on target\n\nUse unlink rather than exec /bin/rm to delete files.\n\nBug: b/72979892\nTest: m test-art-target-gtest-dexlayout_test64\nChange-Id: I91aa87fcf9a4fd91a26c1bb524ce2e8567ddf4c7\n"
    },
    {
      "commit": "a27af08ee0c5f307366be73363369cc1d95d6d4c",
      "tree": "b419ec0515085f2a362da9e123f6531b4d1162b0",
      "parents": [
        "ca6f1c0cb7655e90237583c1b6b771d3c8aae95d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 03 16:12:23 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 05 14:30:15 2018 -0800"
      },
      "message": "Handle code item overruns in cdex code item write\n\nFor the case where code items overrun, use a safe iterator to not\ncrash.\n\nBug: 72315996\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: I2aa8d127aad09ed3c8e6c9f9cc71c4b5646a5307\n"
    },
    {
      "commit": "807b21b2364eee0770d1e24e5f34d71014afbac2",
      "tree": "5b505e6ae4a4cd67b3a4684f9cb7c2803440f6ca",
      "parents": [
        "7a5a3036f9d8f08871c1c6e03dfa25d3641593e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 29 05:18:24 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 29 06:06:49 2018 -0800"
      },
      "message": "Clean up some compact dex comments\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: If8748db7a9e68b6a82656fd9ec8fd8072e92af97\n"
    },
    {
      "commit": "7517555480074dcbd5c6d9472d5a394ce0e88023",
      "tree": "8b9f74989f3e94d810ed99590e8c207a5dc551c4",
      "parents": [
        "bf9eedaac5a9723f022150d0f5fd58cb91779497"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 11:23:01 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 26 14:33:40 2018 -0800"
      },
      "message": "Add dexlayout class filtering\n\nFor fixed_up_dexfile, the returned dex only needs to contain a single\nclass. This CL adds filtering during IR creation to only contain that\nclass. This speeds up wifi tests from 25s to 15s on marlin.\n\nBug: 63756964\nBug: 72064989\nTest: mm test-art-host-gtest-dexlayout_test -j64\nChange-Id: I3648ac886b377d95e33e5b40a63a34c2a9dbde58\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "698ebbca3c54d17c696e87b9e5838df6a5ac9b08",
      "tree": "7887b2cd4662410114f205bbe1896ff094d51407",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 11:00:42 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 09:11:49 2018 -0800"
      },
      "message": "Clean up CodeItemAccessors and Compact/StandardDexFile\n\nChange constructor to use a reference to a dex file.\n\nRemove duplicated logic for GetCodeItemSize.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I69af8b93abdf6bdfa4454e16db8f4e75883bca46\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "73f21d45a41aaad1a02eecdf3bbdbf78ef599d5e",
      "tree": "88d52c615cd8ec5bd8d2fad44fddeef0911e2458",
      "parents": [
        "d096b3a09f0e7129813fb663fec5b5f131565d71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 14:26:50 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 17:53:21 2018 -0800"
      },
      "message": "Remove CodeItem accessor functions\n\nThese are replaced by the accessor helpers.\n\nBug: 63756964\nTest: test-art-host\nTest: test/testrunner/testrunner.py --host -j30\n\nChange-Id: Ic93d60b68b684eeb5f69be286b4e15b8f8f97542\n"
    },
    {
      "commit": "fe9185aa7635ad4885a8f158f7a8feb770f08d7e",
      "tree": "87c5c2d37d823a516b9d68d53557628d81e40795",
      "parents": [
        "6f99acac2e1d60dfb1ed45ce69ec5a542847687e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 21 19:01:10 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 21 19:01:10 2017 -0800"
      },
      "message": "Disable LinkData test for target\n\nSeems to be failing on the target, disable for now until we\nfigure out why this is the case.\n\nBug: 69561363\nTest: make\nChange-Id: I940055a8576164af5c3a1678d14106595ca540cb\n"
    },
    {
      "commit": "2f36d2fdf277e2579e55cd3f54c1683c1b1a84bf",
      "tree": "58bfa3f06e9ab607dd542c83ec0e2088154097a0",
      "parents": [
        "e6779fde5a3c0a8bb484a61398da439a37d25b92"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 15:45:25 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 17:10:00 2017 -0800"
      },
      "message": "Write link data for dexlayout\n\nInstead of not writing out the link data and leaving an invalid\nlink_offset, write it out. Fixes dex verifier failures for a few\nAPKs.\n\nAdded test.\n\nTest: test-art-host\nBug: 69561363\n\nChange-Id: Iec1c331f74f9fd58658d4c13465a3bcb6295ce24\n"
    },
    {
      "commit": "b7c273cb44fcbdab3c17ec69124fe4bbea2696b1",
      "tree": "11242e0bd24427183dd630780825214737ccbda1",
      "parents": [
        "27f5fefeb4a7e87e9537fbdd0ed392d5c1de59df"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 18:07:56 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 18:07:56 2017 -0800"
      },
      "message": "Add ClassDataItemIterator::HasNextMethod\n\nReturns true if there are either static of virtual methods remaining,\nchanged most places to use this where possible.\n\nSlight behavioral change for duplicate method checking, we not\npersist the method index across the static method / virtual method\nboundary.\n\nMotivation: Generic cleanup to remove copy paste.\n\nTest: test-art-host\nChange-Id: I7a1b507e681b2c40452f8a9913b53a96b181e171\n"
    },
    {
      "commit": "693bfbfce9867f19573d352bd754c81c2f0f91a4",
      "tree": "3b5880a4073869fc34d258b0778350a7907d08f8",
      "parents": [
        "4720046dfa1c3f396ac7dbcd3fe6179c1230bed1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 10 12:23:31 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 10 12:25:30 2017 -0800"
      },
      "message": "ART: Fix test dependencies and code\n\nLet profman target test correctly depend on profmand.\n\nCreate a debug version of dexlayout to be used in dexlayout_test.\nFix a bug in ProfileCompilationInfo referring to a nonexisting\nelement.\n\nTest: m test-art-host\nChange-Id: If2220f26c37c25a600399b2637f081c62cae9718\n"
    },
    {
      "commit": "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f",
      "tree": "7948ee1d32e211198a595bb7ed35558d22838da8",
      "parents": [
        "f199f1d3a9816edf9282766a8874d894d7bf87c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 26 17:10:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 01 15:36:21 2017 -0700"
      },
      "message": "Refactor DexInstructionIterator\n\nAdd a way to get the dex PC for the \"for each\" use case.\n\nBug: 67104794\nTest: test-art-host\nChange-Id: I144c459c9a2a03ec8d56842280338d1f7ce1caf0\n"
    },
    {
      "commit": "176190cbf621f867b0cfcabdec8645fc97065567",
      "tree": "dd0d797e7acb1ef3bfdb450b168fc7c6db318225",
      "parents": [
        "62540e3cc58abde95e147210d584614651d858b5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 31 09:58:07 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 01 10:34:30 2017 -0700"
      },
      "message": "Make SafeDexInstructionIterator more robust\n\nMake operator++ set the error state when if incrementing would go\npast the end of the code region.\n\nAdded test in CodeItemOverrun.\n\nBug: 67104794\nTest: test-art-host\n\nChange-Id: I7b27a1ddb60aaae08ae9ed4ba8762ce2a7746770\n"
    },
    {
      "commit": "af7c9028905ccc0bb876e07dbe06921a80be9ebd",
      "tree": "53d7b80fb299e0a34b9951610740935f6f3ca802",
      "parents": [
        "460e09c5a5a09937825fe101d260d5c917144369"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 27 09:42:46 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 30 16:12:55 2017 -0700"
      },
      "message": "Fix DexInstructionIterator overrun bug\n\nHandle cases where the dex instructions can go past the end of the\ncode item in dexlayout.\n\nSince dexlayout runs before method verification, we need to be\ncareful to not go past the end of the code item.\n\nAdded test.\n\nBug: 67104794\nTest: test-art-host\n\nChange-Id: Idf7d51344659b2c75207bdf444e39f271feb8d3a\n"
    },
    {
      "commit": "095c6c96236476b605b3ac672f6d2b8c151e9479",
      "tree": "fe04b7fe93e65efadd3f019dd1ecba4c2c40df18",
      "parents": [
        "b277aa1385f7f4593c9978d8106669142d158f4f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 19 13:59:55 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 14:22:52 2017 +0100"
      },
      "message": "Pass the verify flag to DexFileLoader utilities.\n\nRefactoring-only change.\n\nAlso remove unused DexFilerLoader::OpenMemory.\n\nbug: 30972906\nbug: 63920015\n\nTest: build.\n\nChange-Id: I7cd4b5787565ab1a3457ce2be6bb14657229c550\n"
    },
    {
      "commit": "79c87da9d4698ec58ece65af0065eebd55a1cfe0",
      "tree": "399797f37712da9d20829d5b5059b6c84943cb02",
      "parents": [
        "656e97f949df4081fba908113406b32915174502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 10 11:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 14:47:06 2017 -0700"
      },
      "message": "Add DexFileLoader class\n\nAdded DexFileLoader class, moved functionality from DexFile there:\n- Multidex loading logic\n- DexFile opening logic for Zip and etc\n- Some other helpers\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic3dfa458947d4b69912dea5cdd836e7e8f55061c\n"
    },
    {
      "commit": "641a473912b3bcaaff2c71070611490b7c547cfc",
      "tree": "67bf5b2eaaeaf19c6cebac29984b49c19f172f9b",
      "parents": [
        "5555dd1df3c7f3aaea548c3b657b9325538e9780"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 24 13:21:35 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 08:59:29 2017 -0700"
      },
      "message": "ART: Fix reference-related warnings\n\nMake some parameters and locals references to avoid unnecessary\ncopies.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: Idfed600c7c5492a80f72f51424253bcbea824a94\n"
    },
    {
      "commit": "5555dd1df3c7f3aaea548c3b657b9325538e9780",
      "tree": "41dc0a668aa007540ba9b576e7ece6474019735a",
      "parents": [
        "9e1fb35145bc3fdb36169f6b6717f981d2d102b1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 24 13:50:21 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 08:58:26 2017 -0700"
      },
      "message": "ART: Fix inefficent find/rfind\n\nUse character instead of string versions where possible.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: Ifa0a68f17cf9fac5a8c15a6a1f1d085f0c8dcdd7\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111",
      "tree": "65fd149e1159674681d866e47e485d85b8464334",
      "parents": [
        "d58932f98a673c9d687863a7efafb2da168063a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 16:36:17 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 11:45:06 2017 -0700"
      },
      "message": "Refactor some profiling info functions\n\nDeleted profile_compilation_info-inl.h\n\nAdded a new helper class MethodHotness to reduce the number of\nrequired getters for reading method hotness, startup, and post\nstartup booleans.\n\nTest: test-art-host\nBug: 62040831\n\nChange-Id: I799a38e2bea6177ba5816c54524f4ccacedba772\n"
    },
    {
      "commit": "ea650f3bc4f54eb2c647cf0f7134398ef5038792",
      "tree": "cdddde74424cf9fbeb2ef62e6bebca619c5ed989",
      "parents": [
        "6559ba1cfb9d24fdca4b1b1ec9e0b8dc31679982"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 02 18:25:09 2017 +0000"
      },
      "message": "Move profiles to use bitmaps for startup methods\n\nThis CL enables changes like compiling only hot methods while still\ndoing layout for hot and startup methods.  The bitmaps are also a\nbit smaller for post-launch use cases.\n\nNo change in compilation strategy yet.\n\nFixed some bugs in dexlayout test like using a profile with the wrong\ndex location. This meant the second invocation of dexlayout didn\u0027t\nhave any profile data.\n\nAdded profman support for dump-classes-and-methods,\ncreate-profile-from, and related test.\n\nProfile sizes (bytes) post launch:\nGmail: 7290 -\u003e 6136\nMaps: 22896 -\u003e 18984\nMusic: 8582 -\u003e 7050\nYouTube: 16733 -\u003e 14592\n\nTest: test-art-host\n\nBug: 62040831\n\nChange-Id: I9915b81a2ff2c47464acbbdeb55ce30a33d5483f\n"
    },
    {
      "commit": "d00e02b7614e8edc2e1fd8426ec249747881ccee",
      "tree": "eefbab768f128bdde43d2396f02e3e1fcf2039d3",
      "parents": [
        "0a5ace58e973da278049f837bf2cdbaf7b44849c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 28 17:59:07 2017 -0700"
      },
      "message": "Fix dexlayout fixed point test\n\nPreviously, the dex location did not match the one in the profile.\nThis caused the second dexlayout to not match the checksum and not\nuse the profile.\n\nAlso added a generic function to generate a profile based on an input\ndex.\n\nTest: test-art-host\n\nBug: 62040831\n\nChange-Id: I2b4fb383ec7a46b158f763de13ecbcd8a8c6180d\n"
    },
    {
      "commit": "02ef6403398bb7a2304c321bb37cc916af7e6261",
      "tree": "a519f5785a84f3901209f8521b3b0a5b4f53ff6f",
      "parents": [
        "76e9b6152f3c1fd137cb0686f728ab59299c33d4"
      ],
      "author": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Wed May 17 17:13:39 2017 -0700"
      },
      "committer": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Thu May 18 17:47:52 2017 -0700"
      },
      "message": "Added a fixed point test in dexlayout\n\nBug: 36107940\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: Ied99aa41fbf49b97e3a3421cb78c92c25d9375da\n"
    },
    {
      "commit": "4b8a96be815a921926f2712287ac7bea26131754",
      "tree": "d98e0c6f45c47b7a8c2bc9312b32834e1173b5c7",
      "parents": [
        "4d198e08d2f67c1f63489e3bb1c6c9f71d398917"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 18:00:14 2017 +0000"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 18:00:42 2017 +0000"
      },
      "message": "Revert \"Revert \"Profile compression: Replace method index with difference with the last method_index\"\"\n\nThis reverts commit 509d4240279c09aa755ebbd399fd333380ba40f2.\n\nChange-Id: I9bc1b461b7a34c2016b5a3027011434e1025f7b6\n"
    },
    {
      "commit": "4d198e08d2f67c1f63489e3bb1c6c9f71d398917",
      "tree": "05655c2cccfa668105725afab42715d46a9d7b68",
      "parents": [
        "13b392640f95c1153524096435f939b2908cfb2f"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 17:45:29 2017 +0000"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 10:56:58 2017 -0700"
      },
      "message": "Revert \"Revert \"Compress profile files\"\"\n\nThis reverts commit 1cf1fe29533e63858f094e4b6595b0d8a03aa7cd.\n\nReason for revert: Fixed the test\n\nTest: ART_HEAP_POISONING\u003dtrue \\\n     make -j64 valgrind-test-art-host-gtest-profile_compilation_info_test64\nBug: 36281963\nChange-Id: I5ae8003436d4d2140cd3512aedfc2bf5982ba277\n"
    },
    {
      "commit": "1cf1fe29533e63858f094e4b6595b0d8a03aa7cd",
      "tree": "70520486d9746dbae04345b600bf95858a7c0ff7",
      "parents": [
        "509d4240279c09aa755ebbd399fd333380ba40f2"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 02:43:23 2017 +0000"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 02:46:20 2017 +0000"
      },
      "message": "Revert \"Compress profile files\"\n\nThis reverts commit 4f0a15a85eaa0a7665f703d435a9b61059eed536.\n\nReason for revert: art-test gtest-heap-poisoning is broken with this change.\n\nChange-Id: I736374766b216122cae4e7e97451951cda1551f9\n"
    },
    {
      "commit": "509d4240279c09aa755ebbd399fd333380ba40f2",
      "tree": "830bea8dd99157a92bdefdee061781fcb23282de",
      "parents": [
        "d59f564f9bb9301855a3613912e287c4eba49655"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 02:42:45 2017 +0000"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 02:44:31 2017 +0000"
      },
      "message": "Revert \"Profile compression: Replace method index with difference with the last method_index\"\n\nThis reverts commit d59f564f9bb9301855a3613912e287c4eba49655.\n\nReason for revert: git_master-art-host - art-gtest-heap-poisoning is broken with this change.\n\nChange-Id: I5a94be6c4609defcee1c0d374009b16e70310a0d\n"
    },
    {
      "commit": "d59f564f9bb9301855a3613912e287c4eba49655",
      "tree": "19c46a2191b1a363ea95cc90cbfb8129e1df5093",
      "parents": [
        "4f0a15a85eaa0a7665f703d435a9b61059eed536"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon May 08 17:01:48 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 11 12:53:45 2017 -0700"
      },
      "message": "Profile compression: Replace method index with difference with the last method_index\n\nStore the difference with the last method index in the profile rather than\nputting the actual method index. Leveraging the common difference values,\ncompressing the profile will reduce the size further.\n\nResults:\n\nApp1\n    Without - 74K\n    With - 58K\nApp2\n    Without - 54K\n    With - 30K\nApp3\n    Without 40K,\n    With - 24K\n\nBug: 36281963\n\nTest: dexlayout_test, profile_assistant_test, \\\n     profman_test, profile_compilation_info_test\n\nChange-Id: I96bcadac250c08aaf23ade7465c5ac6ba9ea75dc\n"
    },
    {
      "commit": "4f0a15a85eaa0a7665f703d435a9b61059eed536",
      "tree": "830bea8dd99157a92bdefdee061781fcb23282de",
      "parents": [
        "b75e66e7636b3100432c7459130f55e12c12e0ab"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Apr 26 19:26:46 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 11 10:31:40 2017 -0700"
      },
      "message": "Compress profile files\n\nThe change brings in new serialization format:\nmagic,version,number_of_dex_files,uncompressed_size_of_zipped_data,\n    compressed_data_size\nzipped[dex_location1,number_of_classes1,methods_region_size,dex_location_checksum1, \\\n        method_encoding_11,method_encoding_12...,class_id1,class_id2...\n    dex_location2,number_of_classes2,methods_region_size,dex_location_checksum2, \\\n        method_encoding_21,method_encoding_22...,,class_id1,class_id2...\n .....]\n\nThe data is compressed using zlib level 1 compression.\n\nSample app profile statistics on host with and without the change:\n\nApp1\n    Without - 10ms, 160K\n    With - 15ms, 74K\nApp2\n    Without - 4ms, 106K\n    With - 7ms, 54K\nApp3\n    Without 3ms, 74K,\n    With - 7ms, 54K\n\nBug: 36281963\nTest: dexlayout_test, profile_assistant_test, \\\n     profman_test, profile_compilation_info_test\nChange-Id: Iefa51a5a76adb33eef22aa76cdf85c3fe0a59a2a\n"
    },
    {
      "commit": "d212d5b4dcd8ebee9858d863062d7f827ea3a9ea",
      "tree": "e3fca5360949b125347647db204dbcc86dcb628b",
      "parents": [
        "b66ca57ecadc494f1b257f890fef6e1d84005841"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 26 12:09:06 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 26 12:09:06 2017 -0700"
      },
      "message": "Allow dexlayout to handle duplicate code items.\n\nDexlayout now checks to see if a code item already exists at a\nparticular offset before trying to construct a new one. If so, the\nexisting one is returned instead.\n\nBug: 37287151\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: I9d89912fa6f00b80ce0e1c866b7800c02d36ee8c\n"
    },
    {
      "commit": "d9be768f6e7f6787bce27b2ec4e1c3736218495a",
      "tree": "caf57ded21afcaac2489977d45041dfbb6bd982d",
      "parents": [
        "207f9bac6f87e652e9ffb6d49ea8b058378b4bb3"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 05 09:29:43 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 05 10:53:32 2017 -0700"
      },
      "message": "Check LocalInfo descriptor for nullptr in dexlayout.\n\nBug: 36966414\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: Iff289e4b877354d6ae7922a55ded961072aa0186\n"
    },
    {
      "commit": "4f0250ca952cb3d489604c0de4f318bbc1bb12ba",
      "tree": "81a8e73d4505515b2c0d38bed93cff61dfab7086",
      "parents": [
        "f62940eab11f6d8fa6f07a3976245939c3db7ab7",
        "16d7ec4bf7483bb1b3d2317c8c5f03cf3cc6d208"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 30 23:17:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 30 23:17:20 2017 +0000"
      },
      "message": "Merge \"Update profile version\""
    },
    {
      "commit": "16d7ec4bf7483bb1b3d2317c8c5f03cf3cc6d208",
      "tree": "3ff8295a8f0ae3b15c8b9ee9cf6e5cbf1695a0da",
      "parents": [
        "d07f2ba2c60cb8aa920d2b428e414628078e233e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 29 16:50:25 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 30 13:54:39 2017 -0700"
      },
      "message": "Update profile version\n\nI forgot to do it in cea9e9d26c32372ec8c75e6c89b1bfc08c5e1911. This will\nforce regeneration of possibly faulty profiles.\n\nTest: m test-art-host\nBug: 36371709\nChange-Id: I476c97005b6c17a22c57117c06028a2371276326\n"
    },
    {
      "commit": "fa0aa0953875427d7381ac44a6427bd5b1d5020a",
      "tree": "ffffbc915c05b8a5d0a830618364261dedfa3948",
      "parents": [
        "8b71f086ade1f48f3780cc81706669abbfe9c184"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 27 15:43:54 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 29 10:42:47 2017 -0700"
      },
      "message": "Layout string data\n\nInspect dex code in class initializers and hot methods to find out\nwhat const strings are likely to be resolved. Along with these,\nlook at static field accesses and group the field name and type with\nother hot strings.\n\nGroup method shorties together.\n\nMaps vdex PSS: 7478k -\u003e 6900k\nNo change in odex PSS.\n\nChanged dexlayout_test to use -v instead of comparing to a hex\noutput.\n\nBug: 36457259\nBug: 35800981\n\nTest: test-art-host\n\nChange-Id: Iaa5de649c5b2b1d9f178525d2f42fe00e3fb879f\n"
    },
    {
      "commit": "a64a64cfae5c6dd7c2bdb039a92e9313dfd1e315",
      "tree": "173b22c4293d00b1f50dcbf19edb991fedd6be70",
      "parents": [
        "ef81e988d0eb4db390e576aac346701b2d820916"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 06 15:05:38 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 06 16:24:05 2017 -0800"
      },
      "message": "Fix dexlayout calculation of code item size.\n\nCalculation of code item size was based on looking for the latest catch\nhandler referenced by a try block, but there can be handlers that aren\u0027t\nreferenced by any try blocks. This fix manually reads all handlers to\nensure the end is actually reached.\n\nBug: 35978524\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: I33b30087845f806cd34b888f1ec457ee692f2af4\n"
    },
    {
      "commit": "e0ac1151b360be7147fa20320c0b427688b1424f",
      "tree": "c33419b00c47b731075bcfd7b75b81f366beda91",
      "parents": [
        "425b5d23e2c60d295471817a75b1b554481c5334"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 13 19:03:47 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 13:12:31 2017 -0800"
      },
      "message": "Extend profman to generate profiles with inline caches\n\nExtend profman logic to generate profiles based on a simple textual\nrespresentation. This will help writing tests for profile guided\ncompilation.\n\nBefore this CL, profman was able to generate profiles based on a list of\nclasses like:\njava.lang.Comparable\njava.lang.Math\njava.lang.Object\n\nThis CL, enables profman to understand methods and classes alike. The\nnew format is:\n\n# Classes\nLjava/lang/Comparable;\nLjava/lang/Math;\n# Methods with inline caches\nLTestInline;-\u003einlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;\nLTestInline;-\u003enoInlineCache(LSuper;)I\n\n\"LTestInline;-\u003einlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;\"\nmeans that method `int inlineMonomorphicSubA(Super)` from class Main\nwill be added to the profile with the inline cache (SubA,SubB) for its\none and only invoke virtual.\n\n@Main#noInlineCache:(LSuper;)I+;\nmeaning that method `int noInlineCache\u0027 from class Main will be added\nto the profile with no inline cache.\n\nNote that the methods are allowed to have a single invoke virtual in\ntheir dex bytecode. That is to keep the parsing the file format\nsimple and easy to use.\n\nAlso, add a few more tests for profiles and fix an issue caused by\nwriting the dex files in a possibly wrong order.\n\nTest: m run-test-host-gtest-profile_assistant_test\nBug: 32434870\nChange-Id: I6b7340cf613007117d9818be206ccb3a27b815bf\n"
    },
    {
      "commit": "3d0485493eabbaf01799de4576384cc57dfe66f8",
      "tree": "b2da9d706afc6a321c219b73073494df49af7f4e",
      "parents": [
        "ec78cc266a5ec7fdbaeb41eb645fa1a431eaa61d",
        "ac4627157871734db2864ab44a284bd28229d055"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 03 01:56:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 03 01:56:39 2017 +0000"
      },
      "message": "Merge \"Fix dexlayout manual walking of 0 length catch handler.\""
    },
    {
      "commit": "ac4627157871734db2864ab44a284bd28229d055",
      "tree": "97477285975ddb52ed0e7c0d5e421b52362c9562",
      "parents": [
        "f040eca7329382d48dc2b8bfc228ee3f27c9f13d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 02 10:59:43 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 02 10:59:43 2017 -0800"
      },
      "message": "Fix dexlayout manual walking of 0 length catch handler.\n\nThis fails for 0 length handlers that are unreferenced by any try\nblocks. Unreferenced handlers are handled differently and walked\nmanually, and there was an error in the 0 size case, when there is only\na single catch all handler.\n\nBug: 35874292\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: Ie061b4fd0e7e8be7e3e382b11d2606f5ffc0817a\n"
    },
    {
      "commit": "32a60ab077e83f49df78caf2dd8a6f16e8b716a8",
      "tree": "d11dee2c27eed8ec76f852f8b1343c0cf2fd34eb",
      "parents": [
        "106173ac9530faffdc8ca649dd787e6dad3098ab"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 01 16:44:50 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 01 16:54:51 2017 -0800"
      },
      "message": "Add dexlayout test where class data section precedes code items.\n\nBug: 35855748\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: I8365cb5699014d04dd7561758255802d811d58c6\n"
    },
    {
      "commit": "e17f589d8fa46d0d0179499354b7967801f9582c",
      "tree": "ab0d1d2c46c8016c0f13a7469333d895ad3fab0d",
      "parents": [
        "06f658ab309a5f1930b8a6bc306ef79d0ef0616e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Feb 23 16:14:04 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Feb 24 10:47:43 2017 -0800"
      },
      "message": "Dexlayout fix for duplicate class data and preserving last code item.\n\nThis change fixes a dexlayout issue when multiple class defs reference\nthe same class data. A set is used to tell what class data has already\nbeen visited.\n\nThis change also makes dexlayout preserve the offset of the last code\nitem in the dex file if the following section is not 4-byte aligned.\nDue to limitations in dexlayout, it is difficult to adjust the offsets\nof sections if more space is needed. An overhaul of dexlayout should\nbe done to properly fix this.\n\nBug: 35451910\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: I8d066c2151a1a57c382ce35f12bf53a519da89f6\n"
    },
    {
      "commit": "44652a3c27ffd2236abe82ec0479aa13035bc7e7",
      "tree": "508ba49bfb013394fa88335086cd90730583d940",
      "parents": [
        "f773e851c620d253d02e81a3e2ae115c5862d73c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 22 14:20:41 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 22 16:19:23 2017 -0800"
      },
      "message": "Make dexlayout parse exception handlers not referenced by try blocks.\n\nBug: 35451910\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: If278d16747cfb4a88f7d7312931b3f4b5ee5e058\n"
    },
    {
      "commit": "f914f8e1cc12cd321aa818ebedb1328268b6aec9",
      "tree": "17dcc77b59fe90dd842ceed5a231780a01682a0b",
      "parents": [
        "2fee212df6f688295475f3b2ddee4f2db8db27a2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Feb 21 16:14:23 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Feb 21 17:06:11 2017 -0800"
      },
      "message": "Add test for null set ref list item in dex layout.\n\nBug: 35408418\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: Ia9ac897a27dac27405f6838aaab625257c150e07\n"
    },
    {
      "commit": "6b0dbefb4a1eb770ead704bce2fbe46eead4e103",
      "tree": "349afd0f87422e29b1e960ec564b5f39f7aac15a",
      "parents": [
        "30e015c442c8033390c30d2f293604723c29bc75"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 21 12:45:30 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 21 13:15:46 2017 -0800"
      },
      "message": "Add regression test for b/35305951\n\nEnsure that dexlayout can handle a dex file that has the same\ndebug_info_off_ for multiple methods.\n\nTest: test-art-host-gtest-dexlayout_test\n\nBug: 35305951\nChange-Id: I1283910009fec07095c99ea2288167da3766329f\n"
    },
    {
      "commit": "940eb0c00ef531dd9a0a68dbd61e377832e81eb4",
      "tree": "c65e43a702bb781b7a2f4ebedfb6b3d131fd8312",
      "parents": [
        "9fb10fb39bcb3d9a4dc7e16f8c1d38dcc112639c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 30 19:30:44 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 16 13:52:56 2017 -0800"
      },
      "message": "Add inline caches to offline profiles\n\nAdd support for inline caches in profiles:\n- extract inline caches from the jit cache when the profile saver\nqueries the hot methods\n- bump profile version to support the new data\n- add new tests\n- inline caches are only supported for same-apk calls (including\nmultidex)\n\nTest: m art-test-host-gtest-profile_compilation_info_test\nBug: 32434870\nChange-Id: I38b4ca0a54568d2224765ff76023baef1b8fd1a2\n"
    },
    {
      "commit": "97c381e3ce34cd327c2ec35fa850bd0eaa9b697f",
      "tree": "4a21b2db89c578cdb2908547547e0546748eec7f",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:09:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:51:42 2017 -0800"
      },
      "message": "Separate art::Exec from utils\n\nThe rest of utils.cc does not depend on art::Runtime. This separates\nthe part dependent on that class, so that including utils.cc in the\nbuild does not require the entire Runtime. Another preparatory cleanup\nto getting tools to build on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: I194ff363fc2ab87e5311ecea6973a2d0fad2621d\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "042e898f18767ed326980e3b07d39adbf98f6222",
      "tree": "e2ea81bc5ddbab51cb3d5c0d5b7812cf9f85562e",
      "parents": [
        "608f2ce4b9870354079b9d63d40363914889f01a"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 19 11:17:11 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 22 13:33:09 2016 -0800"
      },
      "message": "Add layout scheme to dexlayout for dex file reordering.\n\nCurrently takes startup classes from profile and groups them together\nwith the lowest class indexes. Moves the ClassDef, ClassData, and\nCodeItem sections.\n\nResults gathered from 5 second systrace of app startup (no other input):\nMaps\nbase.vdex - 24.70MB -\u003e 19.35MB (30.50MB file size)\nbase.odex - 13.22MB -\u003e 12.82MB (13.22MB file size)\nRunning time of dex2oat: 27.5s -\u003e 37.1s\n\nPhotos\nbase.vdex - 12.98MB -\u003e  9.77MB (15.10MB file size)\nbase.odex -  6.84MB -\u003e  6.24MB ( 6.84MB file size)\nRunning time of dex2oat: 15.6s -\u003e 19.9s\n\nPlus\nbase.vdex - 14.09MB -\u003e 13.29MB (16.72MB file size)\nbase.odex -  2.47MB -\u003e  2.47MB ( 2.47MB file size)\nRunning time of dex2oat: 14.1s -\u003e 18.5s\n\nPerformance and memory tracking bug: b/33017139\n\nTest: mm test-art-host-gtest-dexlayout_test\nBug: 29921113\nChange-Id: Ib500ed353d71a606e2db0dd80378750c5f7b8e33\n"
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "a86210038524cecd0d96d6ba6f8f116da348a25c",
      "tree": "3c5c243a9530f3cd64ca12b94ea2e2a4ada34260",
      "parents": [
        "b4f0076e7faca1382e0b2f68557b71b11ac34a9d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 04 18:13:44 2016 +0000"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 04 14:21:13 2016 -0700"
      },
      "message": "Revert \"Revert \"Add dex file writer to dexlayout tool.\"\"\n\nThis reverts commit fd1a6c2a08ca3e2476b7424b9b0fa58e73b29e87.\n\nFixed output being clobbered during DexLayoutTest.DexFileOutput.\nOption added to put dex output file in scratch directory.\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\n\nChange-Id: I9e6b139cf06aaa39c83ad1e74329db266464a8e4\n"
    },
    {
      "commit": "fd1a6c2a08ca3e2476b7424b9b0fa58e73b29e87",
      "tree": "1f3e846a8cf6eef30683dcad63c4dc3ce39c7058",
      "parents": [
        "69b58cf399c3507ca3debf9ec9b2db3c5a0fe7f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 04 11:01:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 04 11:01:17 2016 +0000"
      },
      "message": "Revert \"Add dex file writer to dexlayout tool.\"\n\nBug: 29921113\n\nThis reverts commit 69b58cf399c3507ca3debf9ec9b2db3c5a0fe7f2.\n\nChange-Id: I8bf9b1222d99489059e45f47d220396a853170a4\n"
    },
    {
      "commit": "69b58cf399c3507ca3debf9ec9b2db3c5a0fe7f2",
      "tree": "eeea96181b252426bc7d9363c62cf22c9aac100a",
      "parents": [
        "d295618ac764b334424b0bc7a592337edef19783"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 22 18:02:49 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Oct 03 14:33:25 2016 -0700"
      },
      "message": "Add dex file writer to dexlayout tool.\n\nAll sections are being written out properly.\nThere is one small difference:\n  - unindexed string data is not written out\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: I3872327526a350f33f0f851516a389622c1a54ae\n"
    },
    {
      "commit": "0f7eaebb1622e08482c519fe5eaab9afa8f64df1",
      "tree": "7d1d44eb4a153ed738178abf8e3948a103ca3429",
      "parents": [
        "244d105f68159b13c55217dd6d883991ba4a7c20"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 31 17:56:13 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 01 01:29:42 2016 +0000"
      },
      "message": "Disable dexlayout_test on target.\n\nTarget doesn\u0027t have diff to compare output files.\n\nBug: 29921113\nTest: mm test-art-target-gtest-dexlayout_test\nChange-Id: I244c0c74214b780676283de1b309978667ff58e3\n"
    },
    {
      "commit": "c3acfc5bed5d0cb22bee05e72cdbdec49a182224",
      "tree": "3f9e89e770efbea5dac6bd601d29b7707c609922",
      "parents": [
        "7629f60ffa7b8533ea0b50263d52cc1df72b2904"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 29 14:18:26 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 31 11:09:41 2016 -0700"
      },
      "message": "Finish dexlayout dumping of dex files and added test.\n\nThe test runs dexdump and dexlayout over the first core library jar file\nand diffs the output, checking that they\u0027re the same. More dex files\nwill be added later for better coverage.\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\n(cherry-picked from commit a378e88db648cf19e771714dd1059cf3d41d4753)\n\nChange-Id: Idfd8ac9f069885b675a4a2f0c70aef2cbef5a9b8\n"
    }
  ]
}
