)]}'
{
  "log": [
    {
      "commit": "9c7b1e7073f3c309e8b0023974aa9136b22f4b2e",
      "tree": "5ec0b4cb6115eab6f266bc02e6706ae4d4b0995b",
      "parents": [
        "161911c9acf9506d17297ef6e83d09ad480a1a2e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 02 09:26:55 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 02 15:46:53 2021 +0000"
      },
      "message": "profman: Record all dex files in boot image profile.\n\nTest: m  # and check boot-profile.prof with hexdump.\nTest: Manual; use jitzygote system properties and check that\n      dex2oat is compiling expected dex files for the boot\n      image extention during zygote start.\nBug: 177980172\nChange-Id: I2cb0ae90d2d06a1b65fd1abe6ff437cbbb9884b6\n"
    },
    {
      "commit": "c63d9672264e894d8d409e8d582b4e086b26abca",
      "tree": "1e285cbab4c71aea3c8c37b4e4c5e8241a3ce117",
      "parents": [
        "0bf5b6729be507f1e78fc61f17554393dd978e46"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 15:50:39 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 17 13:42:11 2021 +0000"
      },
      "message": "Rewrite profile file format.\n\nThe new format contains one mandatory section and several\noptional sections. This allows extending the profile with\nnew sections that shall be ignored by old versions of ART.\n\nWe add an \"extra descriptors\" section to support class\nreferences without a `dex::TypeId` in the referencing dex\nfile. Type indexes between the dex file\u0027s `NumTypeIds()`\nand `DexFile::kDexNoIndex16` are used to index these extra\ndescriptors. This prepares for collecting array classes\nwhich shall be tied to the element type\u0027s dex file even\nwhen the array type is not needed by that dex file and has\nbeen used only from another dex file. It also allows inline\ncaches to be self-contained, so we can remove the profile\nindex from data structures and serialized data.\n\nThe creation of the the binary profile from text files is\nupdated to correctly allow array types to be stored as the\nprofiled classes using the \"extra descriptors\". However,\nthe interface for filling in inline caches remains unchanged\nfor now, so we require a `TypeId` in one of the processed\ndex files. The data collection by JIT has not been updated.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nTest: boots.\nTest: atest BootImageProfileTest\nBug: 148067697\nChange-Id: Idd5f709bdc0ab4a3c7480d69d1dfac72d6e818fc\n"
    },
    {
      "commit": "adfa1ad73a3a557bdec67d59894139b2727aaa7d",
      "tree": "5e942d518f0139b2eaa6154ca0a2f729b63e515c",
      "parents": [
        "a220980389b87aa448b5f2d110eba7604c383c12"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 15:02:49 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 26 07:34:21 2021 +0000"
      },
      "message": "profman: Clean up output profile type options.\n\nReplace options\n  --generate-boot-profile\n  --generate-boot-android-profile\nwith\n  --output-profile-type\u003d(app|boot|bprof)\nwhere the default `app` can be specified explicitly.\n\nTest: m  # Check output boot profiles with hexdump.\nBug: 148067697\nChange-Id: I9154f7541a4e40ce3cce452f5a26767097d6b0cc\n"
    },
    {
      "commit": "cff30a0bfa3c4212f304caef24236884e144375d",
      "tree": "6a431222409f3a1a96c775d14cf455b82d466301",
      "parents": [
        "34aebb676cd442475e9384d72193b3693846247f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 25 17:33:32 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 31 21:33:24 2021 +0000"
      },
      "message": "Better support ICs on virtual calls\n\nDue to the way we implement profiles InlineCaches are only valid on\nmethods with implementations. Unfortunately due to the rather slow way\nwe update boot profile definitions code refactorings can lead to\ninline-caches being lost. This change makes profman more resilient to\nthis error by searching up the superclass resolutions to try to find a\nmethod the inline-caches can be attached to. This should ensure that\nboot-profile definitions fall out of date more slowly.\n\nTest: ./test.py --host\nBug: 168941430\n\nChange-Id: I5f6096500fa6f17e285b5a7bab21ad8216221966\n"
    },
    {
      "commit": "8706b9c9bf9292ec313d8590f7f6c0c8a753a79d",
      "tree": "f1de4a731b501184f97c6c3ad6f8101323a4f0c0",
      "parents": [
        "2769f0145057396e3dab5efe53c05ebd6336d08c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 23 13:52:35 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 23 15:56:58 2021 -0700"
      },
      "message": "Support unrecognized methods in profman\n\nIf one tried to use profman files from the future (I.E. internal\nmaster on AOSP) profman would LOG(FATAL) due to not finding the\nmethods listed. This is undesirable and a better solution is to simply\nsilently ignore this error since the profile files are only\noccasionally updated.\n\nTest: m droid\nBug: 168941430\nBug: 183514504\nChange-Id: I1cf48173c7c708b1d732868bed3b268138c83063\n"
    },
    {
      "commit": "a64c1ad1ad20b99c4bb3a27acdd30dc9b3aa004b",
      "tree": "3872764b79c105075a49d615334bebae34cf6e9d",
      "parents": [
        "f84ec8662b695f6679023f368bc7203d3804a43e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 14:27:05 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 15 11:00:50 2021 +0000"
      },
      "message": "Rewrite hot method info retrieval.\n\nRemove the `ProfileCompilationInfo::GetHotMethodInfo()` API\nand provide another API to tie profile indexes to dex files\nfor inline caches that avoids unnecessary heap allocations.\n\nAnd look up only dex caches for the referenced dex files\nwhen getting AOT inline caches in HInliner.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimzing\nTest: boots.\nBug: 181943478\nChange-Id: I124ac4870b0f483c1f0422c841c4ff69fc95b7e0\n"
    },
    {
      "commit": "0b58ec56d3169dbd69d20f4492913b25b2c875dd",
      "tree": "a95513bedfe077accafb8a9faee7b292ef42b245",
      "parents": [
        "0613605645846299f61d52e8a6ffd58f6ce04063"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 02 14:11:59 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 02 14:11:59 2021 -0800"
      },
      "message": "Change from using \u0027[\u0027 to \u0027]\u0027 for inline-cache delimiter\n\nWe were using \u0027[\u0027 as an inline cache delimiter but this could cause confusion\nbecause \u0027[\u0027 is also meaningful as an array marker for java language class\ndescriptors. Using \u0027]\u0027 instead avoids this problem while maintaining the\ncurrent parsing code.\n\nTest: ./test.py --host\nBug: 168941430\nChange-Id: I89101f316b7df8696f7d45c09600b974421fccbf\n"
    },
    {
      "commit": "a2f1319a8941ae52c98594824b919c08eeb0ecd1",
      "tree": "df07248cd6701bf764c01ed1322b355c16e159bf",
      "parents": [
        "642c0f0e79ce35f11e0af5625618cb126ad40ffa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 03 18:19:03 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 19 20:32:08 2021 +0000"
      },
      "message": "Add text-profile support for multiple ICs\n\nText profile inline-cache support was limited to methods with only a\nsingle invoke. This extends support so it is instead based on the\nreceiver type and supports an arbitrary number of invokes. It does\nassume that all invokes of the same receivers should have the same\nICs. This enables us to create text profiles that can survive most\ncommon edits to the underlying java language files.\n\nIC lines are of the following format\n\n\u003c\u003cCLASS_GROUP\u003e\u003e :\u003d {CLASS}(,{CLASS})*\n\u003c\u003cIC_GROUP\u003e\u003e :\u003d \\[{CLASS}{CLASS_GROUP}\n\u003c\u003cIC_LINE\u003e\u003e :\u003d {PROFILE_FLAGS}{CLASS}-\u003e{METHOD}\\+{IC_GROUP}*\n\nThis means a typical line might look like:\n\n```\nHLTestInline;-\u003einlineTriplePolymorphic(LSuper;LSecret;LSecret;)I+[LSuper;LSubA;,LSubB;,LSubC;[LSecret;LSubB;,LSubC;\n```\n\nNote that old style single-invoke IC lines are still supported as\nwell and their format has not changed.\n\nUpdated --dump-classes-and-methods to dump ICs using this format. Note\nthat it will combine ICs for different pcs with the same target so it\nis possible to construct a profile where the \u0027profile -\u003e dump -\u003e\nprofile\u0027 operation is not idempotent. Any profile coming from a\ntext-dump will be idempotent under this transform.\n\nTest: ./test.py --host\nBug: 168941430\nChange-Id: I69ba3b312caa7ca454487aaeb49862e393de3a4a\n"
    },
    {
      "commit": "365f94f828ebd8aa5f55e3a3882f847960ed6bb5",
      "tree": "b9f8bac488e85093e203f8c079a13dd44a7c033d",
      "parents": [
        "923141b0faf9a0ea3b61bf0a507d95578b2b95e6"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 13 16:27:57 2021 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 14 10:58:35 2021 +0000"
      },
      "message": "Minor updates to fd_file.h\n\n* Add a static IsOpenFd() method for checking if fd is open.\n* File::IsOpened() now checks when underlying FD is open (not just valid)\n* Centralize a definition for kInvalidFd in art projects.\n\nTest: art_libartbase_tests\nChange-Id: Ic5db8b6c80e184308c6ad8979ed31585120eb89f\n"
    },
    {
      "commit": "b209a043a0d5965f25dcb9fde2049df493dcf602",
      "tree": "a0cd43a6e08a9cc2c497014d56721c63f95c26f1",
      "parents": [
        "7c618803036b71631fda8cfb4f8f6615fe88d498"
      ],
      "author": {
        "name": "yawanng",
        "email": "yawanng@google.com",
        "time": "Wed Nov 11 20:17:56 2020 +0000"
      },
      "committer": {
        "name": "Yan Wang",
        "email": "yawanng@google.com",
        "time": "Fri Nov 13 04:16:21 2020 +0000"
      },
      "message": "profman: Change the default new min methods/classes percent change\nfor compilation to 20%.\n\nCherry-pick from 3d312ee3ba7a25e55bf8961a30331c9cf468b95d\n\nBug: 172490638\nTest: run art_profman_tests\nChange-Id: I771c8b99867fd11161ba3bdf5a2e3fa337abafa8\nMerged-In: I771c8b99867fd11161ba3bdf5a2e3fa337abafa8\n"
    },
    {
      "commit": "7c618803036b71631fda8cfb4f8f6615fe88d498",
      "tree": "4e7b6f95c1cb0b3fae8b93d1176390203e7812f2",
      "parents": [
        "7c51d9d1b08aa1919465efd3b5520b530d761f0e"
      ],
      "author": {
        "name": "yawanng",
        "email": "yawanng@google.com",
        "time": "Thu Nov 05 20:02:27 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 13 03:01:35 2020 +0000"
      },
      "message": "profman: Move min new classes and methods limit to argument.\n\nCherry-pick from 6760f0d7c3d14b5bc54f431b9fdde1d68b4a51ad\n\nThis will allow an easy change to these value from framework.\n\nBug: 172490638\nTest: run art_profman_tests\nChange-Id: Iab027f7cbf5da0c14b2854900384df93c3a3e2e7\nMerged-In: Iab027f7cbf5da0c14b2854900384df93c3a3e2e7\n"
    },
    {
      "commit": "3e8caebc5fe05c02d05b5e315d6d8945fd509a26",
      "tree": "76f630f6d1948ae0202a794870f2a2754297a9dc",
      "parents": [
        "33701432b2abbc85db0eaf9e3016bc01da0a12a4"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Aug 07 15:41:24 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 20 13:24:58 2020 +0000"
      },
      "message": "profman: inclusive language updates\n\nBased on:\n  https://source.android.com/setup/contribute/respectful-code\n\nBug: 161336379\nBug: 161896447\nTest: m\nChange-Id: I7aad8b4a68ff046b4710c39643960650a58aff28\n"
    },
    {
      "commit": "0e02d6161f5b2ec53c915d1c6fca0aaff35e1fc6",
      "tree": "5033f37d086bea82b7749629c4d6d9b6714f326b",
      "parents": [
        "48030c48c47741f5113ca0b0144ab7390babc677"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 18 18:05:29 2020 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 19 19:36:48 2020 +0000"
      },
      "message": "Support multiple boot image profile aggregations in profman\n\nUpdate the logic to be able to aggregate and operate on multiple\nboot image profiles.\n\nTo assist with this change the flatten profile data will store\nannotations as a list instead of a set. This way we can keep\ntrack of how popular a method is across multiple profile (the\nsource packages can now be duplicated, in which case it means\nthat the same method was used in 2 different profiles by the\nsame package)\n\nTest: gtests\nBug: 152574358\nChange-Id: Iecb6891d0ebbaecc56acde8d8aae08dbfd91f61f\n"
    },
    {
      "commit": "48030c48c47741f5113ca0b0144ab7390babc677",
      "tree": "65edbfd429da1405708dfbbb259f401dc0e55a52",
      "parents": [
        "187a2014bdd8c19092766e916393bb74dfc5b788"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 17 19:16:01 2020 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 19 19:36:48 2020 +0000"
      },
      "message": "Add support for preloaded classes blacklist in profman\n\nProfman will now filter out any blacklisted class for the list\nof preloaded classes.\n\nTest: gtest\nBug: 152574358\nMerged-In: I755176c5d5afcd821c19152fd2ea941f1b80eaa8\nChange-Id: I755176c5d5afcd821c19152fd2ea941f1b80eaa8\n"
    },
    {
      "commit": "0f7f4fcf7f2d57b1dd361c08c7023a21549344d9",
      "tree": "6474fda350d5fccd936d2a7bdd7dc8284a014e1e",
      "parents": [
        "0fee1fbaf203756e77f360462f0f7f9ba7e097d1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 11 20:16:50 2020 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 18 16:47:30 2020 +0000"
      },
      "message": "Generate boot image profile from profman\n\nThe CL adds support for boot image profile generation in profman.\nIt reuses the class BootImageProfile to do so which functionality was\nobsolete and no longer working due to updates in the boot image profile\nformat.\n\nThe boot image profile generation accepts a single profile as input and\nwill output 2 files: the boot image profile and the associated preloaded\nclasses file.\n\nThe generation can be tweaked via command line options by specifying\ndifferent thresholds for classes and methods.\n\nTest: gtest\nBug: 152574358\nMerged-In: I928cd469cbe8a6c25b414b84aaaf43937e7f688e\nChange-Id: I928cd469cbe8a6c25b414b84aaaf43937e7f688e\n"
    },
    {
      "commit": "0fee1fbaf203756e77f360462f0f7f9ba7e097d1",
      "tree": "e597c04527d252059f092605ddbb6e9a01ef814b",
      "parents": [
        "c03de4140446d4f57b8778a1faff2835bf56c3f8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 11 20:03:20 2020 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 18 16:47:30 2020 +0000"
      },
      "message": "Enable annotation parsing in profman\n\nClass and method samples can now be annotated with the package that\ngenerated then by using \"{annotation}\" prefix in front of a profile line.\n\nThis is a pre-step for allowing the testing of boot image profile\ngeneration in profman.\n\nTest: gtest\nBug: 152574358\nMerged-In: Ibd5e459ae8d6ae0ca1407d0937872b82f1eb2572\nChange-Id: Ibd5e459ae8d6ae0ca1407d0937872b82f1eb2572\n"
    },
    {
      "commit": "ad88cbe5ac72e318d998bc16fc43d75522e13a3a",
      "tree": "f8a54f6d3d1a147e4d9074a5918ae0becf318511",
      "parents": [
        "0f6bde0ee40de32e404d5c7882fe8c8aa47de0a3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 11 18:43:15 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 13 00:33:20 2019 +0000"
      },
      "message": "Handle profile annotation during profman-merge\n\nWhen merging via profman we need to consider the presence of annotations\nduring data filtering. The profile key contains more than just the file\nname, and as such it needs some processing when compared to the apk\nlocations.\n\nTest: profile_assistant_test\nBug: 139884006\nChange-Id: Ic35814f7e2eebfa9b92126b9d527159754412d9a\n"
    },
    {
      "commit": "0e82e0f089944079f1f664a748abe11fcad73e97",
      "tree": "0f301c30756c0f57f3a7f8d29525a25acc3d27fe",
      "parents": [
        "cb809bb89eca9889a7ad443372e6a918f3c14650"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 11 18:34:10 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 13 00:33:20 2019 +0000"
      },
      "message": "Add more options for boot profile aggregation\n\n1) force_merge - ensure we merge the data even if it\u0027s just a few methods\n2) boot_image_merge - ignore non-boot-profiles (in case the app didn\u0027t\nhave the chance to pick app the new format after the flag switch)\n\nTest: profile_assistant_test\nBug: 139884006\nChange-Id: Icf7a9a8edac64bac69d16937bc2496bf610f10c8\n"
    },
    {
      "commit": "a85580ad9bd639e5137c799814405439aa0e757f",
      "tree": "e3a8fff47c7e138fa8fada220b16f4e626ab615e",
      "parents": [
        "f3a1a29d08b2ad73a378ef31261c6238dd1def61"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 27 13:24:33 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 02 18:16:12 2019 +0000"
      },
      "message": "Remove aggegation counter handling from profman\n\nThe profile no longer support aggregation counters and this has no effect.\n\nBug: 139884006\nTest: m\nChange-Id: Iacadb08611e7dbce9a0d60eff92f44faaa9a3afc\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": "849439ac18cc36972c145fef2e0f54dea36ff131",
      "tree": "f099b4ebf92674674e332c85ff99b05b9bbdb6e7",
      "parents": [
        "973f8c48154526f1211d8be3f95855bce753f76c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 16 15:09:16 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 17 19:21:03 2019 +0000"
      },
      "message": "Refactor the management of profile keys\n\nMake the profile key generation dependent on the actual profile object\n(non-static). This will allow us to add additional information into the\nkey, depending on the profile version. For example, for the boot image, we\nmay add the architecture so that we can capture the differences between 32\nand 64 bits.\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: Id1ad60ac50adcf8bfe011b8d843c4cc4e9d5fc0f\n"
    },
    {
      "commit": "f0c94806a921e17c701797cc017b794c58033eb5",
      "tree": "3fc00b7216efabe58518f40ae4e4bc16dad6b0b7",
      "parents": [
        "d6fa4f24eae85b97c13728b846c430a8464839ee"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 28 18:27:48 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 12 20:48:48 2019 +0000"
      },
      "message": "Remove support for aggregation counters from device ART profiles\n\nThis is in preparation to extend the profile format with more data for\nboot profiles.\n\nThe aggregation counters will be no longer needed and they complicate the\nlayout and structure.\n\nBug: 139884006\nTest: m test-art-host-gtest\nChange-Id: I8472d17300f866d0e1580ad5bd88fe061a893864\n"
    },
    {
      "commit": "f5e26f8f834fe5e996f06074c5911ff9af4bc6d9",
      "tree": "2b9dfca37bc0e6197c6310e598707b9805fc7997",
      "parents": [
        "be53085e183be3edafdf03cac58624c87383e7e9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 13 15:21:05 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 14 08:30:37 2019 +0000"
      },
      "message": "Support array classes in profiles.\n\nThis helps generate better AOT code, and saves on memory for the boot\nimage.\n\nTest: profile_assistant_test\nChange-Id: Id3831f72432cd3de2cb5971a30f96e55d1b5d087\n"
    },
    {
      "commit": "a0fc13a97a22604c5587a30d3b92cf22e68079a7",
      "tree": "509b1c4a795d08f5b8fcdf793f20fbc41a54362d",
      "parents": [
        "92db59bdb2c0154a1bec0c1e70c50f5f13d462a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 23 15:48:39 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 25 13:46:03 2019 +0000"
      },
      "message": "Add support for a profile listing methods in compilation order.\n\nWill be used for jit zygote. Currently naive implementation separate\nfrom the regular profiles.\n\nTest: profile_boot_info_test\nBug: 119800099\nChange-Id: I30c49dcd80f6bcdc4c020e11cf2cd9cc0a46bebe\n"
    },
    {
      "commit": "23a8eb6623cef293dafd0b7be184a1695279525a",
      "tree": "7ded880596d470035c7078d3c42aea951fe45d16",
      "parents": [
        "10d0c96a3539d91d085d63b3ccad80d4fd68c386"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 12:37:33 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 12:37:46 2019 -0800"
      },
      "message": "art: use PLOG rather than LOG strerror.\n\nTest: builds\nChange-Id: I01a9371247feceb62e3aa97165249f4799978fb9\n"
    },
    {
      "commit": "e512556ab85987c52e4be1fcd6d7a1d15a1b0fb6",
      "tree": "16e82b22829a269dcb7b8c305bb0a44c6f74c58e",
      "parents": [
        "2f34e59c10c30ea24fa5f4bc4e3d5a9dc6469c34"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 17:38:26 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 12:29:35 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in profman.\n\nAnd in dexoptanalyzer and hiddenapi, see below.\n\nThe parsing helpers in utils.h were mostly unused, only\nprofman was calling one of them, so move that helper to\nprofman and rewrite and fix it, remove the other helpers.\nThis exposed dependency of dexoptanalyzer and hiddenapi\non StringPiece indirectly included from utils.h, thus we\nreplace it with std::string_view also in those tools.\n\nDuring the rewrite, avoid using std::string_view::data()\nas a null terminated string, prefer to fall back to the\noriginal null terminated raw option instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: Ibeec8069a5d82ea556e03e4577812f94dca6f387\n"
    },
    {
      "commit": "9d9227ae2d8806446fa3e60870d0e8df5e5c9377",
      "tree": "adb174eac909e16705e95bb6e8b23759ebe96249",
      "parents": [
        "163a37ad5f2d0b16bdd32fb8964580991900049a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Dec 19 12:32:50 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jan 07 21:41:30 2019 +0000"
      },
      "message": "Build dexlist, dexlayout, and profman for Windows\n\nBug: 22322814\nTest: wine on linux on a large dex file.\nChange-Id: I93a89253799715de54e1c52213595b0749a5f47f\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": "3ee9cfd97cb3c7d6f8f47a166d2a001e12cc63ce",
      "tree": "4a4d7c05d235c84c697bf8d586176d6a8095e022",
      "parents": [
        "c61b8c64ed2f3bd2e29f5bfa848e5b131d1c0f1e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 11 13:38:35 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Dec 20 05:11:02 2018 -0800"
      },
      "message": "Add support for aggregation counters in the profile\n\nThe profile can be configured to keep track of aggregation counters for\nmethods and classes.\n\nOn device, this is particular useful for the boot image profile. When\naggregating multiple profiles into one and keep track of counters we can\ntell:\n1. how many times we aggregated a method or a class. This tells us how\npopular is a particular method or class amongst the apps.\n2. how many times we aggregated the profile. This tells how many apps\ncontributed to the profile (on a single device).\n\nNOTE: This expands the memory footprint and makes the aggregation slower.\nAs such it is disabled by default and not intended to use for the regular\nprofiling path of apps in prod.\n\nTest: profile_compilation_info_test, profile_assistant_test\nBug: 112617266\n\nChange-Id: I731abf31f65b12bf405c77fb7803bb0bda3b9908\n"
    },
    {
      "commit": "2a487eb89b67d7ff030368e4e4a6ed0a3ac39003",
      "tree": "bedffc5f4ee16d07c957d06cdab5148c69bd6a56",
      "parents": [
        "875b4f26517ce215342746f07e41cda4c1991237"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 11:41:22 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 20 13:04:36 2018 -0800"
      },
      "message": "ART: Fix performance-inefficient-vector-operation\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I286e27424ac39c0fed308811dc3004e734c0560c\n"
    },
    {
      "commit": "dfcd82c09e8ce4562ed39e006d4b1c8163b4e25e",
      "tree": "d9bfd3e043a95b3c8e302769cef23c13a89df3c5",
      "parents": [
        "4f570a43146c1456071f2ffe6590ab96e723051a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 20:22:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 13:06:33 2018 -0700"
      },
      "message": "ART: Fix android-cloexec warnings\n\nUse the DupCloexec helper wherever possible. Add O_CLOEXEC to open\nand fopen calls.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I0afb1beea53ab8f68ab85d1762aff999903060fe\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": "0573f857041b7032837ee1686b1be7191e6353d2",
      "tree": "13ff3211c83059e844cc2ad56576e9521ab30cdf",
      "parents": [
        "29391756f70489a5ab659988f058e359527a7af1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 01 13:52:12 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 01 15:55:37 2018 -0700"
      },
      "message": "Dump Dex file checksums for profman --dump-only\n\nMake it easier to diagnose mismatched dex checksums. Add checksum\nverification in ProfileCompilationInfo::DumpInfo. Some refactoring\nto remove unnecessary code.\n\nBug: 116509324\nTest: test-art-host-gtest\n\nChange-Id: I11fb8d1aa987c0f0a975ef6dcb811bf41d58fad6\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\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": "18e2687c4126d66870d61d6548abc2c7661a66cc",
      "tree": "06eff605df9259dde8170c8efb48b11df4108eb3",
      "parents": [
        "2607d6c47114a18ccf4a532b20e1099d1dd8fcca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 17:19:02 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 07 22:13:48 2018 -0700"
      },
      "message": "Refactor ClassAccessor to use an index instead of ClassDef pointer\n\nRemoves a separate class_def_idx being required for getting the index\nof a ClassAccessor foreach loop.\n\nBug: 79758018\nTest: test-art-host-gtest\n\nChange-Id: Ie3010a17669f24cf492c678b55bdddba7ec62ea8\n"
    },
    {
      "commit": "0d896bd7da4f7b11559aa88aad82e9a9e170a4e4",
      "tree": "44a9278d98ace169e8296feba98038c173f29eaf",
      "parents": [
        "267c83529850f51cd690b3e31882aaae98601afd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 25 00:20:27 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 10:20:59 2018 -0700"
      },
      "message": "Add Method/Field iterator to ClassAccessor\n\nEnables ranged based for loops on fields and methods.\n\nFor visiting both fields and methods, VisitFieldsAndMethods will\nbe faster because of not needing to decode the fields twice for\nseeking purposes.\n\nAdded test.\n\nBug: 79758018\nBug: 77709234\nTest: test-art-host-gtest\n\nChange-Id: I593e23ccd138b87a27d8bab6927ff2b685c057f3\n"
    },
    {
      "commit": "20f49922302d30c452eaf5588a6cf66946866922",
      "tree": "fddf03bbae499705c6a8c51fe1c6f4c63dc31191",
      "parents": [
        "ebf5902272613d8bb563ae312ec5ce2580a59bb7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 16:04:17 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 24 16:06:03 2018 -0700"
      },
      "message": "Move profman/ to ClassAccessor\n\nBug: 77709234\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I97111ef61a6735ef8719c1a6d7c80ad7c553af51\n"
    },
    {
      "commit": "671af6c3f3858bb372fb4946b14c069c2d456a60",
      "tree": "41d0326309b5acb94566335c8825acdd70695427",
      "parents": [
        "df810b9c8d5013cd6f5799a75b6aaf0f3991210c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 17 11:00:35 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 17 11:00:35 2018 -0700"
      },
      "message": "Make dexlayout and profman independent of libart\n\nRemove the libart dependency from these two tools.  Dexdiag remains\ndependent because vdex_file.* is in runtime.  It could possibly be moved\nalso.\n\nBug: 78652467\nTest: make -j 40 checkbuild\n      make -j 40 test-art-host-gtest\n\nChange-Id: I68a62f8b2a2730067aee5ff5e0cf81acdca0d703\n"
    },
    {
      "commit": "818cb80ff7503f4ce46f05386209d0070b6b70b0",
      "tree": "b0e1bf92b900a8fba3d85553f96849d5fe8abd1f",
      "parents": [
        "2b80ed488c497393270c98f7a767d8495166db8e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 05:30:16 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 05:30:16 2018 +0000"
      },
      "message": "Revert \"Make dexlayout and profman build without libart\"\n\nThis reverts commit 2b80ed488c497393270c98f7a767d8495166db8e.\n\nBug: 78652467\n\nReason for revert: ASAN tests failing\n\nChange-Id: Id4bba2711d8b69c0a64e3e8eb335a18facab9fdd\n"
    },
    {
      "commit": "2b80ed488c497393270c98f7a767d8495166db8e",
      "tree": "e1c249285b2e441b56ec7faf06757f3fe7affde5",
      "parents": [
        "a6ce173839a1bca1811fca7d9a0a39efd720611d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 08 08:58:15 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 10 08:23:22 2018 -0700"
      },
      "message": "Make dexlayout and profman build without libart\n\nUse libprofile and libartbase to remove the dependencies on libart for\ndexlayout and profman.  dexdiag remains connected to libart because of\nvdex file APIs.\n\nBug: 78652467\nTest: make -j 40 test-art-host-gtest\nChange-Id: Ie4d58e7e75aa725a6d453a9d4c7fefd868aa7b2d\n"
    },
    {
      "commit": "302dda50f7e3ff91f6afb2fca48c8ae26ce4f75c",
      "tree": "d74c89c28fe9249d7579f8ecd607c2fe2daffb47",
      "parents": [
        "56189d23563610a63064b9ef97e5851f21bcadc8",
        "1bfe4bd4c444017cf40ccadcfbf20cb0ceb37880"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 30 18:29:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 30 18:29:20 2018 +0000"
      },
      "message": "Merge \"Do not verify apks when processing profiles\""
    },
    {
      "commit": "1bfe4bd4c444017cf40ccadcfbf20cb0ceb37880",
      "tree": "1b7ed77256b2debb0da609f8fddf64efe4fcc044",
      "parents": [
        "f0cf86fd4085c725b667058b416e0f8a6a7dfcc2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 26 16:00:11 2018 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 27 12:50:39 2018 -0700"
      },
      "message": "Do not verify apks when processing profiles\n\nIt\u0027s a waste of time and it causes problems when taking snapshots for the\nboot image profile.\n\nBug: 73313191\nTest: profile_assistant_test\nChange-Id: I8e838af9515b41402eda455c23741a855c48ff98\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": "c24fa5d93102688097eaf5bebaf6c653ca5c168d",
      "tree": "ac2d1a74e5f91d125b8717983c459bc17da48dce",
      "parents": [
        "a03627a94c0eead28e1c7d917218ad398d483495"
      ],
      "author": {
        "name": "Rico Wind",
        "email": "ricow@google.com",
        "time": "Wed Apr 25 12:44:58 2018 +0200"
      },
      "committer": {
        "name": "Rico Wind",
        "email": "ricow@google.com",
        "time": "Wed Apr 25 12:46:50 2018 +0200"
      },
      "message": "Allow INVOKE_VIRTUAL_RANGE as single invoke\n\nTest: new D8 dexer works\n\nChange-Id: I7480ca3d7a180f76d370de6ebf803ba07c76c5e0\n"
    },
    {
      "commit": "f5d9f81542dcdf9f388d7daf4972123312fffa92",
      "tree": "f6e213a83b87cc48164752ff110c00aece01e9e1",
      "parents": [
        "6648da11ae28d1bc8d288eba3c3131bade13e314",
        "daf374cc169ebc9beca38f1c6edf1883f061ae74"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 13 21:12:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 13 21:12:30 2018 +0000"
      },
      "message": "Merge \"profman: removed unused header\""
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    },
    {
      "commit": "daf374cc169ebc9beca38f1c6edf1883f061ae74",
      "tree": "11a71b327d8345014ce8b0cb55670aab20853660",
      "parents": [
        "b8a5e8b0c4a03e5c2b401b968f3b25eac26ec460"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Thu Apr 12 06:51:01 2018 -0700"
      },
      "committer": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Thu Apr 12 06:54:50 2018 -0700"
      },
      "message": "profman: removed unused header\n\nWhile root-causing a spurious getattr selinux denial, I noticed\nsys/stat.h is no longer used. Remove.\n\nTest: mmm art/profman\nChange-Id: I3e35946b80fe91cead268f2b89210ebd85e89892\n"
    },
    {
      "commit": "312f3b2fd0094c028a7d243b116947a35a745806",
      "tree": "3d7ec049ded98c489098c87250c75e3f711f8290",
      "parents": [
        "0a3d5eb2ff9e70fa5785638da938439835d0337e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 08:39:26 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 11:02:48 2018 -0700"
      },
      "message": "Move some remaining dex utilities\n\nThere were several utilities related to building/walking/testing dex\nfiles that were not in libdexfile.  This change consolidates these.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0\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": "02c08794435da77724486a5170d1733f760bc8af",
      "tree": "3c27cc9dc503c7f603a370563df0e1272ebad8d2",
      "parents": [
        "ee9cb41260bc76cdb8572b10e99e6da866d9a8c8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 15 19:40:48 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 16 12:11:48 2018 -0800"
      },
      "message": "Actually use --copy-and-update-profile-key argument in profman...\n\nThe argument was not parsed and thus always false. This went under the\nradar because the tests were verifying the profile assistant code\ndirectly, bypassing profman cmd line invocation.\n\nTest: profile_assistant_test\nBug: 30934496\nChange-Id: I8f0b4f63759db39a6948d92a701b0e2794f253b1\n"
    },
    {
      "commit": "ee9cb41260bc76cdb8572b10e99e6da866d9a8c8",
      "tree": "c5192809ccfe6042800b5710fa22ec600060a81d",
      "parents": [
        "b40fa7c33075292beeb6840ac679ffd08fd1f719"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 13 20:32:35 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 15 15:31:19 2018 -0800"
      },
      "message": "Ensure that we always set the method hotness in the profile\n\nThe method hotness were not recorded for methods extracted from the JIT\ncode cache.\n\nTest: gtest \u0026 run-test\nBug: 71588770\n\nChange-Id: Ifdf6340caa9faf5adb6f3b3b5b4046f31f34189c\n"
    },
    {
      "commit": "e10c1e23223c50daca784e6208c1153935100e31",
      "tree": "14c8461faf8c9998354ab4b64f7a89a6cd9f37e2",
      "parents": [
        "2827ff64c7a385cfb9d6e01e6385708461eb65fc"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jan 26 20:10:15 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 02 06:47:09 2018 -0800"
      },
      "message": "Enable profile data filtering in profman\n\nUpdate profile merging to accept a set of apks (passes with --apk) which\nwill dictate what data should be processed.\n\nWhen profman is invoked with a list of --apk files, only profile data\nbelonging to that apks will be in the output reference profile.\n\nIf no --dex-location is specified then the locations is inferred from\nreding /proc/self/fd/apk_fd link.\n\nTest: profile_assistant_test\nBug: 30934496\nChange-Id: I44698c6db545ecf91454db1387c3d0e47fe5b9b3\n"
    },
    {
      "commit": "f13ac7ce507c759f34e9ff4f4116c956f166c4c6",
      "tree": "0c0d77e9992fd34d9673dd3057d8a896919a5fd9",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 30 10:09:08 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 30 16:22:29 2018 +0000"
      },
      "message": "Profman: Skip dex file verification for boot jars\n\nThe introduction of new access flags into boot jars causes them to\nfail dex file verification. The files are verified in `hiddenapi`\nand verification should be skipped in subsequent attempts to open\nthem. This patch adds a new flag \u0027--skip-apk-verification\u0027 which\ninstructs `profman` to skip dex file verification.\n\nBug: 64382372\nTest: make test-art-host-gtest-profile_assistant_test\nChange-Id: Iad614e47feada293218c11cff985a8012ca49a0f\n"
    },
    {
      "commit": "2dba0ab8498e5ff3ba5be2e37e26310a661cf259",
      "tree": "4dcc90f214855c7521817f9809712726132d4a1e",
      "parents": [
        "49971eb50c0213b7506bdd29954a6a4423e6426a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 22 19:22:24 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 24 12:14:47 2018 -0800"
      },
      "message": "Enable profile key updates via profman\n\nAllow profman to update the profile key in an existing profile based on\nnew dex location.\n\nThis is needed in order to support profiles for dex files that might move\nfrom their original profiling location (e.g. during install)\n\nThe matching [profile key \u003c-\u003e dex_file] is done based on the dex checksum\nand the number of methods ids. If neither is a match then the profile key\nis not updated. If the new profile key would collide with an existing key\n(for a different dex) then the update will fail.\n\nTest: profile_compilation_info_test\nBug: 30934496\n\nChange-Id: Ic696b3f6fe9da2007421bf044d58a21c90fd9ee7\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": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "f3c52b42a035902245d00a619fed0275afb063d2",
      "tree": "c46dab07826be55e9ca92ab301eed586c2f307ca",
      "parents": [
        "b360bff818ad0bf59668cd2bebaaeeaa8a3b5dfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 17 17:32:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 21 17:09:44 2017 +0000"
      },
      "message": "Fill Class and String .bss slots in runtime.\n\nShift the responsibility for filling Class and String .bss\nslots from compiled code to runtime. This reduces the size\nof the compiled code.\n\nMake oatdump list .bss slot mappings (ArtMethod, Class and\nString) for each dex file.\n\naosp_taimen-userdebug boot image size:\n  - before:\n    arm boot*.oat: 36534524\n    arm64 boot*.oat: 42723256\n  - after:\n    arm boot*.oat: 36431448 (-101KiB, -0.3%)\n    arm64 boot*.oat: 42645016 (-76KiB, -0.2%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nTest: m dump-oat, manually inspect output.\nBug: 65737953\nChange-Id: I1330d070307410107e12c309d4c7f8121baba83c\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": "bda66c79fa705a0f74d2233fb75bdde4d8dc5e5f",
      "tree": "f715660e6b0ff00bce89510aa84664493e6547ea",
      "parents": [
        "b2269c1657c78bdeb23e5dd72708d6c0e216b89b",
        "2ffb703bf431d74326c88266b4ddaf225eb3c6ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 09 01:31:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 09 01:31:19 2017 +0000"
      },
      "message": "Merge \"cpplint: Cleanup errors\""
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "commit": "0021feb36ca7021e2c255e6eaf16b967180290c6",
      "tree": "43f1ce8f6d91630a831d03b51a465d57c2a47119",
      "parents": [
        "550c0aee52bf8981dfe1d22d3b661d61e80cc7ee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 07 00:08:52 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 07 13:15:41 2017 -0800"
      },
      "message": "Delete CodeItemIterator\n\nReplace uses with DexInstructionIterator.\n\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: I28c839c372edcb60583867355d46b14f8752d41b\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": "dbeacd6f1687439bd391bdd6a66a4b48d7d45ebf",
      "tree": "97ab216c77bd586e93beb5074c558b4729a97cb5",
      "parents": [
        "da6f3eee076aced30fdfdc75604509cde516c307",
        "fc8b422c286501346b5b797420fb616aaa5e952a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 18 20:03:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 18 20:03:45 2017 +0000"
      },
      "message": "Merge \"Clean up AtomicDexRefMap\""
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "fc8b422c286501346b5b797420fb616aaa5e952a",
      "tree": "61c857a895cdad9ce387a899f92824701259df32",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Sep 17 13:44:24 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 18 10:57:06 2017 -0700"
      },
      "message": "Clean up AtomicDexRefMap\n\nMake ClassReference, TypeReference, and MethodReference extend\nDexFileReference. This enables using all of these types as the key\nfor AtomicDexRefMap.\n\nTest: test-art-host\nBug: 63851220\nBug: 63756964\n\nChange-Id: Ida3c94cadb53272cb5057e5cebc5971c1ab4d366\n"
    },
    {
      "commit": "d704f0b4414fc1bd4f0be4ac615386ae9ed8bfd7",
      "tree": "59ba287fdfa887c8b540be18242a4de02b8f8489",
      "parents": [
        "c1bb1cd339b2ebea9c4770fb4d61bacd7d77746f"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Jul 26 16:33:35 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Aug 14 11:11:27 2017 -0700"
      },
      "message": "Profman: Use method_percentage and class_percentage values passed for generating profiles\n\nThe percentage was only used for profiles without dex files, however, this\ncould also be used when the dex files are provided.\n\nTest: manual\nChange-Id: Ia8eff4231951b6531ce887938ae2eb10ea502089\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": "8eecddf0ccb18bd3b4d32a48c3b57852e03c12b4",
      "tree": "a3398ee0cd07d8ad8a8b89144c019c881a6e4388",
      "parents": [
        "c9267c48979698a9217760c914aba13ea20b5990"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 16:05:54 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 12 16:44:11 2017 -0700"
      },
      "message": "Add missing profman arg for compiled_method_threshold\n\nThe arg is --boot-image-sampled-method-threshold, this value\nspecifies how many profiles a non-hot method should be before it gets\nmarked as hot in the boot profile. This is useful if we want to do\nthings like compiling all executed methods for the boot image.\n\nBug: 37966211\nTest: test-art-host-gtest-profile_assistant_test\n\nChange-Id: Ib882df1856d555048a4a19343c233232ee848e8a\n"
    },
    {
      "commit": "9c9b9364ad24b4e20b2d88e50f4e013b1f3fa093",
      "tree": "11a60dbff92e963f67824efbb92ce064611a98ec",
      "parents": [
        "f45cf4bfb341051d9d0959f2e2619eaec71fa732",
        "247fc334ca91c22b19ac57b9c8bbbd15a1735aa1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 23 15:03:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 23 15:03:33 2017 +0000"
      },
      "message": "Merge changes I8d333ea5,Ie4efc8bb\n\n* changes:\n  ART: Make gAborting an atomic\n  ART: Refactor abort code\n"
    },
    {
      "commit": "2f7945540cf511148c73672f2ce80ae859b95bed",
      "tree": "ae78e1978b99b991a51a73281378ab70b2629e8a",
      "parents": [
        "a08c9bbe02073d34358c15e3339fa47ed49c39fc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 10:58:08 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 23 00:00:34 2017 +0000"
      },
      "message": "Add support for generating boot image profile\n\nAdded three options:\n--generate-boot-image-profile:\nIf this option is passed in, profman creates a boot image profile.\n\n--boot-image-clean-class-threshold\u003d\u003cvalue\u003e\nSpecifies how many occurrences of a likely clean class are required\nbefore a class is added to the profile.\n\n--boot-image-class-threshold\u003d\u003cvalue\u003e\nSpecify how many occurrences of a possibly dirty class are required\nbefore a class is added to the profile.\n\nAdded unit test.\n\nTest: test-art-host\n\nBug: 37966211\n\nChange-Id: I8e12b0ec34dfa1d1bed0b51f342fffde09815348\n"
    },
    {
      "commit": "51d80ccca5eb2ea0eef0de836dcc03e0545f63db",
      "tree": "14ff2bf5b9a9ca86d8a8d6f736cf27d8a1d47554",
      "parents": [
        "19df565ffcb30cb7b5217f074771078f0bb6cc1c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:05:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 16:04:07 2017 -0700"
      },
      "message": "ART: Refactor abort code\n\nRemove Runtime::Aborter and let Runtime::Abort set the abort message\non target.\n\nThis works around a missing tail-call optimization that leads to a\nsuperfluous frame on the call-stack when aborting.\n\nPartially reverts commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 62810360\nTest: m test-art-host\nTest: Manual inspection of abort dump\nChange-Id: Ie4efc8bbdc8b665b23081b37a11921fe26b182b4\n"
    },
    {
      "commit": "e46f3a8399fec0f2cbb6d730f4f8316c37d7f3c5",
      "tree": "b23f2da67063bee35ae64032f4d0b389a22e7adf",
      "parents": [
        "e882b6dc06804c08206a9fd027a7f67705941f48"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 19:54:12 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 20 16:21:31 2017 -0700"
      },
      "message": "Address some review comments for aog/415919\n\nTest: test-art-host\nBug: 62040831\nChange-Id: I9d8c359ab3a1ff090fe664bbb798a215a3d9eb52\n"
    },
    {
      "commit": "e17cf243978ca7f5356e746ee460f0fcf04e04a6",
      "tree": "e8ad423bf1dee5756fec451ba22db749ed4f5472",
      "parents": [
        "2bc159ebd1115f71d80639e47fc38663aa84ba4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:05:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:11:12 2017 -0700"
      },
      "message": "Add field/method skipping helper functions to DexFile\n\nSpecifically added SkipStaticFields, SkipInstanceFields,\nSkipAllFields, SkipStaticMethods, and SkipVirtualMethods.\n\nAlso applied the helpers to the code base.\n\nTest: test-art-host\nChange-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32\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": "08556886a16ff2bb9fc3f184ac699de21c0369cd",
      "tree": "c90ddce83ac98252ced0a4181b0c4b1e0e34c1f8",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 26 16:40:45 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 01 06:54:11 2017 -0700"
      },
      "message": "Handle gracefully profiles with invalid classes or methods\n\nBug: 38410980\nTest: m test-art-host-run-test-707\nChange-Id: I8c1b0a00c113c0faf0cc5d141e67e4183322520f\n"
    },
    {
      "commit": "dbddc22f5dc2d1ff4d4783fbd66c27812f4980d1",
      "tree": "2a0a8efa1c2630e57ab48ab2de171f2847ff282f",
      "parents": [
        "a559fa1b0d6c276dde2cdc707de1acd4950f7190"
      ],
      "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": "Thu May 25 16:59:44 2017 -0700"
      },
      "message": "Refactor profiles to use TypeReference instead of ClassReference\n\nRefactor type reference into runtime and use it for profiles.\nClassReference was just duplicated code since it wasn\u0027t even using\nthe class def indexes.\n\nTest: test-art-host\n\nBug: 62040831\nChange-Id: Ia92f21c0e85c00321f52c97bb7a90158d882849b\n"
    },
    {
      "commit": "e6f87cc95e5351f3872a4c50e18915a282578ff8",
      "tree": "94af0c8fb8c8926f2bf3fe20d8c3ad6d7dcc4efb",
      "parents": [
        "798ba16bda747d74a27b7a748d3bb5deb2ccbf68"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 24 17:41:05 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 25 15:09:31 2017 -0700"
      },
      "message": "Fix compiler crash due to inline caches and improve docs\n\nFix a potential crash when extracting the inline caches from the method.\nThe way we copied the inline cache into a new map was not correct. In\nProfileCompilationInfo::GetMethod() we reused the same profile arena\nfor allocation which is not thread safe. When compiling with multiple\nthreads the profile arena could become corrupted due to races.\n\nAddress all the comments from the late reviews on the CL which migrates\nthe profiles to arena storage.\n\nTest: m test-art-host\n      compile with speed-profile apps on device\nBug: 37711886\nBug: 62062532\nChange-Id: I61af5175bc68b2c7dba77afb3cdff221989cc387\n"
    },
    {
      "commit": "cc3171ab3af35b4e4ad5671d7425aa8a6bfcc5f3",
      "tree": "ec2c8c37b4d4cb1c213aafd2e5ab41fb115fb241",
      "parents": [
        "80dd30abe3fac52f6de4aec0543918d360f7d08a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 19 16:47:53 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 22 19:00:04 2017 -0700"
      },
      "message": "Use arena allocation for profiles\n\nBy using our arena allocator we can madvise the memory used during\nprofile processing right way. jemalloc may defer the release based on\nunpredictable native allocation.\n\nThe other advantage of arenas is a much simpler way to measure the\nmemory needed by profiles.\n\nTest: m test-art-host\nTest: manual inspection with meminfo and heaptrack\nBug: 37711886\n\nChange-Id: Ib656a8ac63600477ff553831087a83dc40d9c537\n"
    },
    {
      "commit": "66aae3b2191fd8cbb4b932bf517f3cb94b7c8b1e",
      "tree": "f59a312872a9e24cc8fd71c216b0013ab8d82885",
      "parents": [
        "ff120c2ad8862d595908907fb8f83d024ca45957"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 18 10:38:28 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 18 10:38:56 2017 -0700"
      },
      "message": "Move some profman messages from LOG(ERROR) to LOG(WARNING)\n\nReduces build spam since we filter out warnings during the build.\n\nBug: 38411714\nTest: m\nChange-Id: I109e261d319e6afda099b4c0c887e150bdc36325\n"
    },
    {
      "commit": "34067269b9493239e1fdbdd562eda1b0d2c9ec39",
      "tree": "bb0f37b56e62167896c60a1346d7a91d4c6c7aa2",
      "parents": [
        "8309d9b173b205bb9530dbd94e48731c20b8e4f4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 06 13:55:46 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 07 16:23:43 2017 -0700"
      },
      "message": "Change dump-classes profman option to dump-classes-and-methods\n\nThe new option is called \"--dump-classes-and-methods\". This option\ndumps methods and classes in the profile as a format that is valid\ninput for the \"--create-profile-from\" option.\n\nThe goal is to be able to store text based profiles that don\u0027t\ndepend on dex indices or checksums.\n\nTest: mm test-art-host-gtest-profile_assistant_test -j40\n\nBug: 36457259\nBug: 34927277\n\n(cherry picked from commit 09f6c36c0c5ac055bbb5e36991ab60156be1fb46)\n\nChange-Id: I79c4bd8da5c0b4dc9c4c6daed538845792f52299\n"
    },
    {
      "commit": "f0a31f865c3b3e5843ddd52f015c70293b54b4e4",
      "tree": "c6881a22ddb9523220861c070991a83e1bc1f97d",
      "parents": [
        "1082e0e46ddfae2ed9cc3d0a3d6025e7335ac239"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 27 15:50:37 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 28 10:57:11 2017 -0700"
      },
      "message": "Add profman option to generate a random profile based on dex files.\n\nExtends --generate-test-profile to make a randomized profile based on a\nset of dex files. Will randomly incorporate classes and methods from all\nthe dex files given. Can be given a random seed for reproducibility.\n\nBug: 36107940\nTest: mm test-art-host-gtest-profile_assistant_test\nChange-Id: Ib0e54bde5317439516a39afa41c3c9980834fa54\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": "d808e8bb070b853639e41245d846f2fd9354b92f",
      "tree": "211dc821337006864fd4de739e0c24886f389894",
      "parents": [
        "f9806373ca50896ac54cb9da49a030c13ec14769"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 21 13:37:41 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 22 13:10:32 2017 -0700"
      },
      "message": "Add syntax for adding all class methods to profman\n\nUsed to generate methods from the class list. The logic adds all\nthe methods if the method string is \"*\". The class is also added to\nthe profile.\n\nBug: 36457259\n\nTest: mm test-art-host-gtest-profile_assistant_test -j32\n\nChange-Id: Ibee856646b94eccc48d9ef6566475be74e77a0cd\n"
    },
    {
      "commit": "a6fa68f22965ae065f06bebd1388a8ebfdeedca6",
      "tree": "817791f8a5cbba017e2e2efbc156c6932440a3b1",
      "parents": [
        "7733305ab5716d1b1399bd7e261bfa6396eabba3",
        "589e71eb71477603c88b14118b2d3a33508c3c79"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 07 23:27:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 07 23:27:23 2017 +0000"
      },
      "message": "Merge \"Encode inline caches with missing types in the profile\""
    },
    {
      "commit": "589e71eb71477603c88b14118b2d3a33508c3c79",
      "tree": "95d88c7c8ba3a9b2009361d61164cef6a6339308",
      "parents": [
        "d9f647ac9a5cb0c6f112332d584756251c2cfb9f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 16:05:05 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 06 12:57:30 2017 -0800"
      },
      "message": "Encode inline caches with missing types in the profile\n\nNot all runtime types can be encoded in the profile. For example if the\nreceiver type is in a dex file which is not tracked for profiling its\ntype cannot be encoded.\n\nPreviously we would just skip over these types but that can lead to\nencode a polymorphic inline cache when in fact it should be megamorphic.\n\nWith this CL, inline caches for which types are missing are marked in\nthe profile with a special bit, kIsMissingTypesEncoding.\n\nAlso, extend profman to understand text lines which specify an inline\ncache with missing types.\n\nTest: test-art-host\n\nBug: 35927981\nBug: 32434870\nChange-Id: I34528a39c227f3133771fd4454701c1ddc234f40\n"
    },
    {
      "commit": "3f1213445ebfa212d6a03bb381f30333e02dca48",
      "tree": "5ebea247a4c996d495fc814922d62f435a886f0e",
      "parents": [
        "5c90d0b0f332436f7ca5c028256bf5e91e9023d4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 06 11:16:20 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 06 11:16:31 2017 -0800"
      },
      "message": "Change \"could not find class\" to warning\n\nOtherwise its too spammy during build.\n\nBug: 34929159\nBug: 34927277\nTest: test-art-host\n\nChange-Id: I94ab0ad4e3d4b8f4817c6ddadafa2576b415c746\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": "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": "153da0e87eab05a862d1d61943f2d036e9599d34",
      "tree": "400c364ca0a32589e6b88e507b7bb7f7573b8c33",
      "parents": [
        "7d863344e987bde473ae4f6b607e1a49efa1ea02"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 15 08:54:51 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 15 08:54:51 2017 -0800"
      },
      "message": "Clean up profman arg checking\n\nMove argument consistency checking to the places the relevant verbs are\nbeing processed.  This eliminates criss-crossing consistency checks that\nare correct for one verb but not another.\n\nBug: none\nTest: test-art-host\nChange-Id: I520fc8c48675e44959c7de1967642a6ebe4100e4\n"
    },
    {
      "commit": "7c80f2d716a7931ab66096322fcb6b951426b151",
      "tree": "e1c2edf74b50af88e5310145f49925d6d436b883",
      "parents": [
        "e27abfa9faebd3ca251716e18f97876a73bca554"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Feb 07 16:47:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Feb 10 14:26:21 2017 -0800"
      },
      "message": "Convert preload list to profile\n\nAdd functionality to profman to take a list of classes in a text file\n(dot notation rather than descriptors) and build a compiler profile\nfile from it.\n\nBug: 34929204\nTest: test-art-host\nChange-Id: Id867ec7b436cbd8412809a8adb093f588ff474b7\n"
    },
    {
      "commit": "b18991b5d4c47e813874563916c5e017655d6f65",
      "tree": "c38427795f532f1a4fe62c418b22b202487d03c9",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 08 20:58:10 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 09 09:41:45 2017 -0800"
      },
      "message": "Fix ownership of DexFile in profman\n\nDon\u0027t leak the DexFiles we open in profman.\n\nBug: 34929204\nTest: make test-art-host\nChange-Id: Ife29556117c4dd84dd3e970901a7fdf458e5ad98\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"
    }
  ],
  "next": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa"
}
