)]}'
{
  "log": [
    {
      "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": "a07394a0f356513a08266e2e198a0f4064f6e694",
      "tree": "1bbbd89b3772c852e5cbdd49d19b3fa3966cf910",
      "parents": [
        "aad63d06328e745a7f13e812bf41676274aa8f49"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 17 10:29:56 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 17 10:29:56 2017 -0700"
      },
      "message": "Enable dex diff check on debug builds.\n\nDex diff checks that the input and output dex files are equivalent at\nthe IR level. Normally enabled by passing -v to dexlayout, dex diff is\nnow enabled for debug builds as well.\n\nBug: 36107940\nTest: mm test-art-host\nChange-Id: I8c5ebb6a7cc0f699299a7200e8bc019762601feb\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": "d6705a0586377f1b0d7d14d3abe2b270bb0adb18",
      "tree": "2fcd1e87f58a794130b51d20aa9396d400d20aa4",
      "parents": [
        "0af0ec2b59e624861dc3461ba9ce192fd350fd12",
        "1cf1fe29533e63858f094e4b6595b0d8a03aa7cd"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri May 12 02:48:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 12 02:48:06 2017 +0000"
      },
      "message": "Merge changes I73637476,I5a94be6c\n\n* changes:\n  Revert \"Compress profile files\"\n  Revert \"Profile compression: Replace method index with difference with the last method_index\"\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": "cad518333be281786548437f6be459d8efc791d2",
      "tree": "a7f7fb3af7cda514a8d1a0218f7729ab0b011055",
      "parents": [
        "05850204bdd25621a1264a400f7f68eba24f30a5",
        "d59f564f9bb9301855a3613912e287c4eba49655"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 11 21:42:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 11 21:42:34 2017 +0000"
      },
      "message": "Merge \"Profile compression: Replace method index with difference with the last method_index\""
    },
    {
      "commit": "05850204bdd25621a1264a400f7f68eba24f30a5",
      "tree": "3c36cac50eb6fd22a0a860d725b0dcd6acae26b5",
      "parents": [
        "f1373968236e720d88ebe64c101e417053bf2f7b",
        "4f0a15a85eaa0a7665f703d435a9b61059eed536"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu May 11 19:54:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 11 19:54:32 2017 +0000"
      },
      "message": "Merge \"Compress profile files\""
    },
    {
      "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": "093a6fbcaa1f9fd2924e97906109482a8f31a247",
      "tree": "cd19863d64d8526de6d3adc1bf1f3b6bfcd041e7",
      "parents": [
        "0ac500f2d5d8e9948e5041e601c9dec805c7b74b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 09 15:41:09 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed May 10 12:50:43 2017 -0700"
      },
      "message": "Fix page accounting for multidex\n\nDexdiag was using the offset into the mapping rather than into the dex\nfile for determining the types of pages.  This resulted in multidex\nfiles having incorrect accounting.\n\nBug: 38181622\nTest: make test-art-target-gtest-dexdiag_test\nChange-Id: I00a4e21db5f57f75642a17e8edaa9c73b8b529b6\n(cherry picked from commit dda59691e059101b00c70c49e7e2718d3b7c5d99)\n"
    },
    {
      "commit": "853656aaa0bf99e452211cb8f18a4b1bae70325e",
      "tree": "2f4d3110fc1c956ab1771391bd46db07eed168ba",
      "parents": [
        "59cd177687681ff9a1bd4b005e77f2a15e290641",
        "5daee90642aa44ac67e7e0c200204c86fa5425a8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 05 18:14:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 05 18:14:37 2017 +0000"
      },
      "message": "Merge \"Add dexlayout support for call sites and method handles.\""
    },
    {
      "commit": "592f802937be408eb0f205c8940e54162d809dda",
      "tree": "ee75e1e191c71c7448a6c3995321d0f7919a3c73",
      "parents": [
        "05a252b52b4f94f78759e6099dd420ca5a4e1b2f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 04 13:58:29 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 04 14:47:18 2017 -0700"
      },
      "message": "Dexdiag returns error when no maps found\n\nWhen dexdiag does not find a mapping that is either from an oat or from\na vdex, it returns a non-zero exit status.\n\nBug: 35800981\nTest: make -j 40 test-art-target-gtest-dexdiag_test\nChange-Id: I346dd2f578b89ce16305f4118a0749ac62ba8e1d\n"
    },
    {
      "commit": "5daee90642aa44ac67e7e0c200204c86fa5425a8",
      "tree": "d520c12b41177244b4e0c0b3099be96ac6f91647",
      "parents": [
        "acac09dad3d5aa3922e6cdf54ff2e4fa6f176484"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 27 18:00:38 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 04 14:34:29 2017 -0700"
      },
      "message": "Add dexlayout support for call sites and method handles.\n\nTested that it works with Orion\u0027s test dex files. Can generate output\nfiles that match the test input files.\n\nUnit tests to follow.\n\nBug: 37732062\nTest: mm test-art-host\nChange-Id: Icb76cf858d29e52022f98ac625bd35c3bd763e9f\n"
    },
    {
      "commit": "55232f13e4a34ab36c13f337642b57f9def00da8",
      "tree": "493a3588e5eefcff12902bb3f5318e83dcca3aad",
      "parents": [
        "3650acb134b4e68ba3f190772b02105f74081bf2"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 19 14:06:49 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed May 03 16:12:38 2017 -0700"
      },
      "message": "Add dexdiag_test\n\nNow with --contains\u003d[match] does\u0027t match any mapping, the process will\nreturn error.\n\nBug: 35800981\nTest: make test-art-target-gtest-dexdiag_test\nChange-Id: I252c6467c449db13abec7c7ddf07825f41b0078b\n"
    },
    {
      "commit": "04471122e705aba2b3b30651457097a8f3ac97b6",
      "tree": "a0a72bfbaeff39ad8efe8ce9dbe8a3ec74f808f7",
      "parents": [
        "34ed966ae7e232817dd70afb924518b7cb8fb6a9",
        "fd80b17832b793801f10fa90e1d98324a3405e21"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 27 19:54:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 27 19:54:31 2017 +0000"
      },
      "message": "Merge changes If6bd630c,Iade01cd5,I2ca823e1,Ib2899bce,I123f30f9\n\n* changes:\n  ART: Blacklist dex2oat test under sanitization\n  ART: Fix leaks in oat symbolizer\n  ART: Free resources in dexlayout\n  ART: Destroy temporary holder in dex_ir\n  ART: Shut down runtime in dexoptanalyzer\n"
    },
    {
      "commit": "4e868fa7b8c47600695ff92deeb373674956a67d",
      "tree": "acdb92a2b765cc87a08459267e430a8866e608cf",
      "parents": [
        "4dc06e2ef900132d8395539842c35533da8b912a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 17:16:44 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 16:04:13 2017 +0100"
      },
      "message": "Make vdex and dexlayout compatible.\n\nUnquicken the vdex before dexlayout, to keep the dex integrity.\n\nbug: 37558732\nTest: run-test with speed-profile\n\nChange-Id: Ifcd5c2e4378ccb0df0a66d07f68df31d94b83220\n"
    },
    {
      "commit": "08ae77f1159ad92d83ed4d955eb3a0a1a04f2058",
      "tree": "26b1be046d05c72641d2fd402f25bd5a724c41c6",
      "parents": [
        "2ae2ddae15b649e73e87d765cb49c9b59fc700fa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 22:02:33 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 22:02:33 2017 -0700"
      },
      "message": "ART: Free resources in dexlayout\n\nEnsure that loaded resources are freed once done.\n\nBug: 37727496\nTest: m SANITIZE_HOST\u003daddress test-art-host-gtest-dexlayout_test\nChange-Id: I2ca823e185c1b414781dab62ec8f87d64bd6f4fc\n"
    },
    {
      "commit": "2ae2ddae15b649e73e87d765cb49c9b59fc700fa",
      "tree": "92e6e8ea0e5ae5996d394010b8a5e91b6db42e0e",
      "parents": [
        "39f44b7452a7fa01c20f0e3554ff035726d9ebee"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 22:01:01 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 22:01:01 2017 -0700"
      },
      "message": "ART: Destroy temporary holder in dex_ir\n\nEnsure that a temporary wrapper is freed.\n\nBug: 37728266\nTest: m SANITIZE_HOST\u003daddress test-art-host-gtest-dexlayout_test\nChange-Id: Ib2899bce74566346f2b278d7f6c50e33add3252f\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": "3a2380da2496423daff1eedee2a1b0882dbd3154",
      "tree": "3fbf84a3f16a35ed531f190d1a54b7ffcebf90aa",
      "parents": [
        "0d2ea2f09937e55600f8a1eda6b102fef1ab9c0b",
        "36a282b8714071d9f16c98c316efa4304fd8d36a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 25 18:42:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 25 18:42:28 2017 +0000"
      },
      "message": "Merge \"Layout codeitems based on profile data\""
    },
    {
      "commit": "36a282b8714071d9f16c98c316efa4304fd8d36a",
      "tree": "85c41bcb9d70778be8afe273eb57ef469f7b11d4",
      "parents": [
        "4e34bd190287f10214e8ea11a61025f18d2429b8"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Apr 03 10:04:28 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Apr 24 14:54:23 2017 -0700"
      },
      "message": "Layout codeitems based on profile data\n\nTest: ./art/test/testrunner/testrunner.py --host -t 638-c\n\nChange-Id: I15cef5d8bd25cbb74f844bd4c8241700b0f7dc13\n"
    },
    {
      "commit": "0dfc315a096bf5678cb5182771e3fdcca8ea4433",
      "tree": "ac04fef45e7d002734d3d79b9ab9a128cb5dc263",
      "parents": [
        "291ce17ada5a126be99f0fc069a028d2100bcf9e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 07:58:06 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 14:18:45 2017 -0700"
      },
      "message": "ART: More header cleanup - mem_map.h\n\nMove MemMap maps_ into cc file and move allocator include. Remove\nother unused includes. Force clients to import sys/mman.h if they\nneed it. Try to lower dependencies on ART by using libbase helpers\nmore.\n\nTest: mmma art\nChange-Id: I8f31e5f371789b3d72e12af377181fee2ac9a611\n"
    },
    {
      "commit": "cc05a77e6cf715084724c0b53577d12e0ff3ae1c",
      "tree": "508288450220028cfc2ebe5be668aa08623ad6cc",
      "parents": [
        "2120ad43acc0ab0fa74c151069948ef9698c009f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 19 19:44:08 2017 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 19 19:44:08 2017 +0000"
      },
      "message": "Revert \"Add dexdiag_test\"\n\nThis reverts commit 2120ad43acc0ab0fa74c151069948ef9698c009f.\n\nChange-Id: Icdb42e47eb2f099cbfbd302477ad6614bb8524f1\n"
    },
    {
      "commit": "2120ad43acc0ab0fa74c151069948ef9698c009f",
      "tree": "2cf32a88d1f7daee2c9412f5288aa1669e7c2a55",
      "parents": [
        "741a81af441cbcb7255229bf250bc009d2894e92"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 14 15:26:09 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 18 16:12:13 2017 -0700"
      },
      "message": "Add dexdiag_test\n\nTests that dexdiag runs on the current process and returns with a\nnon-error status for a variety of command line options.\n\nBug: 35800981\nTest: make test-art-target-gtest-dexdiag_test\nChange-Id: Ib6f21a99ddec270cf8026a6123b028fe4b3fb840\n"
    },
    {
      "commit": "7639cdcf4dbbbb4ef63cc8c3ae2f2b4e170a5c83",
      "tree": "4b9e74bdf3fd4ef9ab7d29bca1e6234ac02c53f1",
      "parents": [
        "39d562895ab3ff835003fe3df6c13a93db492aa8"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Sat Apr 15 10:06:21 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Sat Apr 15 10:06:21 2017 -0700"
      },
      "message": "Add art_defaults to dexlayout\n\nThe build rule defaults for dexlayout targets didn\u0027t include defaults\nfrom the ART project.  Because of this ART_TARGET_* weren\u0027t defined,\namong other problems\n\nBug: 35800981\nTest: make -j 40 test-art-host\nChange-Id: Ic528bfc6b622fa9b4f5c0ddf883f15912641b720\n"
    },
    {
      "commit": "3ba51e854d6ee3287641d37ca5e108dd78de697b",
      "tree": "3f0939d171df1fd70e14118aa4494254c1b25f58",
      "parents": [
        "ce121a5fe3e537872af077c801443be9a525859b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 12 16:14:54 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 13 10:16:18 2017 -0700"
      },
      "message": "Add check that dexlayout can open output file.\n\nTest: mm test-art-host\nChange-Id: I49b37b3e3696c8c002e22533c2e86e47a0e13e51\n"
    },
    {
      "commit": "3f3ec67df7dc40ee0df54a43b0df90142f829eaa",
      "tree": "dda06f5033831e10d29aec9ca3d70e6cfcfd8fb1",
      "parents": [
        "66e226ac2fb525c7a7cbbb21a9cbbe347f531a1c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 05 14:43:38 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 12 12:48:37 2017 -0700"
      },
      "message": "Add OAT file mapping to dexdiag\n\nAdds the ability to visualize the executable mapped sections of an OAT\nfile.\n\nBug: 37217968\nTest: test-art-target-gtest-dexdiag_test\nChange-Id: Id9f33885ee38a3753e781f955127eb8e1b83fe4d\n"
    },
    {
      "commit": "c0e638f0608bd6f3422ac7f1f1380d6ef56527a3",
      "tree": "c25bf897b3bbbaf357a5a19f9bd5cfe2aa20a0f2",
      "parents": [
        "b361403515606c4b287b43a9dbb45d29d8d90cba"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 07 16:56:46 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 07 16:56:46 2017 -0700"
      },
      "message": "Fix dexdiag start end address\n\nThe end address was computed incorrectly due to a mix-up between pages\nand addresses.\n\nBug: 35800981\nTest: dexdiag -s `pid zygote`\nChange-Id: I25d6c4b9a1e5395dc05b276111d9ec63c45951e0\n"
    },
    {
      "commit": "7851a5339d5ebd6fd2a3a8d40abc15aad694d024",
      "tree": "562a05b5951f605a0eaf7cb8bfc17576b6965eaf",
      "parents": [
        "6bca1c6389bb002d44f1c0cabf7641de8c935c4b",
        "eeabc03c9eb556e28a935636d80d467d058c8ea7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 06 07:05:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 06 07:05:38 2017 +0000"
      },
      "message": "Merge \"Revert \"Add dexdiag_test\"\""
    },
    {
      "commit": "eeabc03c9eb556e28a935636d80d467d058c8ea7",
      "tree": "2aaab2ad3d40d9044d02a8818991f6845190e118",
      "parents": [
        "146c3fac3a1e86b944d866e286551957c7513fd4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 06 05:37:08 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 06 05:37:08 2017 +0000"
      },
      "message": "Revert \"Add dexdiag_test\"\n\nMissing dependencies in test branches.\n\nThis reverts commit 146c3fac3a1e86b944d866e286551957c7513fd4.\n\nBug: 35800981\nChange-Id: I6251b4b7132594a65f2f5faf48ed60eed96403af\nTest: none\n"
    },
    {
      "commit": "30b262c298fe7bd08f28d2f0f23a97cb1a1eb2fe",
      "tree": "cc606785bd064d5c7f6ba815c87bb0b055c2f597",
      "parents": [
        "b629050b198db14495444ff0211b84c6c740982c",
        "d9be768f6e7f6787bce27b2ec4e1c3736218495a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 05 21:18:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 05 21:18:40 2017 +0000"
      },
      "message": "Merge \"Check LocalInfo descriptor for nullptr in dexlayout.\""
    },
    {
      "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": "146c3fac3a1e86b944d866e286551957c7513fd4",
      "tree": "72515c2c0e12b4d62033fc894a862e731e66ecc4",
      "parents": [
        "820b72ab4434d9fba36d885f96a9ef13f7b5df50"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 04 15:40:12 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 05 08:54:01 2017 -0700"
      },
      "message": "Add dexdiag_test\n\nTests that dexdiag runs on the current process and returns with a\nnon-error status.\n\nBug: 35800981\nTest: make test-art-target-gtest-dexdiag_test\nChange-Id: I4254939307b035dfe2a83667ef6c853f710dde47\n"
    },
    {
      "commit": "beca4fe440a106daf65379a6c55d24418269f842",
      "tree": "73566797ace08fb2948f80bb66346bef1543c0a6",
      "parents": [
        "432fccc4c001fcd822f401aea1a4214b713bd896"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Mar 30 17:50:24 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 04 08:25:31 2017 -0700"
      },
      "message": "Add analyzer for dex memory map\n\nUse libpagemap to process vdex pages that are resident in memory.\nWalks over each vdex file mapping in a given pid, processing in one of\ntwo ways.\n\nUsing the -s (summarize) option gives, e.g.:\n\nMAPPING /system/framework/arm64/boot.vdex: 7e90133000-7e90641000\nDEX classes.dex: 7e90133000-7e90608000\nSection name                resident     total % of   % of\n                               pages     pages sect.  total\nHeader                             0         0   0.00   0.00\nAnnotationSetReferenceItem         0         0   0.00   0.00\nStringId                           1        33   3.03   0.08\nTypeId                             0         4   0.00   0.00\nProtoId                            1        21   4.76   0.08\nFieldId                            0        25   0.00   0.00\nMethodId                           2        69   2.90   0.16\nClassDef                           0        26   0.00   0.00\nAnnotationSetItem                  0        13   0.00   0.00\nCodeItem                           1       555   0.18   0.08\nAnnotationsDirectoryItem           0        34   0.00   0.00\nTypeList                           0        10   0.00   0.00\nStringData                         2       174   1.15   0.16\nDebugInfo                          0       175   0.00   0.00\nAnnotationItem                     0        29   0.00   0.00\nEncodedArrayItem                   0         3   0.00   0.00\nClassData                          0        59   0.00   0.00\nGRAND TOTAL                        7      1230          0.57\n\nUsing the -v (verbose) option gives, e.g.:\n\nMAPPING /system/framework/arm64/boot.vdex: 7e90133000-7e90641000\nDEX classes.dex: 7e90133000-7e90608000\nSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS\nSTTTTPPPPPPP.PPPPPPPPPPPPPPFFFFF\nFFF.FFFF.F.F.FFFF...MMMMMMMMMMMM\nMMMMMMMM.MM.....MMMMMMMMMMM..MMM\n.M.MMM..MMMM.MMMMMMMMMMM.CCCCCCC\nCCCCCCCCCCC.C.CCCCCC22.2........\n.XX...XXX..XXXXXXX.............X\n.XXXX......XXXXX..XXXX.XXXX..XXX\n.............X..XX....X.XXXX....\n..X....X...X..X..XXX.XXXXX.XXX.X\nX.X.X..........X.X...........XXX\nX...............................\n.......X.....................XXX\n..XX...XX.....X............XX.X.\n.....XXXX......X.X..X...........\n.XXXXXXX..XXXXXXXX..............\n......XXXX...XX...XX..XXXX...X..\n.......................X........\n.......................X.XX..XX.\nX...........X.X.X.X.............\nX.....XXX..........XXXXX.XX.XX.X\nXXXXX...........................\n............X.................X.\nX..............4....4...........\n............4.tttttttttts...sss.\n.ss.ss..s.ss.sssssss.sssssssssss\nssssssssssssssssssssssssssssssss\nssssssssssssssssssss.ss...ssss.s\nssssssssssssssssssssssssssssssss\nssssssssssssssssssssssssssssssss\nsssssssss..DD.DD...DD...........\n............D...................\n................................\n...................D.....DD.....\n...........................D.D..\n.D........................3...3.\n......................EEE.c..ccc\n.cc.ccc.c.c.....c.cc.ccc..c.....\n.c...ccc.cc.ccc......\n\nWhere the letters indicate a page of a particular dex file section are\nresident in memory and \u0027.\u0027 indicates a page is not resident.\n\nBug: 35800981\nTest: dexdiag \u003cpid\u003e\nChange-Id: Ib4662fe499ad82d4f0baace2affab0d56f0890c9\n"
    },
    {
      "commit": "9037a3a030c8693e1bffa0b4caef85d73a05abce",
      "tree": "7b614e147567713f29350f3c626a92db63e8da2b",
      "parents": [
        "5b92c48f99391ae764e1699a22881f9d5cbce721"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Mar 30 17:50:24 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Sun Apr 02 21:54:10 2017 -0700"
      },
      "message": "Make GetSortedDexFileSections a utility\n\nMake this method a utility in preparation for other users outside\ndexlayout.\n\nBug: 35800981\nTest: make -j 40 test-art-host\nChange-Id: I054c1e1c82834a0c94be6b9ee63d1992fa9f52df\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": "37c5846be19f28bd629ffe7d6cfde779abbccb89",
      "tree": "794faf53dceaff722889a94c01122cc2ef6b632a",
      "parents": [
        "46bfb7c047a590ac5c24b658f31c170631556bb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 15:14:27 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 15:14:27 2017 -0700"
      },
      "message": "ART: Fix some tidy warnings\n\nFix some tidy warnings for macros and references.\n\nTest: m test-art-host\nChange-Id: I2f8ed2174634263d4784c08e637f60ed70977b73\n"
    },
    {
      "commit": "ff907f66a36edec9a0f4374956dcb8ac7d027b67",
      "tree": "5954d61e821596fb6124ff5539a2f95ff687103e",
      "parents": [
        "fc1361d322e34c16dde6b0deaa710c8dd23e2bd9",
        "332b19e31e13d1c4e497a9f30f3f3217af8d067c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 17 20:25:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 17 20:25:40 2017 +0000"
      },
      "message": "Merge \"Add byte count to section\""
    },
    {
      "commit": "332b19e31e13d1c4e497a9f30f3f3217af8d067c",
      "tree": "cbc975ac332ee1a76773713d8398586838c206ce",
      "parents": [
        "fcfaa8d823017eb209fd6e18a6fe496f4c979026"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Mar 15 10:42:46 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 17 09:59:10 2017 -0700"
      },
      "message": "Add byte count to section\n\nDump the number of bytes, pages, and percentage for each section in the dex file.\n\nBug: none\nTest: test-art-host\nChange-Id: I1a032c4994422bfa697e48caf2cacd216ba9ce5f\n"
    },
    {
      "commit": "cc8295946caf3b965bff778fd7ae3adbcba47de3",
      "tree": "d7c9b77d14217d049911ded65f346271cf5c7849",
      "parents": [
        "fcfaa8d823017eb209fd6e18a6fe496f4c979026"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 14 16:13:39 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 15 19:25:02 2017 -0700"
      },
      "message": "Finish adding checks to dex ir verification.\n\nAdds missing checks for class defs, annotations, class data, code, etc.\n\nBug: 36107940\nTest: mm test-art-host\nChange-Id: Ifaac07299cf237827160c29b4230b0dc0845dc41\n"
    },
    {
      "commit": "ec7f1a96683836d9375adc48c6bf802c0ce2160e",
      "tree": "f07435d668c04c239dca0036b6b072611d45b046",
      "parents": [
        "13ef0447b43ecbf18d3c4e4c72d66bbbc1815f0c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 13 16:24:24 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 13 16:59:46 2017 -0700"
      },
      "message": "Added new -v option to dexlayout to verify output dex file.\n\nPassing -v will cause dexlayout to do an IR level comparison of the\noutput with the original input dex file. This checks that the data in\nthe dex files are the same, but allows for different offsets since the\noutput dex file may have a different layout.\n\nTest: mm test-art-host\nBug: 36107940\nChange-Id: If75a93973ffdd2d91111727f089713c800d8cee8\n"
    },
    {
      "commit": "8f48f4cb1760cd5d1b193e87ba6b56043bb08f35",
      "tree": "467c2da76191237292be4b0cbe3f36d9315c3a0a",
      "parents": [
        "5442ff6bad80f910f84ddf265393796d5fa9d977",
        "4a436ac4b4daa4e322d2a7cc2395462fbb16cd54"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 11 02:29:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Mar 11 02:29:10 2017 +0000"
      },
      "message": "Merge \"Fix dex file verification check for dexlayout output file.\""
    },
    {
      "commit": "4a436ac4b4daa4e322d2a7cc2395462fbb16cd54",
      "tree": "243bc4a490fc31203f7fcb0e8747ac3eedc57477",
      "parents": [
        "1352e02ceeb30a3191809df4a7ee9fd711962f30"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 10 17:05:01 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 10 17:05:01 2017 -0800"
      },
      "message": "Fix dex file verification check for dexlayout output file.\n\nFor debug builds, we want to run the output dex file through the dex\nfile verifier as a sanity check. The initial check was actually checking\nthe input dex file again...\n\nBug: 36107940\nTest: mm test-art-host\nChange-Id: Ibd434d67f661c325a443d4ca9cced481e7a9b02c\n"
    },
    {
      "commit": "bd40af72aac39c53fadca6fe2e8d90f2ba2c4502",
      "tree": "37aa77fec55f4fa97190efbe49278dde27a13cf5",
      "parents": [
        "1352e02ceeb30a3191809df4a7ee9fd711962f30",
        "9335749d25f8826c72ea7ea4d470ee8bc171fa87"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 10 18:08:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 10 18:08:51 2017 +0000"
      },
      "message": "Merge \"Add section size statistics\""
    },
    {
      "commit": "9335749d25f8826c72ea7ea4d470ee8bc171fa87",
      "tree": "9f6fffab6b8c44d1d38434e66a8f345cb5eeceeb",
      "parents": [
        "74f94dd8edb4a6070f6f7bfef6d28a8b4a21fc30"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Mar 09 08:02:44 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 10 08:02:08 2017 -0800"
      },
      "message": "Add section size statistics\n\nAdd an option to display the size of dex file sections for easier\nanalysis.\n\nBug: none\nTest: test-art-host\n\nChange-Id: I779f776657ad79e7a50c18c2b9486e6778c70f13\n"
    },
    {
      "commit": "b756815e581e2bcc3db7ee0cb3ae6c031fb22ae8",
      "tree": "c49999dc1d8683d14d628f1e595f86900368bc93",
      "parents": [
        "74f94dd8edb4a6070f6f7bfef6d28a8b4a21fc30"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 09 18:14:48 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 09 18:14:48 2017 -0800"
      },
      "message": "Add dex file verification check for dexlayout output file.\n\nFor debug builds, run the output dex file of dexlayout through the dex\nfile verifier as a sanity check.\n\nBug: 36107940\nTest: mm test-art-host\nChange-Id: I2b556db32cfd360cc4fe8d1d080508deebd27aa0\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": "863f1d79a70403443c089a91ca893db6cbadd3d8",
      "tree": "383e99645839dc26735369273d665cd59ee7bbb6",
      "parents": [
        "fddc19338d9fdee24c4e10b758db1a6997004e2e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 01 12:18:19 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 01 12:31:59 2017 -0800"
      },
      "message": "Prevent dexlayout from moving code items if preceded by class data.\n\nClass data has uleb encoded offsets to the code item, and moving code\nitems will change the size of the class data, which would in turn affect\nthe code item offsets if they precede the code items.\n\nFor now, make it so that dexlayout does not move the code items at all\nin this case. A better fix would be to swap the order of the sections in\ndexlayout, but that can be done in a future CL.\n\nUnit test to follow.\n\nBug: 35855748\nTest: mm test-art-host\nChange-Id: Ica6da1e5e951cf0003fc9793f13ad10b74004eb9\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": "257ab7fe6885c83f1ab17fe9d4cc4a996ebd3c7e",
      "tree": "5964869c31e85cd9e8a2937f2f22c3391af0a650",
      "parents": [
        "40f5a2936056bb0444ef50b6dfe67eb0d2d08fbf",
        "940eb0c00ef531dd9a0a68dbd61e377832e81eb4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 20 23:57:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 20 23:57:22 2017 +0000"
      },
      "message": "Merge \"Add inline caches to offline profiles\""
    },
    {
      "commit": "be9b44b37f9d3bd51e6c39bd4a72b0e8c30084f8",
      "tree": "d35f3c48a9fcf7dfbeaaff16f105aa04d91b85c5",
      "parents": [
        "95c867dcb9c7ec109eac099a259ad3e4cddfb8b0"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Feb 16 13:34:38 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Feb 16 14:26:48 2017 -0800"
      },
      "message": "Add nullptr check to CreateAnnotationSetItem.\n\nUnit test to follow.\n\nTest: mm test-art-host\nBug: 35408418\nChange-Id: I7157fe44b36babdec9a269e3726b393b0ff40dec\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": "a2973d750ea2b2de20b52d364c446d8b5747d824",
      "tree": "0ee42afcc5b33a861670aa81f81b3b49a149a7e9",
      "parents": [
        "be2cfabab221613b60c7f4cafb7eb00aa1e69d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 14 17:12:20 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 15 10:30:16 2017 -0800"
      },
      "message": "Check for duplicate entries when using dexlayout\n\nThe previous approach always inserted in the CollectionMap. This did\nnot work correctly if two different objects had the same offset. Since\nwe constructed a unique_ptr of the object, it would simply get freed\nif the insert failed because there was already an object with the same\noffset.\n\nThis meant that there were some use after free errors for these\nobjects.\n\nTest: dexlayout -a -b hulu.apk\n\nBug: 35305951\nChange-Id: I217e6d83bf6e051b13b1a601ec25512f40593880\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": "5e8d5f01b0fe87a6c649bd3a9f1534228b93423d",
      "tree": "a1441acc0021d170f412542ae2a1ae62794e7846",
      "parents": [
        "b0dde4397fa5b0756312b46bd18477a2c1f6a7da"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 18 18:03:43 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 23 15:50:01 2017 +0000"
      },
      "message": "Fix some typos in ART.\n\nTest: m build-art-host\nTest: m cpplint-art\nChange-Id: Ifc6ce3d0d645c4a8dca72dd483fc03fc05077130\n"
    },
    {
      "commit": "33083d626dbf2c8b06badfd73f50e98114483059",
      "tree": "f6f5db21855a6182b591b57e6a34e5c1fc41b7d0",
      "parents": [
        "fd5f52b60cfa217fb0c4d7dcabdd0336b55990d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 18 15:29:12 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 18 19:00:21 2017 -0800"
      },
      "message": "Rename offline_profiling_info to profile_compilation_info\n\nThis solves a long standing TODO to align the names of the files and the\nclass.\n\nBug: 32434870\nTest: test-art-host\n\nChange-Id: I2707da8fef8736a7223189d894fc00ff11bfab12\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": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\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": "ea7c62983beec6a5a2a6676cc910a436b20ae92c",
      "tree": "cc41732efa47b2301f463f2f9fcabe957ed89c0c",
      "parents": [
        "b46782abf6752ccf688b0d9f5b4bb83e5d33793b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 14 18:10:16 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 22 09:12:14 2016 -0800"
      },
      "message": "Dexlayout cleanup and refactoring.\n\nCreated option to output to a mem map in preparation of hooking\ndexlayout into dex2oat.\n\nTest: mm test-art-host-gtest-dexlayout_test\nBug: 29921113\nChange-Id: Id42ef15cb8f83cc8d05b025b7647a4338e9b96b0\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "54b5855192abee8cb612fce3c34b7562ddf42522",
      "tree": "0bba557936990568075507c5ba86efec959c752b",
      "parents": [
        "3825da56fb16cb8c8128dfad3f65ce392ebf0642"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 16 15:15:04 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 17 11:00:37 2016 -0800"
      },
      "message": "Change offline profile to store type_idx of classes.\n\nChanged from storing class_def_idx to type_idx. Allows dexlayout to move\nclass defs without affecting the profile.\n\nTest: mm test-art-host\n\nChange-Id: I8a040adf0f5f47a1592e18aeb55edde01cb3e1ed\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": "caacd11864383aac65e61be837fb1bb5f91e3878",
      "tree": "0fc2836395d93349aa2e745f31a3cb248e1fdacf",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 20 16:27:02 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 24 08:55:22 2016 -0700"
      },
      "message": "Move dex CFG dumping out of utils.cc\n\nMove CFG dumping to dexdump, the only client.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I0f39f1d5dfc446419d26d709b78d04e45616f42c\n"
    },
    {
      "commit": "b34bb193dd2d45af196592bb4bae26f30d529b13",
      "tree": "e0c38aef953ba388b7e0fb0ef41ec78ab95d4044",
      "parents": [
        "3da7190bae7c1d75edbc87f01343652c246639f2"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 18 17:02:58 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Oct 20 19:04:07 2016 +0100"
      },
      "message": "Dex disassembly suppport for invoke-polymorphic.\n\nBug:  30550796\nTest: art/test/dexdump/run-all-tests\nChange-Id: I013ce2ebbcf9555e01170dc47fc38036c276b1b4\n"
    },
    {
      "commit": "f57589fd40e5b69dad5aff060ccef756507f381a",
      "tree": "62d38e73660d9818b18c4741c6b3cce3306d63d5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 10:09:33 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 13:50:35 2016 -0700"
      },
      "message": "Remove logging dependency on runtime\n\nMoved the abort backtracing function to runtime, forcing callers to\nsupply the aborter at InitLogging.  This makes runtime properly layer\non top of logging by removing the cyclic dependency.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I8b2e72174e937bb88fe1bddd6d04b564cfb011a9\n"
    },
    {
      "commit": "d1e44e27126c8ba20f868a8f70c37633386303c5",
      "tree": "9bebd64b3f516aef7476e089a423a80ec94116b8",
      "parents": [
        "54aaba2420c4ee7c6580293b092b7f38f3b9438c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 06 17:09:32 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 06 17:09:32 2016 -0700"
      },
      "message": "Add \"fixups\" for ids referenced in code\n\nAllow better visualization by determining which type_id, string_id,\nmethod_id, and field_id values are used by code_items.\n\nBug: 29921113\nChange-Id: Ia6ff72064104cd5c0868e972ca65536dbeb37b09\nTest: dexlayout -s {some favorite apks}\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": "cdcfde74ccd72c60dc9456013e32d8b00fefdee6",
      "tree": "1c29e986405c23285771a31250c5f26857f41046",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Sep 26 07:44:04 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 04 10:47:24 2016 -0700"
      },
      "message": "Option to gnuplot dex layout\n\nDisplay the portions of the dex file that are accessed by the classes in\nthe dex file.  Optionally limit the display to only those classes that\nare present in a runtime profile.\n\nBug: 29921113\nChange-Id: I2a998fba448fec6c23941d3b4358531b1336e1b3\nTest: dexlayout test\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": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "3ab96b460684781af58b3f9c5b9fb0e370de6b50",
      "tree": "8165154e9ec5d6977ec3b2405f6b4ba0a6731b7e",
      "parents": [
        "6a40fc9bbb9421f78ffd7a9cce7f9acff3aa7d0d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Sep 09 18:35:01 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Sep 19 18:42:34 2016 -0700"
      },
      "message": "Dexlayout changes to support offset/size output of items.\n\n- Created offset \u0026 size fields for items, initially populated with\n  values from original dex file.\n- Created index field for indexed items in header.\n- Created Item objects for StringData and TypeList.\n- Created Collections container to hold unique_ptrs for all objects\n- Reorganized EncodedArrayItems to make it easier to collect them\n- Added relevant annotations-related items to Collections\n- Some size calculations and section offsets left as TODO\n\nBug: 29921113\nTest: mm test-art-host-gtest-dexlayout_test\nChange-Id: Id812f104c1930a3ee381e885f353a9a49f29ac9b\n"
    },
    {
      "commit": "904614f008fa03b4443f1a0abdac1a1966805696",
      "tree": "4fb2578a78dcf514bccc6df9ad24674623bdf8c4",
      "parents": [
        "ec88abde5944eaa94e1299cc2ec040b51977b1f4",
        "afd3c9ea7f238afebd5073c1143d3c832ab10a71"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 19 17:12:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 19 17:12:37 2016 +0000"
      },
      "message": "Merge \"Convert art runtests to Android.bp\""
    },
    {
      "commit": "afd3c9ea7f238afebd5073c1143d3c832ab10a71",
      "tree": "ea95e66ac119b6f86f637ebbeba22e956d3a4c4e",
      "parents": [
        "be3a3ee02f148345ba6e1a0361532a3f7e8c0002"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 16 13:47:21 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 19 10:10:42 2016 -0700"
      },
      "message": "Convert art runtests to Android.bp\n\nBuild the art runtest libraries with Android.bp.  The host test\nlibraries move from out/host/linux-x86/lib[64] to\nout/host/linux-x86/nativetest[64], and the device test libraires from\n/data/artest/${TARGET_ARCH} to /data/nativetest[64]/art/${TARGET_ARCH},\nwhich requires adding nativetest to the library search path, and fixing\nsome tests to support multiple entries in library search paths.\n\nTest: m -j test-art-host\nTest: m -j test-art-target\nChange-Id: I2118a3292f22f275954ddd7cdd4e12287fe47808\n"
    },
    {
      "commit": "9aa352e92b6ca0f2250cb7f54dfbf4b1be714c19",
      "tree": "647b9274daa64b3497c202da4327be26fe4e494b",
      "parents": [
        "47c22ff721503c0eb325508450663adacf0bd377"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Sep 15 18:13:52 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Sep 16 16:31:19 2016 -0700"
      },
      "message": "Remove TypeLookupTable from DexFile.\n\nOne more step towards removing runtime dependencies from the DexFile\nAPI.  This severs the ties to OatFile.  Work remains to move MemMap out\nof DexFile.\n\nBug: 22322814\nChange-Id: I29e7ad8fd292c7919ed2689dc754b958b88d6819\nTest: test-art-host\n"
    },
    {
      "commit": "6e95dd56e43b3a29fb8360bd94e31cd2eaab1d3d",
      "tree": "c536c5588f8a96f4559ca00921c7852a82558ea5",
      "parents": [
        "6b22aa5106e60545119b9eeaceaa9f87ee597305"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 12 15:37:10 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 15 12:27:06 2016 -0700"
      },
      "message": "Convert art gtests to Android.bp\n\nThis splits the compilation and running of the art gtests into two\nseparate locations.  The tests are now compiled in multiple Android.bp\nmodules in each directory.  art.go collects the installed locations of\neach test and exports it as make variables.  art/build/Android.gtest.mk\nconverts the list into the rules to run the tests.\n\nThis has a few changes in behavior:\n  - The rules to build tests are now always defined, and will build as\n    part of mmma art or make checkbuild.\n  - Host tests are no longer installed into out/host/linux-x86/bin, they\n    are in out/host/linux-x86/nativetest[64]/\u003cmodule name\u003e/\u003ctest name\u003e\n  - Target tests are now in\n    /data/nativetest[64]/art/\u003carch\u003e/\u003cmodule name\u003e/\u003ctest name\u003e\n\nTest: mmma -j art\nTest: m -j test-art-host\nTest: m -j test-art-target\nChange-Id: Iabcd99d43890e6b693688422b07a283c3226a496\n"
    },
    {
      "commit": "fe6064ae8b861f1290aa793ce0de219781da6a10",
      "tree": "a24da585adbafc5932e4c3aab07f0e1d9a639628",
      "parents": [
        "090a5da3a7f320b9d2aa9fa461efc11a7eb39392"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Aug 30 13:49:26 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 08 11:00:53 2016 -0700"
      },
      "message": "Convert more of art to Android.bp\n\nRelanding I1b10f140e17dd5e12a9d7f6a29d47cf61f5bf6ef, with fixes to\ncompile dalvikvm32 and dalvikvm64, and add them as dependencies of\ntests.  Also fixes HOST_PREFER_32_BIT by moving the override from the\ndefaults, which are not used by everything in art, to the art_cc_binary\nmodule type.\n\nTest: rm -rf out/host; m -j HOST_PREFER_32_BIT test-art-host; m -j test-art-host\nChange-Id: I64d3eef5080e128103d052497760c3521cc253c6\n"
    },
    {
      "commit": "72359225691975281f0bd5a0a19b07a0b2e6b498",
      "tree": "228df961b259fa72be55950a52ad7b357546e369",
      "parents": [
        "ef858c25d043074fe572c5d578e08af12e055733"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 07 13:04:01 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 07 15:56:40 2016 -0700"
      },
      "message": "Fix some memory leaks found by valgrind.\n\nBug: 29921113\nChange-Id: If70d475a3317751d206658c5794a32d78bc33e47\nTest: valgrind-test-art-host-gtest (with --trace-children\u003dyes)\n"
    },
    {
      "commit": "853a8e10844b9b9e791c6d40e5d332cd38af97d6",
      "tree": "7339753d96f5e346c28a5c57a561a9464d83e719",
      "parents": [
        "3e65825978056adf7cbad646d4ab92c161a60e09"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Sep 01 13:03:50 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 06 14:06:23 2016 -0700"
      },
      "message": "Separate DexIr building from constructors.\n\nMove all the construction from DexFile out of the constructors of the\nbasic IR.\n\nBug: 29921113\nChange-Id: I3f79c104ce7183ddde73f143c047061416009a54\nTest: test-art-host-gtest\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"
    },
    {
      "commit": "7629f60ffa7b8533ea0b50263d52cc1df72b2904",
      "tree": "ce4d4f25c48dddf5930ff0d55c9d071f041a27fd",
      "parents": [
        "081e7a16c4fcbdb014441a236e12f58eb89ff99a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Sun Aug 07 16:01:51 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 31 10:15:50 2016 -0700"
      },
      "message": "Add dex file intermediate representation\n\nAdd an intermediate representation, constructed from the DexFile\nutilities, that can be used to optimize the layout and re-emit dex\nfiles.\n\nBUG: 29921113\nTEST: TODO: Add dex files to compare output with dexdump\n\n(cherry-picked from commit af14d9f551e6169c201dc7981d9cfbcb53c7d2c7)\n\nChange-Id: I3dacb78fad5228e43d77f20b110bd40e0e116cdb\n"
    }
  ]
}
