)]}'
{
  "log": [
    {
      "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": "d0b08252a508ad86780e494462cbf005718f1c2b",
      "tree": "287a875ee7b67dad162c67db51b97ba1fb8de6b3",
      "parents": [
        "cdf659e4b282b78f7f497545a7f16fcfa5c89f28",
        "d704f0b4414fc1bd4f0be4ac615386ae9ed8bfd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 30 19:58:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 19:58:56 2017 +0000"
      },
      "message": "Merge \"Profman: Use method_percentage and class_percentage values passed for generating profiles\""
    },
    {
      "commit": "641a473912b3bcaaff2c71070611490b7c547cfc",
      "tree": "67bf5b2eaaeaf19c6cebac29984b49c19f172f9b",
      "parents": [
        "5555dd1df3c7f3aaea548c3b657b9325538e9780"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 24 13:21:35 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 08:59:29 2017 -0700"
      },
      "message": "ART: Fix reference-related warnings\n\nMake some parameters and locals references to avoid unnecessary\ncopies.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: Idfed600c7c5492a80f72f51424253bcbea824a94\n"
    },
    {
      "commit": "3157fc26d96951ff4acfb4feb4597e74a92da2a7",
      "tree": "93c3a03a8eae4fc9f430531f25d8be3d4d8b5af7",
      "parents": [
        "27bd4dd81962b0e59df9318ae8efc83df99ebe0a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 09:43:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 16:06:00 2017 -0700"
      },
      "message": "ART: Move cmdline parser to header library\n\nExpress the cmdline parser as a header library.\n\nTODO: Express the libart dependency correctly.\n\nTest: m\nChange-Id: I9e90029d047ab0d75a455a2361d5213a8fa6f361\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": "f70fe3d0b0b29c955a4f7310beae1cfb926ca5c7",
      "tree": "d69a44ce49c1745c2c2e08680915c7a1ce587693",
      "parents": [
        "7888b59b4542e15dd061047e4cb34f795cc2354c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 21 15:24:02 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 22 11:11:50 2017 -0700"
      },
      "message": "Add dex2oat support for profile based image creation\n\nAllow creating a boot image with only a profile without requiring\nany of --compiled-classes, --compiled-methods, or --image-classes.\n\nTo do so, you need to pass --profile-file and\n--compiler-filter\u003dspeed-profile.\n\nAdded a test dex2oat_image_test to verify behavior. This test covers:\n--compiled-classes\n--compiled-methods\n--image-classes\n--profile-file\n\nTest: test-art-host-gtest-dex2oat_image_test\n\nBug: 37966211\n\nChange-Id: I36d41b1c6e6560e6b3494b1df7024a4450ed0c0e\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": "a5dcdf346158d47bfe80d8adb29b1b020cede286",
      "tree": "50e56b3445dc8e4724d6707ffecd23f9dae96e31",
      "parents": [
        "942c597b004aa328cf291a78392b405ef5d5f040",
        "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 20:21:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 15 20:21:24 2017 +0000"
      },
      "message": "Merge \"Refactor some profiling info functions\""
    },
    {
      "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": "a3d27ebd2802fd6031cc928a67752541775bf52b",
      "tree": "96c4a460fbf81fd00b8c71063f5ef9ae3bc56eda",
      "parents": [
        "d38b67c9892b603f57a6b51a1b9d7f4e610158aa"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 11 13:50:59 2017 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Jun 14 10:29:55 2017 +0100"
      },
      "message": "ScopedFlock: Refactor it to be a subclass of FdFile.\n\nMakes callers cleaner, since they only have to worry about\ndealing with regular File objects that they know will be locked\nfor the duration of their existence. Prevents issues and other\nclunky code relating to acquire\n\nTest: scoped_flock_test, test_art_host\nBug: 36369345\n\nChange-Id: I2c9644e448acde6ddac472d88108c7d9a4e1a892\n"
    },
    {
      "commit": "28b5c582070a14979dc8cbcddba136ac334ed52a",
      "tree": "9ae2955e5d1c2ac832c86a8b0e71f0f6226007e8",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 06 14:12:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 06 14:15:42 2017 -0700"
      },
      "message": "Dump startup and post startup methods for --dump-only\n\nThe format is:\nhot methods: ...\nstartup methods: id0, id1, ...\npost startup methods: id0, id1, ...\nclasses:\n\nAlso added test.\n\nTest: mm test-art-host-gtest-profile_assistant_test -j32\nBug: 62040831\n\nChange-Id: I2ffbe17e888d4adae348bb14e0b92c284ce1081c\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": "a559fa1b0d6c276dde2cdc707de1acd4950f7190",
      "tree": "8314a003ff09cee50acd15929c1edbb8a448eef8",
      "parents": [
        "673253e1628ca9483ea121571bb9a96f90a1c944",
        "e6f87cc95e5351f3872a4c50e18915a282578ff8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 25 23:57:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 25 23:57:32 2017 +0000"
      },
      "message": "Merge \"Fix compiler crash due to inline caches and improve docs\""
    },
    {
      "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": "5115efb3369d522ad34b919114de2797bcd81642",
      "tree": "2cba2a6038f13e52f8d416a91ef0021d83c03017",
      "parents": [
        "7dd1e683ea61341323ba8b138684f4c4fbddb3ab"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 24 16:55:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 24 16:55:54 2017 -0700"
      },
      "message": "ART: Fix soong defaults order\n\nDefaults are prepended in order of their appearance. Move debug\ndefaults first.\n\nBug: 31098551\nTest: m test-art-host\nChange-Id: I9a64db34d0e398d336dac080c7234cad77b719ee\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": "cea9e9d26c32372ec8c75e6c89b1bfc08c5e1911",
      "tree": "5132e19736f2afdd2b10f3243297e667b2ab0a21",
      "parents": [
        "f8d00ff206e33ff66fcabcf75d6b5bbe30cddb98"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 23 19:04:59 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 28 16:51:02 2017 -0700"
      },
      "message": "Fix profile merges in profman\n\nprofman used ProfileCompilationInfo::Load() which was not preserving the\ncorrect order of the dex files (in a multidex profile).\n\nThe CL fixes profman to use ProfileCompilationInfo::MergeWith which\nguarantees the right dex order and redesigns profile storage to avoid\nsuch mistakes in the future. Instead of keeping data in a map indexed by\nthe profile key, store it in a vector whose index match profile_index.\nThis way, any iteration over profile info becomes deterministic with\nrespect to the profile index of the dex files.\n\nTest: m test-art-host-gtest-profile_assistant_test\n      m test-art-host-gtest-profile_compilation_info_test\n      profile YouTube.apk and compile it based on the reference profile\n(failing before)\n\nBug: 36371709\nChange-Id: Ideda1336e5aff59a7c5560429da645fe02c804c9\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": "97c381e3ce34cd327c2ec35fa850bd0eaa9b697f",
      "tree": "4a21b2db89c578cdb2908547547e0546748eec7f",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:09:58 2017 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 01 15:51:42 2017 -0800"
      },
      "message": "Separate art::Exec from utils\n\nThe rest of utils.cc does not depend on art::Runtime. This separates\nthe part dependent on that class, so that including utils.cc in the\nbuild does not require the entire Runtime. Another preparatory cleanup\nto getting tools to build on Windows.\n\nBug: 22322814\nTest: test-art\nChange-Id: I194ff363fc2ab87e5311ecea6973a2d0fad2621d\n"
    },
    {
      "commit": "33083d626dbf2c8b06badfd73f50e98114483059",
      "tree": "f6f5db21855a6182b591b57e6a34e5c1fc41b7d0",
      "parents": [
        "fd5f52b60cfa217fb0c4d7dcabdd0336b55990d7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 18 15:29:12 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jan 18 19:00:21 2017 -0800"
      },
      "message": "Rename offline_profiling_info to profile_compilation_info\n\nThis solves a long standing TODO to align the names of the files and the\nclass.\n\nBug: 32434870\nTest: test-art-host\n\nChange-Id: I2707da8fef8736a7223189d894fc00ff11bfab12\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "71f77265be706cd1d847fc10fcc02f71d454e0bb",
      "tree": "47635451b059efb6b2a1e5633e411248a819b0f1",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Oct 25 13:08:17 2016 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Oct 25 14:30:38 2016 -0700"
      },
      "message": "Add mode bits to open() with O_CREAT.\n\nIf you call open() with O_CREAT, you need to pass a third argument to\nopen; see http://man7.org/linux/man-pages/man2/open.2.html .\n\nWe\u0027re trying to (re-)introduce checks that will turn open calls like\nthese into compile-time errors, but in order to do that, we need to\nclean up all existing instances of this kind of code.\n\nBug: None.\nTest: Still builds. m test-art-host-gtest-profile_assistant_test passes.\nChange-Id: Ia754999a30cfc01c0826c69687b33c09884aea6d\n"
    },
    {
      "commit": "f57589fd40e5b69dad5aff060ccef756507f381a",
      "tree": "62d38e73660d9818b18c4741c6b3cce3306d63d5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 10:09:33 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 13:50:35 2016 -0700"
      },
      "message": "Remove logging dependency on runtime\n\nMoved the abort backtracing function to runtime, forcing callers to\nsupply the aborter at InitLogging.  This makes runtime properly layer\non top of logging by removing the cyclic dependency.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I8b2e72174e937bb88fe1bddd6d04b564cfb011a9\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "733ddb2af025aca54582fef95fb714e0df422c78",
      "tree": "e728e115a21e395b8d1d68f95f2552897e85e1f5",
      "parents": [
        "c4cb3d532db8a500c1a15e8a0052895960259209"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Sep 19 15:02:18 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 21 08:15:26 2016 -0700"
      },
      "message": "Refactor Dex open methods\n\nConsolidate dex opening around a simpler single interface in DexFile.\nMaking this change prior to moving all but the simplest interface out of\ndex_file.{cc,h}.\n\nBug: 22322814\nChange-Id: I4c55019912a19a1c90f9022c20f5b8b954fc7a47\nTest: test-art-{host,target}\n"
    },
    {
      "commit": "afd3c9ea7f238afebd5073c1143d3c832ab10a71",
      "tree": "ea95e66ac119b6f86f637ebbeba22e956d3a4c4e",
      "parents": [
        "be3a3ee02f148345ba6e1a0361532a3f7e8c0002"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 16 13:47:21 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 19 10:10:42 2016 -0700"
      },
      "message": "Convert art runtests to Android.bp\n\nBuild the art runtest libraries with Android.bp.  The host test\nlibraries move from out/host/linux-x86/lib[64] to\nout/host/linux-x86/nativetest[64], and the device test libraires from\n/data/artest/${TARGET_ARCH} to /data/nativetest[64]/art/${TARGET_ARCH},\nwhich requires adding nativetest to the library search path, and fixing\nsome tests to support multiple entries in library search paths.\n\nTest: m -j test-art-host\nTest: m -j test-art-target\nChange-Id: I2118a3292f22f275954ddd7cdd4e12287fe47808\n"
    },
    {
      "commit": "6e95dd56e43b3a29fb8360bd94e31cd2eaab1d3d",
      "tree": "c536c5588f8a96f4559ca00921c7852a82558ea5",
      "parents": [
        "6b22aa5106e60545119b9eeaceaa9f87ee597305"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 12 15:37:10 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 15 12:27:06 2016 -0700"
      },
      "message": "Convert art gtests to Android.bp\n\nThis splits the compilation and running of the art gtests into two\nseparate locations.  The tests are now compiled in multiple Android.bp\nmodules in each directory.  art.go collects the installed locations of\neach test and exports it as make variables.  art/build/Android.gtest.mk\nconverts the list into the rules to run the tests.\n\nThis has a few changes in behavior:\n  - The rules to build tests are now always defined, and will build as\n    part of mmma art or make checkbuild.\n  - Host tests are no longer installed into out/host/linux-x86/bin, they\n    are in out/host/linux-x86/nativetest[64]/\u003cmodule name\u003e/\u003ctest name\u003e\n  - Target tests are now in\n    /data/nativetest[64]/art/\u003carch\u003e/\u003cmodule name\u003e/\u003ctest name\u003e\n\nTest: mmma -j art\nTest: m -j test-art-host\nTest: m -j test-art-target\nChange-Id: Iabcd99d43890e6b693688422b07a283c3226a496\n"
    },
    {
      "commit": "c7376e0f8002d7838c3d69569028fbc9b91a38f3",
      "tree": "c325af4f653255d5957cd16463afbe880d5cdb0d",
      "parents": [
        "47b451546d1a5c0fbb5e3816373395762a736515"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 08 12:52:18 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Sep 12 16:29:02 2016 -0700"
      },
      "message": "Convert more of art to Android.bp\n\nConvert dex2oat, imgdiag, patchoat, and profman to Android.bp.\n\nTest: m -j test-art-host\nTest: mmma -j art\nChange-Id: If2acd47189e5a944732c2c00c2bf31265f887161\n"
    },
    {
      "commit": "7bcdb53803d8e276d374fc7bb74d6dd893b39345",
      "tree": "b4cb3757d6d8db36a7c3cdd9f029bf9b97dd1635",
      "parents": [
        "c45885712f70f3d0a328fe3df5550a2ee080cef3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 07 16:14:47 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 28 13:26:30 2016 +0100"
      },
      "message": "Add ability to generate a random test profile\n\nThis is usefull to drive automated profile guided compilations.\n\nTest: added TestProfileGeneration in profile_assistant_test.\n\nbug: 29066961\nChange-Id: Ib7ce7de898abefae1c2cf1b8ff16c4f0fc9b0d0e\n"
    },
    {
      "commit": "37d6a3bbf5826abb73f872ed0bc4c6ae9553e274",
      "tree": "0fbe5fda78e251597f909f654014f2c25efa62e5",
      "parents": [
        "739dc72773c5dee583a1d322f91b5abd61f9889d"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 21 18:30:10 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 22 15:39:07 2016 -0700"
      },
      "message": "Support the -i flag in the new dexdump.\n\nRationale:\nThe old dexdump supported the -i feature (ignore checksum failures).\nThis CL adds the same functionality to the new dexdump. Note that\nthis feature is, for example, useful to inspect DEX files that are\nextracted from images (with quickened instructions), since the\nchecksum is not always valid in those cases.\n\nBUG\u003d29548017\n\nChange-Id: I6017b2f3d789f450560b568297f43c62bf9453b1\n"
    },
    {
      "commit": "546d24f0ba3e3b88ee77f930680f52fb15e25712",
      "tree": "fb03a03376d48598b3d65cb64fe77c5228ccadf1",
      "parents": [
        "6c54dfb86a6cd6f63a9518893562595460b480ad"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jun 02 10:46:19 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jun 07 16:08:47 2016 -0700"
      },
      "message": "Enable profman pretty printing\n\nBug: 28748264\nChange-Id: I4dc366aa710c9ef05aa5d1b164d558232fe57a3d\n(cherry picked from commit 45968e76fffdde6a99a462056a52e91c12f4172a)\n"
    },
    {
      "commit": "4fcdd6d2a85bfaa62f31253450e6fe445b04e4fe",
      "tree": "36d1f3c4bc4badac493114e4f425daa260fac185",
      "parents": [
        "83968f1a0949972e728d2302a26f9ae98dff34b2"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 24 14:52:31 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jun 07 11:05:50 2016 -0700"
      },
      "message": "Initial profman support for verbose dump\n\nBug: 28748264\nChange-Id: Ibc59e7f31afa4646fcf048eececb87437dd83de9\n(cherry picked from commit 07f468f117c4c30a032b7884c08cb1dd2964444e)\n"
    },
    {
      "commit": "ccb33267c86bda2a284128bfedf7c2ed51d1d5e1",
      "tree": "04d7acd23e4db72a9e7a83b843517d8830ef0572",
      "parents": [
        "34494f2c4a5694f39c6de55b48212d8bb90f5877"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 29 14:03:10 2016 +0100"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 17 13:20:44 2016 -0700"
      },
      "message": "Fix debug leftover in profman\n\n(cherry picked from commit 309eb7b11e6250b974c574f256d1c760cafa814e)\n\nBug: 27600652\nChange-Id: I32466623379928cdaad839303e6ea3a39d673cd4\n"
    },
    {
      "commit": "d855718d8e56d7d96e923d4fb5163467cd0e5784",
      "tree": "bc73822079ddfb53c7e82e77daef037d09357128",
      "parents": [
        "266f2d4d51a18a703b2d4fbfedc63eb1baaf3ffb"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri May 06 12:29:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon May 09 16:11:41 2016 -0700"
      },
      "message": "Remove a common subexpression from profman output\n\nChange-Id: I12fa4a36f4e9d980a720bb52c6b736ffc91a6700\n(cherry picked from commit 727074b62ef86dfb631a99214e6726d7d9c6c6be)\n"
    },
    {
      "commit": "ed79301cdc402d9e72a71e6f0bb20efcd5034943",
      "tree": "ec885b58225dd42c3982ff5e9411fb0ceec129f8",
      "parents": [
        "043f83226ea0cd5a2840e805249e92a75380de10"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 05 13:39:43 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 05 17:36:29 2016 -0700"
      },
      "message": "Add braces per the coding convention\n\nBug: 28599906\nChange-Id: Ie2cb4f6865b7756ceaf65c400a4090fc9423232a\n(cherry picked from commit 64b0f0bf5b03fc53282f61c1d2d2dc6b8c7e7a3e)\n"
    },
    {
      "commit": "52683cf2cae259eef5568cb27ed43cdc17bbab56",
      "tree": "0e154d416b4ab0d452a97cb19811d019d16c8893",
      "parents": [
        "b652da7aae5515c58c776a6975305d895f81ac19"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 05 09:02:38 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 05 13:17:52 2016 -0700"
      },
      "message": "Limit profman log spam with time threshold\n\nBug: 28599906\nChange-Id: Ibe1001da94c7916761c8f3b4b5dbacd8cf3809a7\n(cherry picked from commit 305ed710a8ea732e59bdc782121dea3389adc357)\n"
    },
    {
      "commit": "c824b51331bdd72c1c45ca4e45a0b025d30a09c9",
      "tree": "5077addabcb908ac33a978a2a107d2f4d2253605",
      "parents": [
        "900d7d44633675621e665536742a7a2b40dcc7f0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 29 20:33:33 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 25 13:21:49 2016 +0100"
      },
      "message": "Take into account the change in classes when analysing profiles\n\nBug: 27894914\n\n(cherry picked from commit e02348caea14a203a2ed7a6c859e1515c6c6778f)\n\nChange-Id: I02834424803a9368374f32507e0b637fbfa5d7a6\n"
    },
    {
      "commit": "876f3503119fa6ea21b85990b7f8b5f5abcdd1b0",
      "tree": "945f21763f049028cf69d370cc8d5bb30b21a028",
      "parents": [
        "64142952e360bc933b0ec948860ae46dffc3bf32"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 24 16:16:34 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:11:47 2016 +0100"
      },
      "message": "Extend profman to be able to dump profile content.\n\nWith the move to binary format it gets harder to debug profiles. This\nadds a simple dumping mechanism to make profiles human readable.\n\nBug: 27600652\n\n(cherry picked from commit 54196728c25421e72d0009cac4c3145a0da18a58)\n\nChange-Id: I73148fe9e24f30089e9f0fb383e9f6f6c61a46e5\n"
    },
    {
      "commit": "6726546bf3fd6bdb96a34197119d210bccda7e01",
      "tree": "a3ef34066efd223c91dd5281932e3dbe88274385",
      "parents": [
        "b9c1b9bdd7689c0e80c64c371581f99e53749e05"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 18 16:23:40 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:10:41 2016 +0100"
      },
      "message": "Improve ProfileSaver to cache data and do minimal I/O\n\nThis CLs introducing caching to further optimize the I/O performed by\nthe ProfileSaver. The cache stats are also recorded.\n\nResolved classes are captured and cached after 2 seconds but written\nlater during application lifetime.\n\nMethods are also cached and the write got smarter to avoid\nreading/writing them if it\u0027s not needed.\n\nOn non scientific experiments the size of the cache reaches just a few\nhundreds uint16_t values kept in set, so its impact is minimal.\n\nIn terms of how much data we write. In the same non scientific\nexperiments this reduces the total bytes written by at least 2-3x. In\nthe first few minutes of after the boot gmscore writes ~3KB (down from\n9kb) and quicksearchlauncher writes ~20KB (down from 40KB).\n\nBug: 27600652\n\n(cherry picked from commit 85f7bf3bbfa17d65ff77e3e826b5f7aff45838a9)\n\nChange-Id: I6ecb04ce81b281d1c1538060dbbaeeeb08906775\n"
    },
    {
      "commit": "c5dd319c574f67d11a71f1b60ac6c34bfe93b750",
      "tree": "51de8bdd7a891478e6d22a6f53781d53290c2d20",
      "parents": [
        "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 09 16:38:30 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 26 13:07:39 2016 -0800"
      },
      "message": "Add and use loaded class profiling\n\nClass profiling is a way to keep track of which classes are resolved.\nFrom here the compiler can use this information to generate a smaller\napp image.\n\nTODO: Add tests for profile stuff.\n\nBug: 22858531\n\n(cherry picked from commit 8913fc1a27df8cf3b37fd99e94d87f290591328e)\n\nChange-Id: Ifcd09230cbdc266305bc1247e0d31e7920eb353e\n"
    },
    {
      "commit": "de4fb63be26cd561111cad4574cac5e0c2314d11",
      "tree": "bd13d3f3f6820349ce87b3d248c62d831d4b3e51",
      "parents": [
        "6406b521bed1a1cc465edc6be083ce57ba0f524e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 16:53:30 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 16:53:30 2016 +0000"
      },
      "message": "Fix profman path for the gtest.\n\nChange-Id: Id332c50658b7dc1eb1edf6a58fcbdde4c2887d27\n"
    },
    {
      "commit": "2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "3da74687e42de7d33a8e75df9bd64374e650f75e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "message": "Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\n\nThis reverts commit 3da74687e42de7d33a8e75df9bd64374e650f75e.\n\nChange-Id: Id005096bd8063c6c602744d4476d5eb7e0d34e90\n"
    },
    {
      "commit": "3da74687e42de7d33a8e75df9bd64374e650f75e",
      "tree": "f3bf62678200380dc672647af1da136c562f60b3",
      "parents": [
        "6caefd983a800a063b219f1d3ed71b1416cecd70"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "message": "Revert \"Add profman tool: responsible to process profiles\"\n\nNeeds a profile_assistant_test fix.\n\nBug: 26719109\nBug: 26563023\n\nThis reverts commit 6caefd983a800a063b219f1d3ed71b1416cecd70.\n\nChange-Id: Ibdeb7385737dd7846ed861e0a95f083abb9aa974\n"
    },
    {
      "commit": "6caefd983a800a063b219f1d3ed71b1416cecd70",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "c017318a7c5a9142b1fff9f57eb4105b1d397bbd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 01 12:06:18 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 22 13:55:18 2016 +0000"
      },
      "message": "Add profman tool: responsible to process profiles\n\nThis pulls out profile parsing from dex2oat into a separate tool.\nSome additional refactoring:\n- better return codes\n- dex2oat now accepts only one profile file\n\nThis is the first step towards support secondary dex files and\nextracting profiles out of the code_cache directory.\n\nBug: 26719109\nBug: 26563023\n\n(cherry picked from commit d81c289e58f4ced8ec7674fd377c356669f97227)\n\nChange-Id: I34d408faa318e866e1a23d4d04c369131ee5012b\n"
    }
  ]
}
