)]}'
{
  "log": [
    {
      "commit": "52eebc756c96fbf71ad77b6d30bdff8a67723569",
      "tree": "2c5c55137e6e672918a273d8f40503921bafe477",
      "parents": [
        "e0a4f373dc4a738a2f26965a67d31239cbbd4f6a"
      ],
      "author": {
        "name": "yawanng",
        "email": "yawanng@google.com",
        "time": "Fri Jun 18 00:14:50 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jul 10 09:23:33 2021 +0000"
      },
      "message": "Add a aggregation count section to profile.\n\nThis section is used on server side.\nThe format is defined on server and it is:\n\n***************\nuint16 profile_aggregation_count\nuint16 aggregation_count_for_each_dex_file_size\naggregation_count_for_each_dex_file[]\n\nThe format of aggregation_count_for_each_dex_file is:\n  uint16 profile_index\n  uint16 class_aggregation_count_size\n  uint16 class_aggregation_count[]\n  uint16 method_aggregation_count_size\n  uint16 method_aggregation_count[]\n***************\n\nThe aggregation count for classes/methods are in the ascending order of their indices.\n\nBug: 188071742\nTest: m\nChange-Id: I683b296699e2a80a8c6dc167c84b4d592a0f26fc\n"
    },
    {
      "commit": "ea936c02701dc7ac773f5c2272dafde5e1967ea0",
      "tree": "2327327eff2fa2844fb71af8d9ee8a0f48dc7a74",
      "parents": [
        "8d5d58554519ffc673760ba932a77e113f68c5fe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 25 17:10:49 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 05 07:33:20 2021 +0000"
      },
      "message": "dex2oat: Faster retrieval of profile data.\n\nAvoid the slow `ProfileCompilationInfo::GetMethodHotness()`.\nCache profile index to avoid repeating the `DexFileData`\nsearch and use new specialized functions that retrieve only\nthe required information instead of full `MethodHotness`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 181943478\nChange-Id: Iaf8486a5e5b12f114c8abb9cfdedf6fc4ed62e20\n"
    },
    {
      "commit": "5b83a1b2c4b2dd3569d95ca646d7a31a31f73d4d",
      "tree": "93547d1c24e5fa7b01a9afe646f7efdba5f3fbd3",
      "parents": [
        "09eacd9a5d982687b68031a884e4daaa11560f0c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 03 10:12:48 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 04 08:06:37 2021 +0000"
      },
      "message": "Make strings in ART profiles prefixed by length.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nBug: 148067697\nChange-Id: If2150586b8e198ca9422e1bcca81741278dda6ce\n"
    },
    {
      "commit": "dd446b17bedb28838f5866f7c29fb47265f332fc",
      "tree": "452e7b258216b720a9407ab0255a01636f0135e6",
      "parents": [
        "20e77ff50047e62e90b3ce9b7849777ffcd55b0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 20 14:35:51 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 02 08:38:20 2021 +0000"
      },
      "message": "Collect array classes in profiles.\n\nCollect array classes including primitive array classes for\nboot class path profile. Do not exclude resolved erroneous\nclasses, they can still be useful as resolved even if the\nruntime intialization fails.\n\nOptimize the performance, especially the time we need to\nhold the mutator lock. Use that fact that most `ArtMethod`\nmembers can be queried without the mutator lock.\nRemove the GC critical section as it is unnecessary.\n\nTest: Collect a profile by manually running steps from\n      BootImageProfileTest#testSystemServerProfile,\n      pull and dump the profile and check that there are\n      many array classes, including \"[[[B\" and \"[[[I\".\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nBug: 148067697\nChange-Id: I76276d61551c16f532a0e34289bab4acb61b30c6\n"
    },
    {
      "commit": "028c7efaf7321a1e253fb4d9dcc5d85e8a9e6d68",
      "tree": "27631b722b16cc7a71de86e847fe023ccf01a384",
      "parents": [
        "e8efdaa09b7ff36d5a986f0320f29ac4a7563896"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 26 15:37:00 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 27 19:42:00 2021 +0000"
      },
      "message": "Use verify when speed-profile gets an empty profile\n\nChange the compiler filter to verify if we need to compile\nspeed-profile but we don\u0027t get a profile, or the profile is empty.\nThis will improve the clarity and the precision of the telemetry\ndata which usually expects speed-profile to outperform verify.\n\nTest: gtest\nBug: 188655918\nChange-Id: I215552e0001d56df0e0d676721f0a741ef2573be\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": "95f4c66f72e4f9b1877e6f851ba2bb68d3f2f84c",
      "tree": "fe468732a383de2bda1986b4b08776d3aa2547f1",
      "parents": [
        "3c51f78e0f8ac4df02d2916956c3f9ddc0d5129b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 11 12:25:20 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 12 08:03:52 2021 +0000"
      },
      "message": "Style cleanup in profile tests.\n\nThe style was inconsistent and some parameter names comments\nwere missing the \u0027\u003d\u0027 required for checking against names\nfrom function declarations.\n\nTest: m test-art-host-gtest\nBug: 148067697\nChange-Id: Iebe18e7f97a9152e7c0699417bfaf14f64f6b3d1\n"
    },
    {
      "commit": "5859b689d4fdd36711187715c04e2e095f7975c0",
      "tree": "84b374c23e07024935ee899b9a34916168d93228",
      "parents": [
        "68dc4a524c00958cf4f11fc687eabf4c677cde69"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 05 12:34:56 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 06 09:24:35 2021 +0000"
      },
      "message": "Clean up `ResetOffset()` calls in profile tests.\n\nMost are unnecessary since\n    https://android-review.googlesource.com/1685637\nand we remove a few more by using `PreadFully()` instead\nof `ReadFully()`.\n\nTest: m test-art-host-gtest\nBug: 148067697\nChange-Id: Ia654f4519ea9ca91f9a5ca26af55899ccdf4bb78\n"
    },
    {
      "commit": "a61859210844849e97a479bcfa74d1a62f51f819",
      "tree": "42b383d479b8d14d64b3d6e42053b79202e9eafd",
      "parents": [
        "fe1c7b4a5bc83f47844c969c38aeb4288723b171"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 23 16:31:26 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 26 07:26:17 2021 +0000"
      },
      "message": "Fix profile magic detection.\n\nDo not rely on the file descriptor being initialized with\noffset 0. Fix a test that this change exposes as passing\nwrong arguments and non-zero file offset. Clean up tests\nto avoid the ResetOffset() call that\u0027s now unnecessary.\n\nTest: m test-art-host-gtest\nBug: 148067697\nChange-Id: I2a3a07712640f35766ef3b449cd02910e4438cba\n"
    },
    {
      "commit": "f4d05ff134347d723e27919ccc89ce9d412b2d58",
      "tree": "aa368066676880ef1f4fbbec722ad8d88cad8771",
      "parents": [
        "c005ada78df5edebac74739b2c344e1a2a3efcba"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 14 09:39:04 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 16 08:21:03 2021 +0000"
      },
      "message": "Clean up profile tests.\n\nUse TestDexFileBuilder and remove FakeDex. Add a helper\nclass for shared code between ProfileCompilationInfoTest\nand ProfileAssistantTest.\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nBug: 148067697\nChange-Id: I0bf5d3fb7a456dcd717bce694d7f832a654fcccb\n"
    },
    {
      "commit": "7e64c9503ca37dab2895c31d616a745069d65b31",
      "tree": "e87261964ec2988c73702da2965e68575caa2945",
      "parents": [
        "de7c9e13a45d2f9163991d89a615ead98f2d9f29"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 01 12:41:34 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 08 08:30:37 2021 +0000"
      },
      "message": "Fix ProfileCompilationInfo::UpdateProfileKeys().\n\nCorrectly migrate the annotation.\n\nAlso do some cleanup. Use `std::unique_ptr\u003c\u003e` for `info_`.\nChange the `profile_key_map_` key to `std::string_view`,\nusing the `DexFileData::profile_key` as backing storage.\nMove `ProfileSource` definition to the .cc file. Change the\n`ProfileLoadStatus` to an `enum class` and remove unused\n\"WouldOverwriteData\". Fix an error message.\n\nTest: ProfileCompilationInfoTest.UpdateProfileKeyOkWithAnnotation\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --speed-profile\nBug: 148067697\nChange-Id: I4e157c76b52e9c9c15f3ba34816f6b606ac4529c\n"
    },
    {
      "commit": "26095cda197448071fbbc6af126363de1b4e8b4c",
      "tree": "373baf81b785abbf4654615ff61d3539de170174",
      "parents": [
        "66ab9d6fb28398d7f59a3102ad322aaf06a5c5c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 30 15:46:27 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 31 08:28:27 2021 +0000"
      },
      "message": "Small cleanup in ProfileCompilationInfo.\n\nMove DeflateBuffer/InflateBuffer to an anonymous namespace\nand improve error checking.\n\nMove SafeBuffer definition to the .cc file and make member\nfunctions inline. Add DCHECK()s and change some comparisons\nto eliminate potential arithmetic overflow errors.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I9ca0e8d5c5d8e1393151c48f690cba02f34d4e61\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": "c2f46939d8c046dfc8e954ac1bec6d61b0f061ae",
      "tree": "88c88aceadc868f286ef62185fff00fa343d1ffe",
      "parents": [
        "62b75587021d432d1522316822e7cafe0beada43"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 05 10:55:55 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 08 09:11:01 2021 +0000"
      },
      "message": "Reduce string allocations in ProfileCompilationInfo.\n\nUse std::string_view internally to avoid std::string\nallocations but keep external ProfileCompilationInfo API\nunchanged with std::string to avoid object lifetime issues,\nwith the exception of `OfflineProfileMethodInfo` provided\nto the compiler for AOT compilation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: boots.\nBug: 181943478\nChange-Id: If75c3ce16581760773bdaa3e94334c9c567745de\n"
    },
    {
      "commit": "d83edf3d155c49a578851da4f0407affa03b2325",
      "tree": "65c532d8343d369007c2b2be380d370fe0182f54",
      "parents": [
        "74584e6b65b6d5949afa9de664b05f453d42872b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 22 15:07:18 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 22 15:10:02 2021 -0800"
      },
      "message": "Correctly match dex-file names in profman\n\nIn profman we were incorrectly matching dex-file names in cases where\nthe profile file had annotations. This error prevented profiles with\nannotations from being dumped correctly since cross-dex-file\nreferences (such as inline-caches) would not be resolvable.\n\nTest: ./test.py --host\nBug: 168941430\nChange-Id: Ic1e60d73bcca9043408b7d0eff0ac4f8cb97ad22\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": "642c0f0e79ce35f11e0af5625618cb126ad40ffa",
      "tree": "ab3d8bed69028b4cc3552bb8488f67c3f30f3cf0",
      "parents": [
        "9ca1e1035941efd680164af419b796aacc90106b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 10 10:35:44 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 19 20:32:08 2021 +0000"
      },
      "message": "Collect boot-profile inline-caches\n\nEnable collection of boot-profile inline caches for possible future\nuse.\n\nThis doesn\u0027t update the text-profile input format.\n\nAdds a test that merging inline-caches works correctly.\n\nTest: Boot blueline with boot-profile collection enabled\n      Use device\nBug: 168941430\n\nChange-Id: I66a209f64e7086c90123126af43e3994874f5112\n"
    },
    {
      "commit": "2d53643ca0e05e7c67894aa75eba899acbb9f287",
      "tree": "39299475c04303312f527bc00355bd9fd7a3fad8",
      "parents": [
        "cefebc86af30522bf79d2a89a2bcf96f7f970ecb"
      ],
      "author": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Wed Jul 22 14:33:00 2020 -0700"
      },
      "committer": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Fri Jul 24 00:41:56 2020 +0000"
      },
      "message": "Update language to comply with Android’s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for\nreference\n\nBug: 161896447\nBug: 161850439\nBug: 161336379\nTest: m -j checkbuild cts docs tests\nChange-Id: I32d869c274a5d9a3dac63221e25874fe685d38c4\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": "c03de4140446d4f57b8778a1faff2835bf56c3f8",
      "tree": "b495d92c4da50de3a35c00c53edb2fc55029e8dc",
      "parents": [
        "396198b6bd6635fff52091131ca5be94cfab1d74"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 06 17:04:54 2020 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Jun 18 16:47:30 2020 +0000"
      },
      "message": "Add logic to flatten profile info\n\nThe flattening operation will extract all methods and classes from a\nset of dex files in a list.\n\nThis is a pre-step for adding boot image profile generation option in\nprofman.\n\nTest: gtest\nBug: 152574358\nMerged-In: I35249d719bafc4550016c48a53503e86258874a1\nChange-Id: I35249d719bafc4550016c48a53503e86258874a1\n"
    },
    {
      "commit": "250a6e70fdf278f4881da36653c147503bb13ade",
      "tree": "f3c83d639fa468b68594012f3daa659fa2956c68",
      "parents": [
        "67e4a4db302b69fe6e2242aef56f5512bfa8cb34"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 13 17:53:30 2020 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 14 15:45:00 2020 +0000"
      },
      "message": "Revert \"Temporarily disable AddMoreDexFileThanLimitBoot.\"\n\nThis reverts commit 09bc077001af2a071e4afb85fbe6a9bbfa9ed3d1.\n\nReason for revert: Original test fixed.\n\nBug: 149481706\n\nChange-Id: I6f173b351f1a40c268ede4bb77c325cc23ccfd6b\n"
    },
    {
      "commit": "09bc077001af2a071e4afb85fbe6a9bbfa9ed3d1",
      "tree": "3b2983b6ed0dc77639943843905aacd285a3ff26",
      "parents": [
        "2c8123c1480dcd42e31963697264fca7ad6fa154"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 13 09:20:00 2020 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 13 09:20:00 2020 -0800"
      },
      "message": "Temporarily disable AddMoreDexFileThanLimitBoot.\n\nBug: 149481706\n\nTest: Ran the gtests and verified the test doesn\u0027t run.\nChange-Id: I3e9d2c0e37e2b58763a2d89c00dfd358e5f2dbb5\n"
    },
    {
      "commit": "f85a4d0890fd6be2b303a975dab44c74bd475418",
      "tree": "43b7607c71ddb1f1de81a54ab083764cb8ab1bd5",
      "parents": [
        "30a11eb467147003bf87fd3ac8638d8b60f357d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 29 19:35:53 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 30 13:58:23 2020 +0000"
      },
      "message": "Experiment with large boot profile size\n\nSome profiles turn out to be empty, and the main suspect is the size\nrestriction. Allow more data to be saved in the profile to check if the\nsituation improves.\n\nTest: test-art-host\nBug: 139884006\nChange-Id: I9007440765c100298e91e10236e2fedf71a96883\n"
    },
    {
      "commit": "6ef7713cf58629f8c5edce8554a1b60fbfdd1de2",
      "tree": "4c17a77fffa9bef0322de5f5c770daef01b0e49a",
      "parents": [
        "21c5b6a410c567ccbb7e8ea066f1c4ba954f01a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 21 13:52:11 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 21 14:17:48 2020 +0000"
      },
      "message": "Remove dead code related to profile collection.\n\nThis code had been dead since\n    https://android-review.googlesource.com/411660 .\n\nTest: m\nChange-Id: I17440d80971bb14ec062ed8b982b9cdd70383efb\n"
    },
    {
      "commit": "63786f6b200077975829dbf7f0fa69ffd4a342f7",
      "tree": "e3555baecdf3270b4b39d0b6539256d90c80946f",
      "parents": [
        "96491e9db22806d4343ddcbca97083127b728e0a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 18 07:36:35 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 18 17:07:37 2019 +0000"
      },
      "message": "Bump profile version\n\nThere were some changes to the profile format without a version bump.\n\nTest: profile tests\nBug: 139884006\nChange-Id: I4b5c2b1e28ba83b79d98f3fa1b61a2901caf64c4\n"
    },
    {
      "commit": "3e20d0a7748c8810bff9fe99298758930fbe5300",
      "tree": "35e3a5981f2a996b98c1c8798610852c293a2fbb",
      "parents": [
        "8cdcd4fab6ffd88a6814016249ae85b5be67aba7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Nov 12 20:31:33 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Nov 15 17:35:33 2019 +0000"
      },
      "message": "Reduce boot profile data usage\n\n- remove inline caches from boot profiles (they are not used)\n- remove some flags that will not provide much value.\n\nTest: profile tests\nBug: 139884006\nChange-Id: I063ff339e266637c987e05cdb16e18935f6c1e15\n"
    },
    {
      "commit": "8cdcd4fab6ffd88a6814016249ae85b5be67aba7",
      "tree": "b3d75b276363fd355995db80dbda3d397c9d1e57",
      "parents": [
        "4813618470e48290ba92a5944a2896fccd8aa3a4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Nov 12 20:27:49 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Nov 15 17:35:33 2019 +0000"
      },
      "message": "Increase the maximum allowed dex files for boot image profiles\n\nBoot image profiles aggregate data from a lot of apps and could easily\nexceed the previous 255 dex file limit. In general a boot profile may\ncontain number_of_bootclasspath_elems * number_of_apps_on_device dex\nfiles.\n\nTo cope up with this, we increase the max allowed number of dex files to\n2^16. The regular profiles will keep the same low limit (255) to save ram\nand space.\n\nA side effect of this change is that in-memory representation of boot\nprofiles during serialization increases substantially. However, we merge\nboot profiles only during idle-maintenance mode and we can afford a higher\nceiling.\n\nTest: profile test\nBug: 139884006\nChange-Id: Icdfdac8f2e4c2935692beacc8037911b64461eee\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": "0f6bde0ee40de32e404d5c7882fe8c8aa47de0a3",
      "tree": "86ee936d14a432290aa54f1b15e775bf757801be",
      "parents": [
        "83aacb23d88c3df3d7fe655655b715f8229078f9"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 11 18:38:10 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 13 00:33:20 2019 +0000"
      },
      "message": "Adjust profile version when the boot image profiling is switched on\n\nThe current profile version needs to be updated if the boot image\nprofiling was switched on dynamically. Otherwise we will not be able to\nadd new data to the file since we will have a version mismatch.\n\nTest: manual \u0026 profile_compilation_info_test\nBug: 139884006\nChange-Id: I85e9970c5e26d3f2144a644e7052f2b6a433e1db\n"
    },
    {
      "commit": "83aacb23d88c3df3d7fe655655b715f8229078f9",
      "tree": "5b9f3e008868e9454eb1bfe5c74388ebb67a57a1",
      "parents": [
        "0e82e0f089944079f1f664a748abe11fcad73e97"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Nov 11 18:35:02 2019 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Nov 13 00:33:20 2019 +0000"
      },
      "message": "Print profile version when dumping the info\n\nTest: manual\nBug: 139884006\nChange-Id: I0bf8843587e5c548dfbf015e128644735c358a45\n"
    },
    {
      "commit": "6a98c95feba069dcb66dcdb89d138460a01487f3",
      "tree": "b55fe260ce7816fb691a767a5fdae69535438ae1",
      "parents": [
        "86bf2fe254f2e2b3511a9c6293c4cd3a238e465e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 20:21:21 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 02 18:16:12 2019 +0000"
      },
      "message": "Introduce the ability to annotate profile samples\n\nWe can now annotate profiles samples (classes or methods) with additional\nmetadata that will be persisted in the offline representation. Currently\nthe annotations support the package name that contributed the given\nsamples.\n\nWhen samples are annotated, they are grouped into distinct categories\nindexed by (dex_file, sample_annotation). This is achieved by extending\nthe profile key to include a serialized representation of the annotation.\n\nBecause they create independent groups in the profile, the annotations can\npotentially increase the profile size considerably so care should be taken\nwhen adding them in big numbers.\n\nInformation extraction (methods and classes) has also been extended to\nsupport the annotations. Users may choose to extract the info for\na particular group (dex_file, sample_annotation) or, as before, just for a\nsingle dex file. If the metadata is not given (e.g. when using profile\nguided compilation), the default search mechanism kicks in, and the first\ndex file matching the constraint is searched.\n\nBy extending the key representation, we preserve the previous profile\nbehaviour without the need to extended the underlying format or increase\nthe version.\n\nBug: 139884006\nTest: m test-art-host-gtest\n\nChange-Id: Iaccecd05c575bf0dac6dace6257cdafc6dc4a329\n"
    },
    {
      "commit": "954b3adf6b3b4c0efe46ce4e95228fbd386d2c53",
      "tree": "8a0ff686c8bc880897b15a8e72419ad0a06aec6f",
      "parents": [
        "b55ef65e55dd4d01a9bdf315c09c090b73f7c19a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 12:28:54 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 27 01:05:16 2019 +0000"
      },
      "message": "Removed an used method from profile compilation info\n\nBug: 139884006\nTest: m\nChange-Id: I0e9b09e2ba8e201a2034699b9463eed03e5db8c4\n"
    },
    {
      "commit": "07019298f72fda828ab7a48b86babf02f474ae5f",
      "tree": "40eb3f5aba77b85082d10e38b9ccfda740806e49",
      "parents": [
        "621afb45075e2fee1024d34d8c6fc0df828dc4a6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Sep 25 18:25:18 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 18:26:33 2019 +0000"
      },
      "message": "Add method flag bits for 32/64 bit execution in the profile\n\nStore the method bitness in the method flags for the boot image profile.\nThis may help create different profiles for 32 and 64 bits.\n\nBug: 139884006\nTest: m test-art-host-gte\nChange-Id: I5227711d72f63a91c3044fb6356365f785057143\n"
    },
    {
      "commit": "f84ef3192bcc167c627e8e13a48b112f017821c2",
      "tree": "12384b891140205768689bde6e3dfd43f734f529",
      "parents": [
        "d0d215acfcdc1cdab12ce7cd1e261f5b5f3aa1bd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 24 19:30:44 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Implement \u003c\u003c operator for ProfileCompilationInfo::DexRefence\n\nIt avoids the need to use inner fields in the inliner.\n\nBug: 139884006\nTest: m test-art-host-gtest\nChange-Id: I3b2276094829a0e431dc145bf1ff13cbfa746742\n"
    },
    {
      "commit": "d0d215acfcdc1cdab12ce7cd1e261f5b5f3aa1bd",
      "tree": "ea58ecbf29bf0676ffd42c1817c0665bffbb81bd",
      "parents": [
        "4f9c6cf8e321226de434d006c94b3e2c2cf129fc"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 24 19:08:30 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Fix documentation and some style issues in the profile\n\nBug: 139884006\nTest: m test-art-host-gtest\nChange-Id: I57a42e6f0503cde12c24fb954be0fc94c4ea2eb1\n"
    },
    {
      "commit": "4f9c6cf8e321226de434d006c94b3e2c2cf129fc",
      "tree": "33edeca2d6ae2f4af897be9bbf89a59fe356950d",
      "parents": [
        "4ad95214341f03d11f06e82fd92ac22b3605586d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 24 17:55:25 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Remove an unused profile method\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: I21cf0de4e5cc806f313003b6200ccddca083d552\n"
    },
    {
      "commit": "4ad95214341f03d11f06e82fd92ac22b3605586d",
      "tree": "3dde60deb636cb33f4c59bb26d9f9b516d908ad0",
      "parents": [
        "45cdd05e32bdff1cea8581bc9ecf8a8cb08d6f5b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 23 23:39:41 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Make explicit which methods retrieve info about *hot* methods\n\nRename some methods to better highlight that they refer to hot methods and not\nto any method (e.g. a non-hot, startup methods).\n\nBug: 139884006\nTest: m test-art-host\n\nChange-Id: Ieb3a36c434104d1cde28ca18a5b335cc8a24e537\n"
    },
    {
      "commit": "45cdd05e32bdff1cea8581bc9ecf8a8cb08d6f5b",
      "tree": "e8a5281625659dc9ac4c96ce03687a75ca58a9d9",
      "parents": [
        "1061c7d2bf7a559abe5a234c680b27b8838862ca"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 23 23:03:18 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Clean up profile AddClass APIs\n\nRemove AddClassIndex APIs which were only used in tests (or test profile generation).\nThis was the last API which exposed the profile key internals.\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: Iea41b85484c7f1ec33eaad75cd18c65adcb7853e\n"
    },
    {
      "commit": "1061c7d2bf7a559abe5a234c680b27b8838862ca",
      "tree": "b9e299414fbdb05f9763a71fe46b9078449eaac6",
      "parents": [
        "8b959958d1df3545957ddbce2be2ea21003a121c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 23 21:00:29 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Clean up profile AddMethod APIs\n\nRestructure the profile assistant test to use the same APIs as profile\nsaver and\nclean up all the other usages for AddMethodIndex and AddMethod.\n\nBug: 139884006\nTest: m test-art-host\n\nChange-Id: Icf76d6aa05f0f9dcc589182196ca34a0298f2cb7\n"
    },
    {
      "commit": "8b959958d1df3545957ddbce2be2ea21003a121c",
      "tree": "bbb4a420a4adeb5f4a49f69d78856055a95c3f49",
      "parents": [
        "7acb8464b04ab196159adbf96358b81de3017fea"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 20 16:32:05 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 26 00:35:55 2019 +0000"
      },
      "message": "Restructure the profile compilation info tests\n\nRestructure the test to manipulate the profile using the same methods as\nthe profile saver (rather than using index based addition).\n\nThis will help with cleaning up the profile interface in preparation for a\nnew format.\n\nTo support the restructuring new classes were added to help create and\nmanage fake dex files which only have the location, checksum and number of\nmethods set.\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: I9bf86b2244c01ffa9422df0fd5ee23a2a7ff8593\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": "38cf1105e340888f075517936679cce1864fd0b4",
      "tree": "c0a439449fede6dae61ca87194f4d6f43c1bceb0",
      "parents": [
        "e58624f221b967553d7b71f14d8677ceaa000553"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 20 17:34:39 2019 -0400"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 24 23:22:12 2019 +0000"
      },
      "message": "Process method flags uniformly in the profile\n\nWe used to have two main ways to add methods in profiles: one which would\nassume methods are hot and another one where we had to specify the method\nflags explicitly. This created some implicit assumptions when adding new\nmethods that made it hard to follow which methods sets what.\n\nThis CL unify the way flags are processed removing any assumptions of flags.\n\nBug: 139884006\nTest: m test-art-host\n\nChange-Id: Ib1dcfdd4a5220507b89e3e0947252cef4fa2eb4c\n"
    },
    {
      "commit": "4ba700af65f8346a96ba8d1dec051358a09487f4",
      "tree": "eaada5d02371099b84a5d0d27f210f635400f7ba",
      "parents": [
        "1550a669adb7e9328879bed24d9edc22eb97c994"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 16 15:45:17 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 20 20:31:49 2019 +0000"
      },
      "message": "Clean up the use of profile_key / dex_locations\n\nThe profile key / dex locations names were sometimes used interchangeably\ndespite not being quite the same. Make clear, through renaming, which one\nis which.\n\nBug: 139884006\nTest: m test-art-host\nChange-Id: I9c79b2f2e577b873ee890333895cc90a7891499e\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": "8d8a98c8cdff564962b49e6b4c297477d5fbfb30",
      "tree": "72823c103454fdb2820c5ced9992e01c57f47364",
      "parents": [
        "01fc470f59ec2721023b458a3a8f64e931c730c5"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 06 14:30:39 2019 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 17 19:21:03 2019 +0000"
      },
      "message": "Add a new boot image profile format\n\nThe new format adds additional method flags which will capture the\nfollowing states:\n  - am start / post startup\n  - boot / post boot\n  - foreground / background\n  - startup classification bin (see code comments)\n\nThe extension is currently only available for boot image profile because\nit expands the profile memory and disk footprint. A stress test shows that\nthe new format requires:\n  - profile content: 10 dex files, 2^16 methods, all in, no inline caches\n    (that\u0027s way more than we should see in practice)\n  - 1.2MB extra ram (3.9MB compared to 2.6MB)\n  - 1.1MB extra disk space (1.5MB compared o 379K)\n\nThe ram scales down with less data (e.g. for 5 dexes the RAM is only 6KB\nmore). The disk space is drastically reduced if the zip algorithm is able\nto compress the data efficiently (e.g in the idea case, when all bits are\nof the same value, it only adds 5K of extra space).\n\nThe threshold for size warnings/errors were adjusted based on the new\nvalues.\n\nBug: 139884006\nTest: m test-art-host-gtest\nChange-Id: I1543309d769c7d263a3e5f06cd8a2cf476999253\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": "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": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\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": "2b41ccaa462f5faa92edde97504b785ddca415f5",
      "tree": "f9308a43745ebd606ec0799663b2c1822078bea4",
      "parents": [
        "90402ad6df38a5d4f268903aee5d7fe56791265f"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 16 22:43:41 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Nov 29 11:22:55 2018 -0800"
      },
      "message": "Extract dex file if it is uncompressed but unaligned\n\nA dex file would normally only be left in the zip file if it was both\nuncompressed and unaligned, but explicitly setting CopyOptions::kNever\nthrough --copy-dex-file\u003dfalse would only check if the dex file was\nuncompressed, not if it was aligned.  Add a required alignment\nargument to ZipEntry::MapDirectlyOrExtract so that the contents\nwill be extracted into memory if they don\u0027t meet the alignment\nrequirement.\n\nBug: 119412419\nTest: m test-art-host-gtest-oat_writer_test\nChange-Id: I4587e22165ee0a951ffca7db9a6f5c0d1ed2e56a\n"
    },
    {
      "commit": "0de385f9eb5f8c066121ea2d43e8b8eea6a726fa",
      "tree": "918bee18727b0a8de4332db161d457c4241939b4",
      "parents": [
        "21ff4ad92e8d74cfe8d95ec64b177d47084ec374"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 11:11:13 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 17 12:17:28 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles libartbase, libdexfile and libprofile.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibeee2446e2978af45402d9ca47c75ffc438de316\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": "81ccda612a525f3b46f1f9bef90c2195059ca617",
      "tree": "830cea9ee6d9f4e8846b33faf16efd795d7baf76",
      "parents": [
        "3659f02632059f3ca9c0fe07cfb783bcdd23f59d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 11:59:12 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 11:59:12 2018 -0700"
      },
      "message": "ART: Refactor test profile generation\n\nEnsure that the right number of classes and methods is selected.\n\nTest: mmma art\nTest: m test-art-host\nChange-Id: I79c364b46d6161b146d114fdfa1fc7ef7f7a9cd0\n"
    },
    {
      "commit": "675e0a545b04a392a0026d7ce9c67222d717f7bc",
      "tree": "48f19fcfb2f41b5d114071fc9c6cc7405aa3db67",
      "parents": [
        "7f00f5a1fa25f9b6414905983e7ac2739f662615"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 17:29:00 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 30 18:26:27 2018 -0700"
      },
      "message": "Fix various not so benign fdsan errors.\n\nBug: http://b/113558485\nTest: art/test.py --target --gtest\nChange-Id: Ic376ec33fff30a239d978e40b0c48966c6d0a9c2\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": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "5774f57afc997ffe765c32199bd0d5e55d23005a",
      "tree": "5efdd0edb9c5a6d55c20f76c26fc7b330f014c87",
      "parents": [
        "7e56bd41cde4e489a11050d9e340bf8b5692d9e8",
        "bc802de2244ed9769d1ddf8841d7965a29493d9a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 21 15:28:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 21 15:28:05 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Fix some performance-X tidy\"\""
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\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": "1fed343e5145846e316d49616f3b94e225f43bf1",
      "tree": "b0cb7b634699deeac88dad4d7da463f0d718c089",
      "parents": [
        "010b10e7ab1b6f5a736bf500acc16d2c7067f8af"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 29 13:19:47 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 29 13:19:47 2018 -0700"
      },
      "message": "Move profile testing to CommonArtTest\n\nFinish the migration of libprofile content by moving test to use\nCommonArtTest.  This required splitting the libart-related portions into\na separate test that was moved closer to the code it tests.\n\nBug: 78459333\nTest: make -j 40 test-art-host\nChange-Id: I134c983b1a5ac81a71ac2b72d8c653eff5df4164\n"
    },
    {
      "commit": "e9987b0831403858d95bdd7a5ef9e56665a9702d",
      "tree": "3950da94b73665a52eb5e2b9c5aecc8c92145f13",
      "parents": [
        "6ec2a1bf1cbecf17546df780dd0ad769042e1874"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 16:26:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 15:16:45 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify tests using ClassLinker::FindClass().\n\nClassLinker::FindClass() returns a non-ObjPtr\u003c\u003e reference\nbut it has a lot of uses, so we shall change the uses in\na few steps. This change deals with several tests.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: Ib75e20e7ebaff01fb607a09f96675f8cf397ae52\n"
    },
    {
      "commit": "d5aeadeac0debd90d0a931c1d41bee6a2d32b209",
      "tree": "2d21d88d082bcd7c4be932a78d108b6fd62c8342",
      "parents": [
        "9926e4615d75cb6c9371e1766a14b0a80089ae18"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 08 18:23:24 2018 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 09 13:08:06 2018 -0700"
      },
      "message": "Clear the profile if we fail to add new methods or classes\n\nWe may fail to add new data in the profile if it contains outdated data\n(e.g. if the dex files we profiled were updated in the meantime). If this\nhappens, clear the profile to ensure we don\u0027t keep around useless data.\n\nTest: m test-art-host, 595-profiling-saving\nBug: 77839992\nBug: 79200824\n\nChange-Id: I238d56ba4eeec96a3464e42f164d0e798f555ec4\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"
    }
  ]
}
