)]}'
{
  "log": [
    {
      "commit": "c684f337eae6bd3d77fa44cb568d2bab113e4cee",
      "tree": "21c3e40cc150da71d91aef03f33010813f3a8368",
      "parents": [
        "26037dd60df16d84fbd5c0ee3215b78aa2bcb408"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 19 17:38:06 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 19 17:42:54 2018 +0000"
      },
      "message": "Refactor jit debugger interface and its ELF creation.\n\nMake it possible to store more then one method per entry,\nand ref-count the number of live methods per entry.\n\nTest: m test-art-host-gtest\nChange-Id: I45d69185e85e47fbee88a8d1f549ede9875a3c0a\n"
    },
    {
      "commit": "26037dd60df16d84fbd5c0ee3215b78aa2bcb408",
      "tree": "3e85ae1917dbaed45f74289ecde98b52a4304dbf",
      "parents": [
        "f01528de9486c854b5e4da9994239b17b261084f",
        "259316264d160012d1f429bae01c5e6d444fcd52"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 19 14:24:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 19 14:24:39 2018 +0000"
      },
      "message": "Merge \"Fix the offset of $dexfile debug symbol.\""
    },
    {
      "commit": "cc57c0cb24b1bba67dabf5af1d50ed3d47aab76b",
      "tree": "8774e66915fef413c9941baa57cb23799a7d3792",
      "parents": [
        "c89013cd10cf508cab8f36e8b8925cd0b0464dac"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 18 16:30:22 2018 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 18 16:32:20 2018 -0800"
      },
      "message": "Ignore frame-larger-than for Dex2oatArgumentMap::Parse\n\nBug: http://b/63768402\n\nThis warning is ignored for all other functions in this file.  Applying\nPGO pushes this function over the frame limit as well.\n\nTest: Build with a PGO profile.\n\nChange-Id: I8fac77b55657e83d66975d76ceb47e4d9d07f96d\n"
    },
    {
      "commit": "c89013cd10cf508cab8f36e8b8925cd0b0464dac",
      "tree": "757d1a93851360d5709c39c4ebc1c0ab2cba5a5a",
      "parents": [
        "ad643b01de3f1152badfb12edb8469d40843d1e7"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 18 12:35:40 2018 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 18 16:17:25 2018 -0800"
      },
      "message": "Update PGO configuration\n\nBug: http://b/63768402\n\n- Remove the \u0027enable_profile_use\u0027 property.  This is a no-op change with\nhttps://android-review.googlesource.com/c/591562 - PGO profile use is\nonly enabled if the profile file exists.  We don\u0027t have one yet.\n- Move the profile file location to an art/ subdirectory so it doesn\u0027t\nconflict with profiles for other projects\n\nTest: Build AOSP\nChange-Id: Ifb7cded58a786dc5b1024a4c2c770873fcf4413c\n"
    },
    {
      "commit": "259316264d160012d1f429bae01c5e6d444fcd52",
      "tree": "df9520388df181dc2df51a2ad03982f5ef0db757",
      "parents": [
        "ad643b01de3f1152badfb12edb8469d40843d1e7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 18 22:55:20 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 18 23:25:39 2018 +0000"
      },
      "message": "Fix the offset of $dexfile debug symbol.\n\nThe symbol is currently unused but will be needed soon.\n\nIt is also more convenient if it is marked as STT_FUNC.\n\nTest: testrunner.py --intepreter -t 137 (with other CLs)\nChange-Id: I47bcbb498c47cd662eb85aaeb0363678e54d6471\n"
    },
    {
      "commit": "0e1592341e0ff3eaceb7cdb913a5c30e9fab48a8",
      "tree": "b4db1366307467373594b2367ddbe6bbfbcb237f",
      "parents": [
        "dcbe96b23b8be48d4cce799caf5a9a207b137f06",
        "a7db026ff647eefb589043dbb55bbf28637755e8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 16 19:40:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 19:40:16 2018 +0000"
      },
      "message": "Merge changes I82b9360b,Ifc237ff8\n\n* changes:\n  Add a new runtime option for target SDK version\n  Introduce new build tool: hiddenapi\n"
    },
    {
      "commit": "dcbe96b23b8be48d4cce799caf5a9a207b137f06",
      "tree": "ccc0cffe7bb6ab6287211a625bee2655bd6eef1f",
      "parents": [
        "ec0be6e7018ed686134532101ee8fed0a412857f",
        "7c6f6364026eaef94918ab88a3294c7054409aa3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 19:13:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 16 19:13:44 2018 +0000"
      },
      "message": "Merge \"Abort for combination of compact dex/dexlayout and update_input_vdex\""
    },
    {
      "commit": "7c6f6364026eaef94918ab88a3294c7054409aa3",
      "tree": "a5deaa6962e79e0504b7ce0e2b3efb4cd2c3c1fe",
      "parents": [
        "16d1870b034d10a4015ae0cfb01af901165b1f1e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 14 20:24:38 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 09:22:03 2018 -0800"
      },
      "message": "Abort for combination of compact dex/dexlayout and update_input_vdex\n\nRestore the logic to error out with this combination of incompatible\nflags.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I57a5279662dcf5e31a842cad68e5616f228302bb\n"
    },
    {
      "commit": "2b9c35be35a759ba2032692648f5bbcb1e7e78c8",
      "tree": "4825fdb4a4ecd27922dc9c945b30423534e67010",
      "parents": [
        "6d4c343ee5db18f039aeb3e07ff8d3c1fd37c3a0"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 12 15:44:43 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 15:32:12 2018 +0000"
      },
      "message": "Introduce new build tool: hiddenapi\n\nNew tool `hiddenapi` iterates over all class members inside given\nDEX files and modifies their access flags if their signatures\nappear on one of two lists - greylist and blacklist - provided as\ntext file inputs. These access flags denote to the runtime that\nthe marked methods/fields should be treated as internal APIs with\nrestricted access.\n\nTwo bits of information are encoded in the DEX access flags. These\nare encoded as unsigned LEB128 values in DEX and so as to not\nincrease the size of the DEX, different modifiers were chosen to\ncarry the information under different circumstances.\n\nFirst bit is encoded as the inversion of visibility access flags\n(bits 2:0). At most one of these flags can be set at any given time.\nInverting these bits therefore produces a value where at least two\nbits are set and there is never any loss of information.\n\nSecond bit is encoded differently for each given type of class\nmember as there is no single unused bit such that setting it would\nnot increase the size of the LEB128 encoding.\n - Bit 5 for fields as it carries no other meaning\n - Bit 5 for non-native methods, as `synchronized` can only be set\n   on native methods\n - Bit 9 for native methods, as it carries no meaning and bit 8\n   (native) will make the LEB128 encoding at least two bytes long\n\nThis tool is meant to be applied on boot class path DEX files and\nas such, this encoding is not part of the DEX specification and may\nchange in the future. Access flags returned by ClassDataItemIterator\nare stripped of these hidden flags and thus fully transparent to the\nruntime.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: Ifc237ff8a35a8b470b7fc682a9cb879370d1e6e9\n"
    },
    {
      "commit": "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208",
      "tree": "afa8b2429f6a36e73c70f66dbe7204c2e69f657b",
      "parents": [
        "a6b2a2dddc1379fdca5cc95a86a724b12f16099d",
        "32210b9f8c30e202e275764200315fe26f22f34c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 15 10:36:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 15 10:36:54 2018 +0000"
      },
      "message": "Merge \"Generate debug symbols for interpreted methods.\""
    },
    {
      "commit": "210531f8775c89feb90d430cd5b6026b4cf8ef89",
      "tree": "3c23fffcc0d1d7876f15f64672e0de98b1f051ca",
      "parents": [
        "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 10:15:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Move quickening info logic to its own table\"\"\n\nBug: 71605148\nBug: 63756964\n\nTest: test-art-target on angler\n\nThis reverts commit 6716941120ae9f47ba1b8ef8e79820c4b5640350.\n\nChange-Id: Ic01ea4e8bb2c1de761fab354c5bbe27290538631\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f",
      "tree": "092a24b5bbe671d6a15cfa265f45f7416bb8411a",
      "parents": [
        "b12293f196dffe3df29a17a054565bac1b578a4f",
        "02f6ed6bf01e1d87d8af111359f8553720bf8a92"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Jan 12 18:40:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 12 18:40:02 2018 +0000"
      },
      "message": "Merge changes from topic \"dex2oat-pgo\"\n\n* changes:\n  Setup PGO for dex2oat and related libraries\n  Do not call _exit() for PGO instrumentation\n"
    },
    {
      "commit": "32210b9f8c30e202e275764200315fe26f22f34c",
      "tree": "31480b479f4a935c54926df5041e9dee42d7bc66",
      "parents": [
        "d97a2d17924bc4b19674c6ec7dd494a4dca3d70e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Dec 04 14:39:21 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 12 17:21:15 2018 +0000"
      },
      "message": "Generate debug symbols for interpreted methods.\n\nAdd .symtab symbols for method bytecodes in the dex section\n(only if the full --generate-debug-info is enabled for now).\n\nTest: m test-art-host-gtest\nTest: testrunner.py -b --host --optimizing\n\nChange-Id: Ie90034c921484bc4ff27c5458da78690b629dd0b\n"
    },
    {
      "commit": "02f6ed6bf01e1d87d8af111359f8553720bf8a92",
      "tree": "6b5e88f3c87715eb14a148081ce9793b7cf0825b",
      "parents": [
        "ab89892e3098d4d9ec186c6dd22d903c5835437c"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 04 10:52:42 2018 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Jan 12 08:19:33 2018 -0800"
      },
      "message": "Setup PGO for dex2oat and related libraries\n\nBug: http://b/63768402\n\nSetup PGO for libart-compiler.so, dexlayout.so, and the dex2oat binary.\nThe setup for vixl is done in an accompanying CL.  An instrumented copy\nof dex2oat can be produced for the device using:\n  ANDROID_PGO_INSTRUMENT\u003ddex2oat make\n\nProfiles for the instrumented libraries can be produced by running them\non a representative workload.\n\nCurrently, profile use is disabled (via enable_profile_use: false).\nThis can be turned on once a profile is checked in.\n\nTest: Build with ANDROID_PGO_INSTRUMENT\u003ddex2oat and verify profiles get\ngenerated.\n\nChange-Id: Iea056ebd4a9fe8c805ffc2211394d6e1d726264c\n"
    },
    {
      "commit": "ab89892e3098d4d9ec186c6dd22d903c5835437c",
      "tree": "5cf3ec089d49e0a913cd4d38b111d0c1cfef6896",
      "parents": [
        "b612f9ad3c6a23d9eef1a86a5c29db1ac9374604"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Jan 04 10:37:48 2018 -0800"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Fri Jan 12 08:19:24 2018 -0800"
      },
      "message": "Do not call _exit() for PGO instrumentation\n\nBug: http://b/63768402\n\nFor PGO instrumentation, the profiles are written by an atexit callback.\nExit normally and do not call _exit()  when PGO instrumentation is\nhinted with the ANDROID_PGO_INSTRUMENTATION build flag.\n\nTest: Build and verify that the atexit() callbcak is invoked during PGO\ninstrumentation.\n\nChange-Id: I5024d965627392aee5a04e106946bb47ca48b5d6\n"
    },
    {
      "commit": "6716941120ae9f47ba1b8ef8e79820c4b5640350",
      "tree": "76dd7d32703505d4ab44c0b55a7ecaf3ff66a94e",
      "parents": [
        "7a26f948204377130be7b738d70d7365c86a804b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "message": "Revert \"Move quickening info logic to its own table\"\n\nBug: 71605148\nBug: 63756964\n\nSeems to fail on armv7.\n\nThis reverts commit f5245188d9c61f6b90eb30cca0875fbdcc493b15.\n\nChange-Id: I37786c04a8260ae3ec4a2cd73710126783c3ae7e\n"
    },
    {
      "commit": "7a26f948204377130be7b738d70d7365c86a804b",
      "tree": "dd3ab45b73127fdcbcdca64bbac484bfe2c0a8cd",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 18:23:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 10:58:22 2018 -0800"
      },
      "message": "Move quickening info logic to its own table\n\nAdded a table that is indexed by dex method index. To prevent size\noverhead, there is only one slot for each 16 method indices. This\nmeans there is up to 15 loop iterations to get the quickening info\nfor a method. The quickening infos are now prefixed by a leb\nencoded length. This allows methods that aren\u0027t quickened to only\nhave 1.25 bytes of space overhead.\n\nThe value was picked arbitrarily, there is little advantage to\nincreasing the value since the table only takes 1 byte per 4 method\nindices currently. JIT benchmarks do not regress with the change.\n\nThere is a net space saving from removing 8 bytes from each\nquickening info since most scenarios have more quickened methods than\ncompiled methods.\n\nFor getting quick access to the table, a 4 byte preheader was added\nto each dex in the vdex file\n\nRemoved logic that stored the quickening info in the CodeItem\ndebug_info_offset field.\n\nThe change adds a small quicken table for each method index, this\nmeans that filters that don\u0027t quicken will have a slight increase in\nsize. The worst case scenario is compiling all the methods, this\nresults in 0.3% larger vdex for this case. The change also disables\ndeduping since the quicken infos need to be in dex method index\norder.\n\nFor filters that don\u0027t compile most methods like quicken and\nspeed-profile, there is space savings. For quicken, the vdex is 2%\nsmaller.\n\nBug: 71605148\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I89cb679538811369c36b6ac8c40ea93135f813cd\n"
    },
    {
      "commit": "80ddf27b2f9475a0dfb6919cd63f73f59dc3bc10",
      "tree": "90626e4ff92dee82b849e6f57c0c13bebfb2f71f",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 11 09:41:00 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 11 09:41:00 2018 -0800"
      },
      "message": "ART: Relax failure requirements for dex2oat watchdog test\n\nThe watchdog does not clean up any output. It is theoretically\npossible (though it should be very unlikely) that with the test\nconfiguration the dex2oat run finishes writing the output before\nthe watchdog kills dex2oat.\n\nBug: 63052624\nTest: m test-art-host-gtest-dex2oat_test\nChange-Id: If5fc8936e18af8219f70de6f01c2ae7a993663a3\n"
    },
    {
      "commit": "f4bf58d9b13972117c640ea1d7bfa6e6dfc189ea",
      "tree": "a6bdf10f36796c1924e9dca6bfcf1477269c8073",
      "parents": [
        "d6b7e8c63f8eca25460f56f66dcae15eaa897ff0",
        "ec2cdf4286921131a5f9b3ed12060657ec40f636"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 10 13:57:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 10 13:57:04 2018 +0000"
      },
      "message": "Merge \"Try to mmap vdex file within the address range of the ELF file.\""
    },
    {
      "commit": "02129104406c63177f89f99f2d3ae4009c8f8613",
      "tree": "5ca19b04f91a01aecfa0f78f576af78cecd6c071",
      "parents": [
        "812d4d4091b07c83a340e775325b7f42c8521574"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 11:04:01 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 13:55:01 2018 -0800"
      },
      "message": "Re-enable disabled dex2oat tests for compact dex.\n\nSince compact dex is incompatible with update_input_vdex, explicit\npass down the option to disable.\n\nTest: test-art-host-gtest\n\nBug: 63756964\nBug: 70930171\n\nChange-Id: Ib7b1e79157414677d288d217de3140f51171569c\n"
    },
    {
      "commit": "698ebbca3c54d17c696e87b9e5838df6a5ac9b08",
      "tree": "7887b2cd4662410114f205bbe1896ff094d51407",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 11:00:42 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 09:11:49 2018 -0800"
      },
      "message": "Clean up CodeItemAccessors and Compact/StandardDexFile\n\nChange constructor to use a reference to a dex file.\n\nRemove duplicated logic for GetCodeItemSize.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I69af8b93abdf6bdfa4454e16db8f4e75883bca46\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "70a58af9c733bc14c4573dddd282b3c02ccf4985",
      "tree": "46fe53c06014ec4809f5f4c1dbd1e1c941349619",
      "parents": [
        "9382c0d53f91f3788a5254495917898d8b61fe00",
        "2c64a837e62c2839521c89060b5bb0dcb237ddda"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 17:36:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:36:25 2018 +0000"
      },
      "message": "Merge \"Change ClassStatus to fit into 4 bits.\""
    },
    {
      "commit": "2c64a837e62c2839521c89060b5bb0dcb237ddda",
      "tree": "65475ed2e313ff17354e741bac7e9c85739b8b95",
      "parents": [
        "6cd0005698181e4cef2247b632d396e605d58fa3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 04 11:31:56 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 05 11:27:50 2018 +0000"
      },
      "message": "Change ClassStatus to fit into 4 bits.\n\nIn preparation for extending the type check bit string from\n24 to 28 bits, rewrite ClassStatus to fit into 4 bits. Also\nperform a proper cleanup of the ClassStatus, i.e. change it\nto an enum class, remove the \"Status\" word from enumerator\nnames, replace \"Max\" with \"Last\" in line with other\nenumerations and remove aliases from mirror::Class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 64692057\nBug: 65318848\nChange-Id: Iec1610ba5dac2c527b36c12819f132e1a77f2d45\n"
    },
    {
      "commit": "ec2cdf4286921131a5f9b3ed12060657ec40f636",
      "tree": "32f15162b6b74ed247e75eeb9b9cbe936760eca5",
      "parents": [
        "ee58c02b5959944a2db198a2d58355651ed29d53"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 08 16:21:25 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 04 17:08:50 2018 +0000"
      },
      "message": "Try to mmap vdex file within the address range of the ELF file.\n\nAdd ELF section for the vdex file and mmap it there at runtime.\nThis ensures that the data is at predictable location, which\nis needed to be able to reference it from native debug-info.\n\nThis does not change the amount of memory allocated, or the\nlocation of the data on disk.  However, it does change how\nthe memory is allocated - it replaces two allocations\n(ELF and vdex) by just one (ELF which includes the vdex).\n\nBug: 71579677\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\n\nChange-Id: Ie2abd36c8b6617a527368e71f932998bbe5ad38c\n"
    },
    {
      "commit": "73f21d45a41aaad1a02eecdf3bbdbf78ef599d5e",
      "tree": "88d52c615cd8ec5bd8d2fad44fddeef0911e2458",
      "parents": [
        "d096b3a09f0e7129813fb663fec5b5f131565d71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 14:26:50 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 17:53:21 2018 -0800"
      },
      "message": "Remove CodeItem accessor functions\n\nThese are replaced by the accessor helpers.\n\nBug: 63756964\nTest: test-art-host\nTest: test/testrunner/testrunner.py --host -j30\n\nChange-Id: Ic93d60b68b684eeb5f69be286b4e15b8f8f97542\n"
    },
    {
      "commit": "21f9cb88932fc321427f41256b154dc626233a6f",
      "tree": "15d2f5f9a1d913107a4634bb6edcebd34df6310b",
      "parents": [
        "0f54b0d5322b9227f15e23bdd4109979aa9555eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 08:43:08 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 08:43:08 2017 -0800"
      },
      "message": "ART: Disable watchdog test for non-CC\n\nDisable the watchdog trigger test. It is not clear why CMS does\nnot reliably trigger the watchdog.\n\nBug: 63052624\nTest: m test-art-host\nChange-Id: I4f6de0af4f08317f75069dcaf83702f2d8b5c1c8\n"
    },
    {
      "commit": "0f54b0d5322b9227f15e23bdd4109979aa9555eb",
      "tree": "68dd5cc4d60804205396d25a1431239a39568f13",
      "parents": [
        "1d32a16f93d8bb479523fd237277ecbbff5bf1f4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 08:37:02 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 27 08:37:26 2017 -0800"
      },
      "message": "Revert \"ART: Add barrier to dex2oat watchdog startup\"\n\nThis reverts commit 85baf7a5a681c73825e0e0909d3757906b4e772b.\n\nThe change was ineffective.\n\nBug: 63052624\nTest: m test-art-host\nChange-Id: Id6805e0315feebd2f1afbf41d301074e5518e938\n"
    },
    {
      "commit": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "dfd110e676a6f19f676d85961c48bb5ed280767b",
      "tree": "955b0d43b1492fd582efb6846023b131b9ae46db",
      "parents": [
        "2469ec9b640cbfdcc5f164468e97b1f938f8975a",
        "85baf7a5a681c73825e0e0909d3757906b4e772b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 21 17:25:17 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 21 17:25:17 2017 +0000"
      },
      "message": "Merge \"ART: Add barrier to dex2oat watchdog startup\""
    },
    {
      "commit": "2469ec9b640cbfdcc5f164468e97b1f938f8975a",
      "tree": "71a1baa630beb2b3c0e730b74917b27fa1fe71e0",
      "parents": [
        "8b3479b6b5c69a802fec2c36ddb785f6636d53f7",
        "8d840901650a4ac3c647cc0372e01d9a6eb433a9"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Wed Dec 20 21:28:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 20 21:28:29 2017 +0000"
      },
      "message": "Merge \"Use LogHelper::LogLineLowStack instead of LogMessage::LogLine.\""
    },
    {
      "commit": "8d840901650a4ac3c647cc0372e01d9a6eb433a9",
      "tree": "1a3ee04c31cf29aa4378df2ec84e5199d073e17e",
      "parents": [
        "95e5a352efac9c304bec3022da5cfa6be99a4f54"
      ],
      "author": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Wed Dec 20 08:19:53 2017 -0800"
      },
      "committer": {
        "name": "Tomasz Wasilczyk",
        "email": "twasilczyk@google.com",
        "time": "Wed Dec 20 08:46:39 2017 -0800"
      },
      "message": "Use LogHelper::LogLineLowStack instead of LogMessage::LogLine.\n\nThe LogLine method is being altered to include LOG_TAG.\nInstead of updating the usage here with the new signature, a better match for\nART is selected: LogLineLowStack.\n\nBug: 35361699\nTest: it builds\nChange-Id: Ie6c01d3a25b097af693aa56c2e611f5261976fef\n"
    },
    {
      "commit": "85baf7a5a681c73825e0e0909d3757906b4e772b",
      "tree": "335f9f664bd08b666c5bc01fb18384ecfa39f238",
      "parents": [
        "ffc3be6b4a58c1ed172a5c890f8b8583a416998f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 19 21:57:43 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 19 21:58:45 2017 -0800"
      },
      "message": "ART: Add barrier to dex2oat watchdog startup\n\nEnsure that the watchdog is running before progressing.\n\nBug: 63052624\nTest: m test-art-host\nChange-Id: I4ada6be7e46b5ee10f9f53805fa10efb15d6de1e\n"
    },
    {
      "commit": "ffc3be6b4a58c1ed172a5c890f8b8583a416998f",
      "tree": "9edaf87245989ad6c29a96fefd5042de5cfda383",
      "parents": [
        "a6615945258f003756ce7f344670a2802fad7037",
        "532246e54787d3016882dfcc9e6d210c48a8c6d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 19 23:09:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 19 23:09:58 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Move art-heap-poisoning and art-gtest-ss-gc to test cdex\"\"\""
    },
    {
      "commit": "a6615945258f003756ce7f344670a2802fad7037",
      "tree": "ebeb5b97ff910ec282c4d32104d73a4372979051",
      "parents": [
        "69b2560d6aa74b38cbbd22b8fdabbfb38e814835",
        "e166e67666bf4b23e4ed0a98f5e2bb3cae9cee7d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 19 22:55:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 19 22:55:03 2017 +0000"
      },
      "message": "Merge \"Revert \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\"\""
    },
    {
      "commit": "e166e67666bf4b23e4ed0a98f5e2bb3cae9cee7d",
      "tree": "c76c20d3f409cdc8bee26c03fd5e76356f150653",
      "parents": [
        "ae7e83817e546848ef6b2949dd9065b153e14316"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 19 18:59:29 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 19 18:59:29 2017 +0000"
      },
      "message": "Revert \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\"\n\nThis reverts commit ae7e83817e546848ef6b2949dd9065b153e14316.\n\nReason for revert: Broken wrt/ preopted apps and stripping\n\nBug: 63920015\nBug: 70777774\nChange-Id: I39580684d46fa57bd780d2d8bedd65a47d58cf5e\nTest: m\n"
    },
    {
      "commit": "532246e54787d3016882dfcc9e6d210c48a8c6d9",
      "tree": "dd00ac71906c0efd9db1295ffd718535bc62cc61",
      "parents": [
        "95e5a352efac9c304bec3022da5cfa6be99a4f54"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 16:44:21 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 19 10:59:11 2017 -0800"
      },
      "message": "Revert \"Revert \"Move art-heap-poisoning and art-gtest-ss-gc to test cdex\"\"\n\nTemporarily disabled failing test case.\n\nThis reverts commit 7ff53f880f8b17c576924b3b1c4cba7381335444.\n\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: Iebdb405266c051b59b27eb4ad66371bfe07b1e0a\n"
    },
    {
      "commit": "7861b4bef2354f1ab7a726daa406098ff5855c42",
      "tree": "64d590a5172c8a66bfc759f26cfd074382238244",
      "parents": [
        "0bd8a870819def63054f32257fa2aa06c785cf39",
        "2c4b084bf93ddfea6b60d05ff82c44dab9de9f28"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 21:34:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 15 21:34:50 2017 +0000"
      },
      "message": "Merge \"Fix cdex bugs to enable ART_DEFAULT_COMPACT_DEX_LEVEL\u003dfast tests passing\""
    },
    {
      "commit": "2c4b084bf93ddfea6b60d05ff82c44dab9de9f28",
      "tree": "e1dc28ba175bfa67def5db8b22847b15f87bdb93",
      "parents": [
        "ba3a790338725a37ecd4cb314c4a6147e29aef38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 13 11:49:51 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 08:20:08 2017 -0800"
      },
      "message": "Fix cdex bugs to enable ART_DEFAULT_COMPACT_DEX_LEVEL\u003dfast tests passing\n\nCompute dex checksum for compact dex generation. Handle input vdex\nby not aborting in oat_writer, instead just avoid generating compact\ndex for the input vdex case.\n\nRe-enabled some compact dex tests.\n\nBug: 63756964\nTest: ART_DEFAULT_COMPACT_DEX_LEVEL\u003dfast test-art-host\nChange-Id: Ic9b4e4e59e6cd22b66ee2fc0d32c9b4a15f13497\n"
    },
    {
      "commit": "c8d910399cfd33550c497cc3e1e05b0396903234",
      "tree": "e059185813d4d28e3cfed47d5cc1f844f0188bfc",
      "parents": [
        "192cf6e300316d3fbbead115b1ca50ed3dc2f4b3",
        "ae7e83817e546848ef6b2949dd9065b153e14316"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 15 09:30:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 15 09:30:39 2017 +0000"
      },
      "message": "Merge \"Don\u0027t embed the dex code in the oat file if dex is uncompressed.\""
    },
    {
      "commit": "f4886df5e72fa21eddfc4cc7860f4154929b3380",
      "tree": "897e74d9da4e92faae5c24350fa2f999cbfb2b1e",
      "parents": [
        "7eb4333d0b60a13f9d3126eadef9eb16c399662a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Dec 11 16:06:29 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 14 13:52:07 2017 +0000"
      },
      "message": "Add mini-debug-info generation mode for JIT.\n\nThis excludes everything that is not needed for backtraces and\ncompresses the resulting ELF file (wrapped in another ELF file).\n\nThis approximately halves the size of the debug data for JIT.\nThe vast majority of the data is the overhead of ELF header.\nWe could amortize this by storing more methods per ELF file.\n\nIt also adds NOBITS .text section to all debug ELF files,\nas that seems necessary for gdb to find the symbols.\nOn the other hand, it removes .rodata from debug ELF files.\n\nTest: Manually tested that gdb can use this data to unwind.\nTest: m test-art-host-gtest\nTest: testrunner.py --optimizing --host\nTest: testrunner.py -t 137-cfi\n\nChange-Id: Ic0a2dfa953cb79973a7b2ae99d32018599e61171\n"
    },
    {
      "commit": "ae7e83817e546848ef6b2949dd9065b153e14316",
      "tree": "e46ea86e925c4b2a4237f5ebba0c7ba3d61b0359",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 15:10:28 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 13 22:23:12 2017 +0000"
      },
      "message": "Don\u0027t embed the dex code in the oat file if dex is uncompressed.\n\nTake uncompressed dex code as a signal that the app wants to\nopt into b/63920015.\n\nbug: 63920015\nTest: dex2oat_test, 071-dexfile-clean-map\n\nChange-Id: I878e7bb80fc895a2d9aafe81aa7666b86af1f808\n"
    },
    {
      "commit": "3f74ea478d755453a2fe5789ce155e80be3e7c7f",
      "tree": "d28868a2efebae079e1f26d146acd6503f3de45d",
      "parents": [
        "b67c20cea4deb9b42c196ec834f9fea1921dcb7b",
        "e155f4b858be42a825e8270f65abb0fdcf6cbc9f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 13 09:52:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 13 09:52:12 2017 +0000"
      },
      "message": "Merge \"Decouple virtual memory allocation in ElfBuilder.\""
    },
    {
      "commit": "702f6f276d2b81ae27bce51c2e78b04aa45a5796",
      "tree": "84e1e493074878447cf1fe01ece97b9eff8b5f52",
      "parents": [
        "6f05cca7f37eba9f831c811af044bfe735acb8cd",
        "31f4c9f86522061d682fd0e2c6003043cec496dc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 12 21:37:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 12 21:37:59 2017 +0000"
      },
      "message": "Merge \"Add CodeItemDebugInfoAccessor\""
    },
    {
      "commit": "6f05cca7f37eba9f831c811af044bfe735acb8cd",
      "tree": "f256fa7f77e16c182398ce2a204bcd3b4d933565",
      "parents": [
        "9e73b32fed15d262b0393f114b9602ac7ef88917",
        "a7f6b8151ee8b8c16a11e148fea1c02ca33dc211"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 12 20:56:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 12 20:56:06 2017 +0000"
      },
      "message": "Merge \"Add ART_DEFAULT_COMPACT_DEX_LEVEL\""
    },
    {
      "commit": "666ee3d7c6039c80e75287e311895bd6a9b01e9f",
      "tree": "5e65f39ff7cc83af4be3b691c247d7348052f854",
      "parents": [
        "890111968fbd3f5ae528d97e42984c12a3dd27bd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 18:37:36 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 12 13:48:02 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveType().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nAlso refactor the code to avoid doing the DexCache lookup\ntwice and avoid unnecessary read barriers in the initial\nDexCache lookup (also for Lookup/ResolveField()).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Idea9aa42b6a5bade947e93e330b1abdb9d11b2da\n"
    },
    {
      "commit": "e155f4b858be42a825e8270f65abb0fdcf6cbc9f",
      "tree": "545d99febd61872a7a7c1c8e77e53b104db0ad7a",
      "parents": [
        "bc96fc6e2d8dd02e9b085b1c7ec03c3f01982816"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 06 15:18:38 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 12 11:42:21 2017 +0000"
      },
      "message": "Decouple virtual memory allocation in ElfBuilder.\n\nMulti-boot-image requires knowing the loaded size ahead of time,\nand calculating that size ended up being fairly hacky.\n\nDecouple allocation of virtual memory and allocation of file space,\nso that we have more flexibility when we do those.\n\nTest: The generated boot image is bit-for-bit identical as before.\n\nChange-Id: I012b55a71e7625f2310570f9b91447c9db73578b\n"
    },
    {
      "commit": "31f4c9f86522061d682fd0e2c6003043cec496dc",
      "tree": "fc7192bc634811bdc8176afc4b5e60a049d56ae0",
      "parents": [
        "f23779bc210ecbf448e61d7b18088b6afb46a476"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 08 15:46:11 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 11 19:55:46 2017 -0800"
      },
      "message": "Add CodeItemDebugInfoAccessor\n\nUse it in places where DecodeDebugPositionInfo is called.\n\nMotivation: Abstract away calls to GetDebugInfoOffset.\n\nBug: 63756964\nTest: test-art-host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 --debug\n\nChange-Id: I3ab2eff56c472cc717f49d17fd17eb0b8fde4062\n"
    },
    {
      "commit": "a7f6b8151ee8b8c16a11e148fea1c02ca33dc211",
      "tree": "f82167347158bd46e67cf0980af7131f2c7e5453",
      "parents": [
        "078f96f743805d951cea8f71af768facd17eba78"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 11 13:34:29 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 11 17:54:15 2017 -0800"
      },
      "message": "Add ART_DEFAULT_COMPACT_DEX_LEVEL\n\nIf specified, this option changes the default compact dex level used\nby dex2oat. Defaults to none currently.\n\nBug: 63756964\nTest: ART_DEFAULT_COMPACT_DEX_LEVEL\u003dfast mm test-art-host-gtest and verify it fails for now.\nTest: test/testrunner/testrunner.py --host -j64 and verify it passes\n\nChange-Id: Ib252f432b3545297725656a5cca40d1bb57b0ced\n"
    },
    {
      "commit": "890111968fbd3f5ae528d97e42984c12a3dd27bd",
      "tree": "edb4ed38332a817b7d3037ea260856cec839dca9",
      "parents": [
        "0f13269734be07b5869005952a3cb91b0b34b73d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 13:45:05 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 15:43:45 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveMethod().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I2e47280e7cb8b84595130c4abfb5ece18d7f5c75\n"
    },
    {
      "commit": "0f13269734be07b5869005952a3cb91b0b34b73d",
      "tree": "026115080385984050674455e54721f00cb5df10",
      "parents": [
        "768bd97cede0a6de738936aad738f8bb0099322e",
        "a64b52deb0c792b8a0d47546edb8a2f8a7816c33"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 14:24:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 11 14:24:43 2017 +0000"
      },
      "message": "Merge changes I8c4cec43,I00634b89,I0579db64\n\n* changes:\n  Do not pass DexFile to ClassLinker::Lookup/ResolveString().\n  Do not pass DexFile to ClassLinker::ResolveMethodType().\n  Do not pass DexFile to ClassLinker::ResolveField*().\n"
    },
    {
      "commit": "a64b52deb0c792b8a0d47546edb8a2f8a7816c33",
      "tree": "0f98c035e2da07a17501debc4d1f49281d2f9e41",
      "parents": [
        "af94020190a2153834e30fc962e28c3b63d7ffc2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 16:27:49 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 11:40:35 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveString().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I8c4cec43b31b27de7e4e94374fdd69c6d6ca6c13\n"
    },
    {
      "commit": "e82b60fabed960b36221665f090717695d7a9820",
      "tree": "5d902b18ac62539c4319ed86d1ec4c3032e2e69f",
      "parents": [
        "078f96f743805d951cea8f71af768facd17eba78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Dec 10 21:50:10 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Dec 10 21:50:10 2017 +0000"
      },
      "message": "Update help message dump-timing -\u003e dump-timings.\n\nTest: m\nChange-Id: I14fd14db7cad267cef42abab058de83bf0fcb980\n"
    },
    {
      "commit": "8f1a586fd4ac9796e75b2b18638e39b33ad6e9a2",
      "tree": "f1970c938487dbd9e773619804612ac824b0721c",
      "parents": [
        "2ba3557b6d2ea65956f7a98e6f0fd921f35792a5",
        "170331f0e44a0e07fcfe0b5932517e0500f5cd1f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 19:28:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 19:28:07 2017 +0000"
      },
      "message": "Merge changes I917df597,Ib2ca880e,Ib3733573,I3e3a4672\n\n* changes:\n  ART: Remove base/logging from heap-inl.h\n  ART: Factor out gAborting\n  ART: Move runtime-debug flags to own files\n  ART: Replace base/logging with android-base/logging\n"
    },
    {
      "commit": "f56a1c0abde24065f02705004cdc245f850e064a",
      "tree": "6b5debfcb663f76e6a5bcb3949eec1bce891989e",
      "parents": [
        "f23779bc210ecbf448e61d7b18088b6afb46a476",
        "28e012a4af2d710e5e5f824709ffd6432e4f549f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 17:26:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 17:26:18 2017 +0000"
      },
      "message": "Merge \"Determine HLoadClass/String load kind early.\""
    },
    {
      "commit": "28e012a4af2d710e5e5f824709ffd6432e4f549f",
      "tree": "576ebdbff9d5f9f098cd29d652215b8f67b6b042",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 07 11:22:59 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 15:27:27 2017 +0000"
      },
      "message": "Determine HLoadClass/String load kind early.\n\nThis helps save memory by avoiding the allocation of\nHEnvironment and related objects for AOT references to\nboot image strings and classes (kBootImage* load kinds)\nand also for JIT references (kJitTableAddress).\n\nCompiling aosp_taimen-userdebug boot image, the most memory\nhungry method BatteryStats.dumpLocked() needs\n  - before:\n    Used 55105384 bytes of arena memory...\n    ...\n    UseListNode    10009704\n    Environment      423248\n    EnvVRegs       20676560\n    ...\n  - after:\n    Used 50559176 bytes of arena memory...\n    ...\n    UseListNode     8568936\n    Environment      365680\n    EnvVRegs       17628704\n    ...\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 34053922\nChange-Id: I68e73a438e6ac8e8908e6fccf53bbeea8a64a077\n"
    },
    {
      "commit": "93592f53e35f01b54fbc84a7502b2e055ff6fe45",
      "tree": "b6cb0b5c41ecebc37adde7480282f368255e8c4a",
      "parents": [
        "5449e076f6314fc21592a9e089258647f2750e9b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 08 10:53:27 2017 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 08 11:18:46 2017 +0000"
      },
      "message": "Fix VDEX header when no quickening info\n\nWhen there is no quickening info to be written, the OatWriter logic\nwrongly assumes that padding was written to align the file size to\n32 bits. The file is therefore shorter than the size calculated from\nheader data. This patch fixes that.\n\nAdditionally, it enforces that OatWriter::WriteQuickeningInfo is\nalways called, which was not the case with some of our tests. This\nrequirement was already mentioned in OatWriter comments but not\nadhered to.\n\nTest: m test-art-host-gtest\nBug: 70267762\nChange-Id: If25600761677efba173d7cac02931e71c6260f9d\n"
    },
    {
      "commit": "170331f0e44a0e07fcfe0b5932517e0500f5cd1f",
      "tree": "4bb837aa3b6e19c898df23894beb61957885e985",
      "parents": [
        "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 18:41:03 2017 -0800"
      },
      "message": "ART: Remove base/logging from heap-inl.h\n\nHide the single uncommon VLOG and remove the include. Fix up\ntransitive includes.\n\nTest: m\nChange-Id: I917df597cb62c57040c1fb0e0079df4d95e5a658\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "d504c7ea1e63b157a8b3b9333fe832ae7e77caee",
      "tree": "bd3d224a372239268e1a2c25b522a3adfc4bcbd3",
      "parents": [
        "e24847c2222b41c140adeda9e7dd16adac414131"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 04 15:56:51 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 04 16:53:39 2017 +0000"
      },
      "message": "Change enums in ImageWriter to `enum class`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I0f6687f6b99b78a2a56064ed96cba4e238bc01cd\n"
    },
    {
      "commit": "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "299c1e168bde2039586d2486e52c73abbcec93b1",
        "2d8801f7b932496d5c2606294ff8fdea60e05b30"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 29 10:18:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 29 10:18:30 2017 +0000"
      },
      "message": "Merge \"Clean some dex2oat options.\""
    },
    {
      "commit": "2d8801f7b932496d5c2606294ff8fdea60e05b30",
      "tree": "8f87764977fb77e3f74c97d5165f36220de42632",
      "parents": [
        "986005c955860a69d788f7ff7d7f28964eb684ad"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 28 15:50:07 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 28 15:55:44 2017 +0000"
      },
      "message": "Clean some dex2oat options.\n\nRemove dump-passes inherited from Quick days,\nand move dump-timings and dump-stats to CompilerStats.\n\nTest: test.py\nChange-Id: Ie79be858a141e59dc0b2a87d8cb5a5248a5bc7af\n"
    },
    {
      "commit": "b656fcbc280359872a129446be54a6c3563010b1",
      "tree": "f144f7f4140cf8cd4da93168a95ea9b856129ae9",
      "parents": [
        "986005c955860a69d788f7ff7d7f28964eb684ad",
        "6f73f4aa8ebb388bf82141e0273dc76fbbc18896"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 27 09:42:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 27 09:42:40 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Try to be consistent when setting fields of OatWriter::OatDexFile.\"\"\""
    },
    {
      "commit": "6f73f4aa8ebb388bf82141e0273dc76fbbc18896",
      "tree": "1de16bdad79e41cddbf62c19f23d6b5698003a71",
      "parents": [
        "cf35bb5b2a25764800c1edf61c91ea4d0cd5c718"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 23 12:51:47 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 24 16:04:21 2017 +0000"
      },
      "message": "Revert \"Revert \"Try to be consistent when setting fields of OatWriter::OatDexFile.\"\"\n\nThis reverts commit 715d672e22953eb4d4a10b1b51a5584ee9b0e94e.\n\nThe bug in the initial CL was forgetting to set the\nchecksum in AddDexFileSource.\nI\u0027ve added a test in oat_writer_test to prevent this problem.\n\nTest: oat_writer_test.cc\n\nChange-Id: Ic9f4a723be32ee1ad00068f230763e587d56aa2f\n"
    },
    {
      "commit": "b4c6acbf281c1cf960444e35bcac254a1f77c3ed",
      "tree": "18f3548e69c0641e220a36012d23b08a4954d0e4",
      "parents": [
        "67ab1c5517c7f6ac485f218c903db8da59f40ed7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 10 12:48:14 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 23 16:16:34 2017 +0000"
      },
      "message": "Optimize lookup of quickening data.\n\nUse the debug_info_off_ of CodeItem to store the quickening\noffset in the vdex.\n\nImpact:\n- Code size almost unchanged (1 word saved per dex file in a vdex)\n- GetQuickenedInfoOf doesn\u0027t show up in simpleperf during app startup\n\nTest: test.py, run-libcore-tests, run-jdwp-tests\nTest: 628-vdex\nChange-Id: I15c3151feb58980a4c4d7469ca02728e94d36c07\n"
    },
    {
      "commit": "f3c52b42a035902245d00a619fed0275afb063d2",
      "tree": "c46dab07826be55e9ca92ab301eed586c2f307ca",
      "parents": [
        "b360bff818ad0bf59668cd2bebaaeeaa8a3b5dfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 17 17:32:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 21 17:09:44 2017 +0000"
      },
      "message": "Fill Class and String .bss slots in runtime.\n\nShift the responsibility for filling Class and String .bss\nslots from compiled code to runtime. This reduces the size\nof the compiled code.\n\nMake oatdump list .bss slot mappings (ArtMethod, Class and\nString) for each dex file.\n\naosp_taimen-userdebug boot image size:\n  - before:\n    arm boot*.oat: 36534524\n    arm64 boot*.oat: 42723256\n  - after:\n    arm boot*.oat: 36431448 (-101KiB, -0.3%)\n    arm64 boot*.oat: 42645016 (-76KiB, -0.2%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nTest: m dump-oat, manually inspect output.\nBug: 65737953\nChange-Id: I1330d070307410107e12c309d4c7f8121baba83c\n"
    },
    {
      "commit": "4e0ccc92ec837bae28137c680aadb13488983173",
      "tree": "59b9c0d03533421a92b11ac604b116b22170ff08",
      "parents": [
        "8cceb1faf894c26b89ceacd3d60599fe0b4b93b7",
        "3e0c5170c87b39c88c7f3b5fbd7b07e60547bfd7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 23:45:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 20 23:45:15 2017 +0000"
      },
      "message": "Merge \"Add logic for calculating offsets during writing\""
    },
    {
      "commit": "dd257c6ac2ab013e2d01515d9dd6edabd73be703",
      "tree": "93ba5786db1d8ddee23842fc07a73502c446ddf8",
      "parents": [
        "cb90e3a29041ea55c4b5eb3d1477aa360381a1f1",
        "715d672e22953eb4d4a10b1b51a5584ee9b0e94e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 22:29:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 20 22:29:06 2017 +0000"
      },
      "message": "Merge \"Revert \"Try to be consistent when setting fields of OatWriter::OatDexFile.\"\""
    },
    {
      "commit": "715d672e22953eb4d4a10b1b51a5584ee9b0e94e",
      "tree": "87f10df3e3f24db0a625b10f3f53de5833c97e93",
      "parents": [
        "97a042ec6e57025bbc47b480a7753fbf2307b5b8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 22:28:46 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 22:28:46 2017 +0000"
      },
      "message": "Revert \"Try to be consistent when setting fields of OatWriter::OatDexFile.\"\n\nFailures seen on go/lem.\n\nThis reverts commit 97a042ec6e57025bbc47b480a7753fbf2307b5b8.\n\nChange-Id: I17352f6a0956d6ab95bffdfd2aa5286334cc1206\n"
    },
    {
      "commit": "3e0c5170c87b39c88c7f3b5fbd7b07e60547bfd7",
      "tree": "cbb52ff88b9a643d0a08a2c890a15f3442db13d5",
      "parents": [
        "cb90e3a29041ea55c4b5eb3d1477aa360381a1f1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Nov 12 12:58:40 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 13:34:53 2017 -0800"
      },
      "message": "Add logic for calculating offsets during writing\n\nDelete all the offset related layout logic, move the logic to\nwriting. Layout is now controlled by changing the order of the data\nvectors.\n\nCalculate all offsets during writing instead of reading. This allows\nmore flexible layout optimizations without needing to be as careful\nabout offsets in other sections changing.\n\nMaintained logic for using existing offsets in the case where\nchanging the layout is not required.\n\nAreas to improve:\nHow to size the memmap, do we want 2 passes? Currently the algorithm\nreserves 10% extra space in case required. This is sufficient for top\n1000 apps in the play store. Will consider a two pass approach later.\n\nBug: 63756964\nBug: 68948395\nBug: 68867570\nBug: 68864106\nBug: 68864168\n\nTest: test/testrunner/testrunner.py --host -j40\nTest: test-art-host-gtest\nTest: Dexlayout speed profile top 1000 apps\n\nChange-Id: I7dee869da3a010559547f8cfdf93e9aa4c3f47ff\n"
    },
    {
      "commit": "02f41015a0933f146b886c62bb5b02c322ddf882",
      "tree": "2ff0638b263bd0430b21cb01f96d4eab24f4910a",
      "parents": [
        "06546df504a1d5fff436124fb977f207f6e4eed1",
        "97a042ec6e57025bbc47b480a7753fbf2307b5b8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 12:41:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 20 12:41:20 2017 +0000"
      },
      "message": "Merge \"Try to be consistent when setting fields of OatWriter::OatDexFile.\""
    },
    {
      "commit": "97a042ec6e57025bbc47b480a7753fbf2307b5b8",
      "tree": "2d29dc3facf729228b20920a518d13fa510f9619",
      "parents": [
        "e999445d2b7cfeb4a0ebf7f80f6907bc8898ec42"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 16 10:49:59 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 17 13:48:09 2017 +0000"
      },
      "message": "Try to be consistent when setting fields of OatWriter::OatDexFile.\n\nAlso add a few comments.\n\nTest: test.py\nChange-Id: I9f808e4c62f7cc3585a84cc0df5eecb5144f2d0e\n"
    },
    {
      "commit": "5573c37e795668eca81a8488078f798d977685c3",
      "tree": "5e7675d6c1ca9ed1c31834e52282bfb9f73dc2a4",
      "parents": [
        "1598a77ca3559c8a59902f26ee887504b8159859"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 16 13:34:30 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 16 14:42:49 2017 -0800"
      },
      "message": "cpplint: Remove many unnecessary NOLINT\n\nNow that we updated to upstream cpplint, a lot of these NOLINTs are no\nlonger necessary.\n\nBug: 68951293\nChange-Id: If8ed5ffe89727f313f907a214b6d8fd2a2eddbad\n"
    },
    {
      "commit": "92f7f3ce3b01f7c7df1c15b81c900e087248093f",
      "tree": "37647ac824e450f80d752539cabbe631ba795c75",
      "parents": [
        "5dcb0d2cabe9d67987a6a7477fb124cef92abefb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 11:38:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 15 14:29:52 2017 +0000"
      },
      "message": "Use intrinsic codegen for compiling intrinsic methods.\n\nWhen compiling an intrinsic method, generate a graph that\ninvokes the same method and try to compile it. If the call\nis actually intrinsified (or simplified to other HIR) and\nyields a leaf method, use the result of this compilation\nattempt, otherwise compile the actual code or JNI stub.\n\nNote that CodeGenerator::CreateThrowingSlowPathLocations()\nactually marks the locations as kNoCall if the throw is not\nin a catch block, thus considering some throwing methods\n(for example, String.charAt()) as leaf methods.\n\nWe would ideally want to use the intrinsic codegen for all\nintrinsics that do not generate a slow-path call to the\ndefault implementation. Relying on the leaf method is\nsuboptimal as we\u0027re missing out on methods that do other\ntypes of calls, for example runtime calls. This shall be\nfixed in a subsequent CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 67717501\nChange-Id: I640fda7c22d4ff494b5ff77ebec3b7f5f75af652\n"
    },
    {
      "commit": "5dcb0d2cabe9d67987a6a7477fb124cef92abefb",
      "tree": "c7143ec12b914cfb3ca7aa34d733a12cd0b192d3",
      "parents": [
        "1121e0a658be73c5bc494df99ceb84513a65c8a8",
        "b0b68cfc0d2444e2333adcc5a6bc6f670b89fe83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 15 10:09:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 15 10:09:38 2017 +0000"
      },
      "message": "Merge \"ART: Clean up #includes in jit_code_cache.h .\""
    },
    {
      "commit": "b0b68cfc0d2444e2333adcc5a6bc6f670b89fe83",
      "tree": "2cd71b6d221470f3c26fd089e68c6349009bdd80",
      "parents": [
        "f4580f43bcb74061ba8b7847ec65f2fe160f1751"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 14 18:11:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 14 18:29:20 2017 +0000"
      },
      "message": "ART: Clean up #includes in jit_code_cache.h .\n\nAnd fix code that relied on those indirect #includes.\n\nAlso remove forward declaration of art::LinkerPatch because\nwe actually use art::linker::LinkerPatch.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 65574695\nChange-Id: I102affed9a3eacbd21b79c370fbc72b5fc762c96\n"
    },
    {
      "commit": "8eaa8e59c95aac26cc072cdbaaccd8f3976f113d",
      "tree": "613ebe58b921780913a417f09b0f2a0f686c89d8",
      "parents": [
        "5552e535951f2feb10bfd492b8abb54bd41a9f4b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 13 17:47:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 14 09:48:17 2017 +0000"
      },
      "message": "Remove kIsVdexEnabled.\n\nIt is now always assumed there is one.\n\nTest: test.py\nChange-Id: I8f3f5c722fb8c4a0f9ad8ea685d1a956bd0ac9ae\n"
    },
    {
      "commit": "b7c273cb44fcbdab3c17ec69124fe4bbea2696b1",
      "tree": "11242e0bd24427183dd630780825214737ccbda1",
      "parents": [
        "27f5fefeb4a7e87e9537fbdd0ed392d5c1de59df"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 18:07:56 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 10 18:07:56 2017 -0800"
      },
      "message": "Add ClassDataItemIterator::HasNextMethod\n\nReturns true if there are either static of virtual methods remaining,\nchanged most places to use this where possible.\n\nSlight behavioral change for duplicate method checking, we not\npersist the method index across the static method / virtual method\nboundary.\n\nMotivation: Generic cleanup to remove copy paste.\n\nTest: test-art-host\nChange-Id: I7a1b507e681b2c40452f8a9913b53a96b181e171\n"
    },
    {
      "commit": "69147f165efaa9da152bb37da3a16dd5d8c6cf3c",
      "tree": "25dbec549b8c06cf24729a577c76ef0b6d3d4c7f",
      "parents": [
        "2202d56061941b4fecbdb018d84bcefb05b6c683"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 20:02:24 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 09 19:06:10 2017 -0800"
      },
      "message": "Add code item accessor helper classes\n\nAdd classes to abstract accesses to code item data. These classes\nhandle both standard dex and compact dex.\n\nAdded:\n- CodeItemInstructionsAccessor to handle code item instructions.\n- CodeItemDataAccessor to handle code item data excluding debug info.\n\nMoved inline_method_analyzer to use the new classes to test the new\nAPIs.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I9926acb77b81fa64ed4a3b49b7bed1aab30a0f33\n"
    },
    {
      "commit": "bda66c79fa705a0f74d2233fb75bdde4d8dc5e5f",
      "tree": "f715660e6b0ff00bce89510aa84664493e6547ea",
      "parents": [
        "b2269c1657c78bdeb23e5dd72708d6c0e216b89b",
        "2ffb703bf431d74326c88266b4ddaf225eb3c6ad"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 09 01:31:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 09 01:31:19 2017 +0000"
      },
      "message": "Merge \"cpplint: Cleanup errors\""
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "commit": "5d16562752885f93b38d6aa00e01ff930f165849",
      "tree": "32f342e502506591b901734d34cfbe6de293472c",
      "parents": [
        "3b3ecdf4fd2b2d82d2e41fc8c5b2d1ffaf18e712",
        "0021feb36ca7021e2c255e6eaf16b967180290c6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 08 22:36:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 08 22:36:45 2017 +0000"
      },
      "message": "Merge \"Delete CodeItemIterator\""
    },
    {
      "commit": "cefd676fb79d225fcd7e8e8c0ef141d70a2f45b8",
      "tree": "be625fa0bc1255cbea5c5066dd878fb0b2a1c454",
      "parents": [
        "dbc26ad5e8ded15688d20a39344c677077311279",
        "86083f7cd118f3d6c757191e83b4e4abaabdc5d7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 08 03:26:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 08 03:26:30 2017 +0000"
      },
      "message": "Merge \"runtime: Bitstring implementation for subtype checking (4/4).\""
    },
    {
      "commit": "e20ff6f0305b36d430ae07e66e785caf58258fcd",
      "tree": "1b7c09c2b3270e4a6b202aa23340c0da6c78dbbb",
      "parents": [
        "41a7e1562e55fd7e4ca4d39ad327749ea316d20c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 07 15:00:35 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 07 15:00:35 2017 -0800"
      },
      "message": "ART: Fix up dex2oat usage message\n\nFollow-up to commit cac31ad4c43a24a959a4d3652b8b46538bdc8c53.\n\nTest: none\nChange-Id: I6b65085aeec15ececf2368110c50002bb392af66\n"
    },
    {
      "commit": "86083f7cd118f3d6c757191e83b4e4abaabdc5d7",
      "tree": "8e5b81ae0d09d41bfd90284a1b6b16b2332435e5",
      "parents": [
        "495e783c9180c3fc033ce459ee0a783e633f7754"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Oct 27 10:59:04 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Nov 07 14:47:51 2017 -0800"
      },
      "message": "runtime: Bitstring implementation for subtype checking (4/4).\n\nIntegrate the previous CLs into ART Runtime. Subsequent CLs to add\noptimizing compiler support.\n\nUse spare 24-bits from \"Class#status_\" field to\nimplement faster subtype checking in the runtime. Does not incur any extra memory overhead,\nand (when in compiled code) this is always as fast or faster than the original check.\n\nThe new subtype checking is O(1) of the form:\n\n  src \u003c: target :\u003d\n    (*src).status \u003e\u003e #imm_target_mask \u003d\u003d #imm_target_shifted\n\nBased on the original prototype CL by Zhengkai Wu:\nhttps://android-review.googlesource.com/#/c/platform/art/+/440996/\n\nTest: art/test.py -b -j32 --host\nBug: 64692057\nChange-Id: Iec3c54af529055a7f6147eebe5611d9ecd46942b\n"
    },
    {
      "commit": "0021feb36ca7021e2c255e6eaf16b967180290c6",
      "tree": "43f1ce8f6d91630a831d03b51a465d57c2a47119",
      "parents": [
        "550c0aee52bf8981dfe1d22d3b661d61e80cc7ee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 07 00:08:52 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 07 13:15:41 2017 -0800"
      },
      "message": "Delete CodeItemIterator\n\nReplace uses with DexInstructionIterator.\n\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: I28c839c372edcb60583867355d46b14f8752d41b\n"
    },
    {
      "commit": "cac31ad4c43a24a959a4d3652b8b46538bdc8c53",
      "tree": "fca3149e0ebf0817c859b9f7faa5098d230608c4",
      "parents": [
        "3b5df92d613bb72c8e6f8a766c60835d8313414f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 06 20:01:17 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 07 12:20:59 2017 -0800"
      },
      "message": "ART: Add compiler option for code deduplication\n\nAdd --deduplicate-code and --no-deduplicate-code to ease in\nexperiments with deduplication, e.g., profiling.\n\nAdd dex2oat test.\n\nTest: m test-art-host\nChange-Id: Ib6c7fe082f43c5f76c8463cc563e2503c9a50480\n"
    },
    {
      "commit": "dde7d4eab02a753875af054b427b667aa6df49f0",
      "tree": "fcf4abf4afbed2084eea7545c2a583844c158cf9",
      "parents": [
        "b3dfd1b23eb2c064797163b99d2e4ce8463c1312"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 06 14:29:39 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 06 14:29:39 2017 -0800"
      },
      "message": "dex2oat: Remove redundant \"duplicate methods\" warning with --debuggable\n\nThis also fixes failing golem benchmarks with --debuggabble because\nthere was too much output for golem to handle.\n\nBug: 68850641\nChange-Id: I626465302d3e36bcdbb84e701363d34d43b87c7c\n"
    },
    {
      "commit": "36ea6b4a6e76fa0507e81bfad7af311c93cec389",
      "tree": "166fef79d93a5c337bbb22d5306699005c7cbb52",
      "parents": [
        "c2dca98b60427d064a472ed6e21f5bc4dd7627f1",
        "c8b95b2f67d9996a160a8d8467ad2e801b730604"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 02 21:54:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 02 21:54:19 2017 +0000"
      },
      "message": "Merge changes Idaefe0af,Ib5c12d46,Ieb28085e,Idffbb7f2\n\n* changes:\n  ART: Clean up global includes - jni headers\n  ART: Clean up global includes - zlib\n  ART: Clean up global includes - lz4\n  ART: Clean up global includes - icu4c\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "238e8fcd1d37ef75b85b0a84303d70776fe64495",
      "tree": "ae9e770a0db2fd09a6914f4f2dcf4e98bd3041e6",
      "parents": [
        "f24dfb082abc4715024fe7d5e80fdba6b4e08ba2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 01 17:10:10 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 01 21:08:29 2017 -0700"
      },
      "message": "ART: Clean up global includes - zlib\n\nRemove zlib from the ART-global includes.\n\nTest: mmma art\nChange-Id: Ib5c12d46aae9cc1288c7a4f2f7e0f60444f2c6e0\n"
    },
    {
      "commit": "f24dfb082abc4715024fe7d5e80fdba6b4e08ba2",
      "tree": "85536b9259695ac4360261a0b03a4c7c1ea589c0",
      "parents": [
        "fdb7a61597bd3e836d43d78dd744719bf92b17a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 01 15:41:25 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 01 21:07:27 2017 -0700"
      },
      "message": "ART: Clean up global includes - lz4\n\nRemove lz4 from the ART-global includes.\n\nTest: mmma art\nChange-Id: Ieb28085e9763631a723799428a77d02df0ba3c78\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "24066ec509949f777a4c6e61ef631de33bfdc28a",
      "tree": "5620a9f0ef3f476ada8b1763a1854877d136f022",
      "parents": [
        "31275df5ea1b91ed668618d6ec64a76d67cee73c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Oct 21 16:01:08 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 26 09:35:02 2017 -0700"
      },
      "message": "Re-enable dex verifier after dexlayout\n\nDisabled class def ordering since it violates the spec regarding\nsuperclasses occurring before subclasses. This fixes a dex verifier\nfailure.\n\nAdjust the data section size based on string data and code item\ndiff. This fixes dex2oat_image_test failing dex file verification.\n\nFixed handling of unreference annotations. Previously, these would\nnot get written back out. This resulted the dex file verifier\nprematurely ending for annotations during CheckIntraSectionIterate\nand then complaining about non zero padding (that was actually an\nannotation).\n\nTest: test-art-host\nBug: 63756964\nBug: 68208404\n\nChange-Id: Id2b9b360640c360ac562826e9193971f7bb30eea\n"
    },
    {
      "commit": "22fa37687ea8088c40ea9aea6f848f6117821c6f",
      "tree": "8419631a69bb543c6f40d711396a535723f47d7c",
      "parents": [
        "2a96120f0a67838355b2134c6038f29cc4576ba0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 23 20:58:12 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 23 20:58:12 2017 -0700"
      },
      "message": "ART: Slow down dex2oat for watchdog test\n\nTry to slow down dex2oat by using an excessive number of (idle)\nthreads.\n\nBug: 63052624\nTest: m test-art-host-gtest-dex2oat_test\nChange-Id: Ifda3f4407eea2ec2b025b1d576fe14840ac6be75\n"
    },
    {
      "commit": "9e842d3e7d6102d964178e36e5d596ca91895147",
      "tree": "0903b495d4742e17bd6f7d0b89dbf5bd67e8a93d",
      "parents": [
        "e4df8d98afd512e8ed0b7664b31856ab49edb13a",
        "603ccabb82511824a2a9d9531397005009a0e28a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 23 16:27:01 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 23 16:27:01 2017 +0000"
      },
      "message": "Merge \"Add basic support for writing cdex container in dexlayout\""
    },
    {
      "commit": "dfeec3a983c81e62fbfeb4eb81d4f58b65effd80",
      "tree": "fe80df785c35671790d13728d1f6d114278c43c2",
      "parents": [
        "59c5dfe792d3288c5df75a035f6614cb228d7352",
        "095c6c96236476b605b3ac672f6d2b8c151e9479"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 23 08:29:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 23 08:29:27 2017 +0000"
      },
      "message": "Merge \"Pass the verify flag to DexFileLoader utilities.\""
    },
    {
      "commit": "603ccabb82511824a2a9d9531397005009a0e28a",
      "tree": "2c83d0e217b87f9ddb1d2e16085abb437a6d389d",
      "parents": [
        "6479e488e627c0e470e2068422316f6966d254f5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 20 14:34:28 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 20 18:03:48 2017 -0700"
      },
      "message": "Add basic support for writing cdex container in dexlayout\n\nPass compact dex level option to dexlayout and generate a file with\na compact dex header if it is enabled.\n\nAdded test in dex2oat_test.\n\nAdded logic to check for CompactDexFile header in\nDexFileLoader::OpenCommon.\n\nBug: 63756964\nTest: test-art-host-gtest-dex2oat_test\n\nChange-Id: Icfec03cdb64f71de900b92754ab4be3789c71cc3\n"
    },
    {
      "commit": "6479e488e627c0e470e2068422316f6966d254f5",
      "tree": "8dc534058939c211f4ab065a31ee5331389bf76f",
      "parents": [
        "a59820dc247b220640a738ae7cb3803a4d89829c",
        "eafe2a5a057c32eaf972cb09fe447cfbffae71ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 20 21:35:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 20 21:35:23 2017 +0000"
      },
      "message": "Merge \"Add compact-dex-level argument to dex2oat\""
    }
  ],
  "next": "eafe2a5a057c32eaf972cb09fe447cfbffae71ca"
}
