)]}'
{
  "log": [
    {
      "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\""
    },
    {
      "commit": "eafe2a5a057c32eaf972cb09fe447cfbffae71ca",
      "tree": "b48d251e9636f69915194feef19f3c39a650d221",
      "parents": [
        "a64eaf9023ac0c2f788ecd9ca138b003207b0760"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 19 15:29:42 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 20 10:40:44 2017 -0700"
      },
      "message": "Add compact-dex-level argument to dex2oat\n\nNo-op right now but will be passed to dexlayout to generate\nCompactDex.\n\nAdded the following dex2oat options:\n--compact-dex-level\u003dnone generates no CompactDex.\n--compact-dex-level\u003dfast generates CompactDex with optimizations\nthat are fast and take low resources.\n\nWill add test in follow up through dex2oat/compact_dex_file_test.\n\nTest: test-art-host-gtest\nBug: 63756964\n\nChange-Id: If9d6f4a383bdad1086b3e37daefe108bdd5cd36d\n"
    },
    {
      "commit": "095c6c96236476b605b3ac672f6d2b8c151e9479",
      "tree": "fe04b7fe93e65efadd3f019dd1ecba4c2c40df18",
      "parents": [
        "b277aa1385f7f4593c9978d8106669142d158f4f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 19 13:59:55 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 14:22:52 2017 +0100"
      },
      "message": "Pass the verify flag to DexFileLoader utilities.\n\nRefactoring-only change.\n\nAlso remove unused DexFilerLoader::OpenMemory.\n\nbug: 30972906\nbug: 63920015\n\nTest: build.\n\nChange-Id: I7cd4b5787565ab1a3457ce2be6bb14657229c550\n"
    },
    {
      "commit": "f39208f6787928151153795a3cdae28cba964df6",
      "tree": "59ea0bc7ddf2b20ecf501e3ddca7d71ebb9df851",
      "parents": [
        "5ef8128014b1796ae56dba3031f64ce6bfef4496"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 19 15:06:59 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 19 18:01:03 2017 -0700"
      },
      "message": "ART: Add abort-on-soft-verifier-error\n\nAdd an option to abort compilation if any class fails compile-time\nverification.\n\nBug: 65318848\nBug: 67358823\nTest: m test-art-host-gtest-dex2oat_test\nChange-Id: I5d2a7cd1d2ed048ab39d6f787ecc9eb2f41d3d77\n"
    },
    {
      "commit": "185f633f600643a02bc2c3de9f2801d0eca3bdd7",
      "tree": "47033c70f0ce26791e883557ec8b45bd175de39f",
      "parents": [
        "772f1377b6502ae0178cb11605d39708673f7c23",
        "9595fd3d3f8b27c0a14a282a5cb37148c9746085"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Thu Oct 19 22:09:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 22:09:48 2017 +0000"
      },
      "message": "Merge \"Fix LayoutSections for aligned last CodeItem.\""
    },
    {
      "commit": "dfce43569a32ed7da881796713647cd8051d0d4e",
      "tree": "2b4b8e48a9cc88f469ac5637bfa4de9307f75a5f",
      "parents": [
        "d9b2fd27750a45a25d8dc7a5550af4e8aae23d2b",
        "cf76bf83147f30cf23c70cfb7834a07420775143"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 19 01:39:29 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 01:39:29 2017 +0000"
      },
      "message": "Merge \"Add CompactDexFile\""
    },
    {
      "commit": "9595fd3d3f8b27c0a14a282a5cb37148c9746085",
      "tree": "cc2975f67a16122b383b8d60732a82027cb0f155",
      "parents": [
        "b05fa41b1f05b24b122799a1b45667e8e401c97e"
      ],
      "author": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Tue Oct 17 17:08:19 2017 -0700"
      },
      "committer": {
        "name": "Alan Leung",
        "email": "acleung@google.com",
        "time": "Wed Oct 18 16:10:35 2017 -0700"
      },
      "message": "Fix LayoutSections for aligned last CodeItem.\n\nMake LayoutSections aware that a CodeItem might not be found in all\nthe layout sections if it is the last CodeItem and the end of it\nis 4 byte aligned.\n\nBug: 67621029\nTest: USE_D8\u003dtrue ANDROID_COMPILE_WITH_JACK\u003dfalse make -j 32 showcommands test-art-host-gtest-dex2oat_test\n\nChange-Id: I7d5edb6c896f716790652e4acbbf861c0709c58a\n"
    },
    {
      "commit": "cf76bf83147f30cf23c70cfb7834a07420775143",
      "tree": "4b2b7c0f05c58214bbeb613bf3b0fec3d1a4cfc2",
      "parents": [
        "24276374dcaf95bfc52be2b8193eb4e337de62e4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 25 16:22:36 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 18 15:45:31 2017 -0700"
      },
      "message": "Add CompactDexFile\n\nAdd holder class for CompactDex. Add unit test.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I304d7cb0e38b20e51132ea2c155f3db7bd50028a\n"
    },
    {
      "commit": "2b51edd7918d6a70fd335cdc5af50e9513aab1cf",
      "tree": "e2e57953d38318df3b7d32ca707fa07093fb16d7",
      "parents": [
        "d6947136eab2fcefb1a9195110b9195aabaf469e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 13:15:02 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 13:27:12 2017 -0700"
      },
      "message": "ART: Fix includes\n\nAdd missing libnativehelper dependencies. Remove superfluous\nScopedLocalRef includes.\n\nTest: mmma art\nChange-Id: Ic2ecbcc1d205500307f0ef5b2859c60d3fc336f3\n"
    },
    {
      "commit": "aa337b1846d211c6b12a4f33472a52f267dd3a2c",
      "tree": "597b75fabf2a2eb58ab3c8a4ee661afb8cf2c5a3",
      "parents": [
        "4a6603701b217bbbd75020e1689c87c61125ef02",
        "a1f56a8dddb88f5377a7dd4ec79640103c713d30"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 18 09:58:06 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 18 09:58:06 2017 +0000"
      },
      "message": "Merge \"Unquicken dex files before exporting from oatdump\""
    },
    {
      "commit": "a1f56a8dddb88f5377a7dd4ec79640103c713d30",
      "tree": "ae1df3adacfcd82dd0b960cfd4cabcfb44fe6536",
      "parents": [
        "e4c00b3af3ccf460e4b0332a04dc9eaeffee5c7a"
      ],
      "author": {
        "name": "Anestis Bechtsoudis",
        "email": "anestis@census-labs.com",
        "time": "Sun Oct 08 23:37:10 2017 +0300"
      },
      "committer": {
        "name": "Anestis Bechtsoudis",
        "email": "anestis@census-labs.com",
        "time": "Mon Oct 16 23:36:16 2017 +0300"
      },
      "message": "Unquicken dex files before exporting from oatdump\n\nBenefit from the vdex unquicken method when exporting dex files from\noatdump (--export-dex-to). Currently oatdump exports the quickened dex\nfiles as generated by the dex compiler (dex-to-dex transformations).\nWith this commit the dex files associated with the input oat file are\nunquickened before exporting.\n\nIn contrast to the other VdexFile::Unquicken() calls, in this case it\nis useful to decompile a RETURN_VOID_NO_BARRIER into a RETURN_VOID. As\nsuch, the required changes around the decompile_return_instruction flag\nwere made since it was hardcoded to false.\n\nThis feature is mostly useful when inspecting oat files that have the\noriginal bytecode being stripped from the matching APK. If unquicken\nis successful, the old checksum is expected to match.\n\nTest: test-art-host\n\nChange-Id: I9133d5f488ee3451c8f361ae90d1e12857529b1e\nSigned-off-by: Anestis Bechtsoudis \u003canestis@census-labs.com\u003e\n"
    },
    {
      "commit": "292567ee71a20bfc59513c6af290495e4b92b2cb",
      "tree": "6f2fb5ed3caec12b2193b179864dcd87578d2f52",
      "parents": [
        "b95f45e67a3e4a14aab63b19f101547658d7514b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 12 13:24:38 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 12 13:48:31 2017 -0700"
      },
      "message": "Rename NativeDexFile -\u003e StandardDexFile\n\nMotivation: The new name is cleaner.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I0e52015dbd929fe247305070cef03d86bcdeb54b\n"
    },
    {
      "commit": "79c87da9d4698ec58ece65af0065eebd55a1cfe0",
      "tree": "399797f37712da9d20829d5b5059b6c84943cb02",
      "parents": [
        "656e97f949df4081fba908113406b32915174502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 10 11:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 14:47:06 2017 -0700"
      },
      "message": "Add DexFileLoader class\n\nAdded DexFileLoader class, moved functionality from DexFile there:\n- Multidex loading logic\n- DexFile opening logic for Zip and etc\n- Some other helpers\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic3dfa458947d4b69912dea5cdd836e7e8f55061c\n"
    },
    {
      "commit": "7b074bf1ce559541d0c19ef793d9702a415ff74d",
      "tree": "acaf022c330649de7a1a4b372308132f44091c70",
      "parents": [
        "432d91004b79c79deebeee6f6197e43adf6caafd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 25 16:22:36 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 11:30:11 2017 -0700"
      },
      "message": "Add a shared interface for different types of dex files\n\nRepurposed DexFile to be the shared API. Will be used for abstracting\naccesses to original dex files and CompactDex files.\n\nAs implementation diverges, functionality will be moved from DexFile\naccordingly.\n\nWill consider renaming DexFile -\u003e IDexFile in a follow up CL.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Iad2508c2b9a7b6e0669fca5f7d10299a9b1541a2\n"
    },
    {
      "commit": "001ff033e6cb4bd650da6df768ab676697db65a9",
      "tree": "8e977067548071ad624176ec3ec4e1249ce96154",
      "parents": [
        "efe35f4105bca731a193d74a3ed207729d2bf384",
        "097f34cc09caf46945ec17e198f57ac9c156e904"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 06 23:31:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 06 23:31:00 2017 +0000"
      },
      "message": "Merge \"ART: Use CmdlineParser in dex2oat\""
    },
    {
      "commit": "efe35f4105bca731a193d74a3ed207729d2bf384",
      "tree": "24f265a532f846d8c24b64e6b5f1e179a43c3087",
      "parents": [
        "fb316f0b3893b54f2b7df0a7ec7a2053294359de",
        "44e9bacbf7e0b914812f308b899d35928ac553c9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 06 21:14:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 06 21:14:35 2017 +0000"
      },
      "message": "Merge \"Increase margins for dex2oat_image_test\""
    },
    {
      "commit": "fb316f0b3893b54f2b7df0a7ec7a2053294359de",
      "tree": "f197a18d2e9db153b2f776e91919231324d215fe",
      "parents": [
        "42e482f0615bd935d1426a749a413be2c3f79114",
        "662053297fff64683b166b6c891aeaeaa44c73bf"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 06 21:10:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 06 21:10:12 2017 +0000"
      },
      "message": "Merge \"Add --input-vdex-fd and --output-vdex-fd options in help for dex2oat\""
    },
    {
      "commit": "097f34cc09caf46945ec17e198f57ac9c156e904",
      "tree": "2f478bcc58ac21017431505ca87e83f4606355b4",
      "parents": [
        "42e482f0615bd935d1426a749a413be2c3f79114"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 23 08:57:51 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 06 13:22:08 2017 -0700"
      },
      "message": "ART: Use CmdlineParser in dex2oat\n\nRefactor dex2oat and the compiler to use the cmdline parser. In\nan effort to standardize command-line parsing and make it easier\nto add new properties in a principled manner.\n\nTest: m test-art-host\nChange-Id: Ia077a56234dbf579d7ca3430fef325b57aa06333\n"
    },
    {
      "commit": "662053297fff64683b166b6c891aeaeaa44c73bf",
      "tree": "cacd86eab27cef319cf698e3248fe8cf28764764",
      "parents": [
        "7ec532fd6387a309c824f1abba466003593a685e"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Oct 06 11:18:51 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Fri Oct 06 12:36:52 2017 -0700"
      },
      "message": "Add --input-vdex-fd and --output-vdex-fd options in help for dex2oat\n\nTest: dex2oat\nChange-Id: I4b79047b00caa930b61ef5457c79c832340211fa\n"
    },
    {
      "commit": "44e9bacbf7e0b914812f308b899d35928ac553c9",
      "tree": "c5a0c2006d77a7f930bdabfae735012ff67ccdd6",
      "parents": [
        "aa7273e56fbafc2692c8d20a31b50d2f4bdd2aa1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 06 09:50:18 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 06 11:48:32 2017 -0700"
      },
      "message": "Increase margins for dex2oat_image_test\n\n5% has test flakes, increased to 10%.\n\nBug: 67489545\nTest: test-art-host-gtest-dex2oat_image_test\nChange-Id: I89db9623597047d136b93cc00acc2222a5a13dcb\n"
    },
    {
      "commit": "c46cf80c4e62fd6de1872d29bf7e4f3d4238829e",
      "tree": "d5a19214bdf22407fc3ac5dbfe24db4478dbf736",
      "parents": [
        "7ec532fd6387a309c824f1abba466003593a685e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 28 11:52:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 29 11:14:00 2017 -0700"
      },
      "message": "Add startup/post-startup bits for random profiles\n\nFixes warnings that were printed for the speed-profile tests.\n\nMoved oat_writer debug check to be fatal to catch these errors in\nthe future.\n\nFixed some tests that caused the oat layout assert to fail.\n\nTest: test/testrunner/testrunner.py -j8 --speed-profile --verbose --host\nTest: test-art-host\n\nBug: 67029385\nChange-Id: Iad804b3c81908ca1407f1f6069482f2ca2df70d1\n"
    },
    {
      "commit": "2ca278036432eefbdbf39502dfcfb7e38a54332c",
      "tree": "8aa7ab585414f2b54186ee4285f2435be90de335",
      "parents": [
        "9389ae7309180f4dccc3c34e26798ed428f0d054"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 27 14:57:43 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 27 15:11:33 2017 -0700"
      },
      "message": "Run bpfmt\n\ncd art; find . -name \u0027*.bp\u0027 | xargs bpfmt -w\n\nTest: mmma art\nChange-Id: Iec406b734180313b98a58b99a776738772e63cc1\n"
    },
    {
      "commit": "9389ae7309180f4dccc3c34e26798ed428f0d054",
      "tree": "d8ff0d871506ad2559c505b92495b1f5125fc4f6",
      "parents": [
        "350546494d6964daee2b9236820b7f85b88dfd59"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 27 11:58:43 2017 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Sep 27 15:11:33 2017 -0700"
      },
      "message": "Simplify Android.bp files\n\nRemove clang: true, it\u0027s the default.\n\nRemove target.android.shared_libs \"libdl\", since it\u0027s already part of\nthe system_shared_libs list.\n\nRemove host_ldlibs, since -ldl and -lpthread are automatically added on\nDarwin and Linux. -lrt is automatically added on Linux.\n\nTest: mmma art\nChange-Id: I18aa6aa5b49cad31caf6820b1974057ad14a2798\n"
    },
    {
      "commit": "2dc2bcc09aff444fad4d0c0ae12458bde5716699",
      "tree": "34349393fef17bbaf051393e745e26157ef81703",
      "parents": [
        "8b96c164a11284c07886fca9e4a4a0e15d33e816",
        "b09be72c815c1f427616082bd07fa5a0ccffa29a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 26 17:43:27 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 26 17:43:27 2017 +0000"
      },
      "message": "Merge \"Ensure the  oat/vdex file is erased if we fail to truncate\""
    },
    {
      "commit": "b09be72c815c1f427616082bd07fa5a0ccffa29a",
      "tree": "9e1c03313e7cb4d2c967ff2c317bb4ae4f66d95d",
      "parents": [
        "d4215bba6f10bc952bdf54105ae81b5f45cb8df4"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 25 16:42:48 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Sep 25 16:50:13 2017 -0700"
      },
      "message": "Ensure the  oat/vdex file is erased if we fail to truncate\n\nAlso, transform fd_file.cc CHECKS into DCHECKS to make sure we don\u0027t crash\non user devices.\n\nTest: m test-art-host-gtest\nBug: 66903292\nChange-Id: I4de921a3d621d616241ca73f1797c113cf153698\n"
    },
    {
      "commit": "2fe2d41c0e988dbb2bdd5bb91c9a21ffee8fee20",
      "tree": "28de07812a7182652a4127697708f62b365c2fb8",
      "parents": [
        "2c1ef390107b6e0282502d0c5631575d36b4d6bf",
        "545412b4b250d6024ff071c094c226187860a086"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Sep 25 16:40:17 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 25 16:40:17 2017 +0000"
      },
      "message": "Merge \"compiler: layout OatMethodQuickCode by profile hotness\""
    },
    {
      "commit": "545412b4b250d6024ff071c094c226187860a086",
      "tree": "9dccf6033809113a7c741f84c33ee27542b18c97",
      "parents": [
        "38a03535e4abf24cda22a13e514454d9847b9682"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Aug 17 15:26:54 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Sep 21 14:10:32 2017 -0700"
      },
      "message": "compiler: layout OatMethodQuickCode by profile hotness\n\nRe-arrange all the compiled oat code by using the profile information.\nIf no profile is available, it retains the original order\n(sorted by class_def_idx, method_idx).\n\nMethods are all binned together in a group according to the hotness flags:\n -- not hot at all\n -- all hot\n -- all hot and startup\n -- all hot and post-startup\n -- all hot and startup and poststartup\n -- all startup\n -- all startup and post-startup\n -- all post-startup\n\n(See MethodHotness enum definition for up-to-date binning order.)\n\nMethods within a bin also retain the original order. A deduped method\nwill appear in the bin of the smallest (class_def_idx, method_idx).\n\nSaves 700KB of memory (PSS) for system_server on most devices.\n\nBug: 64577026\nTest: art/test.py  # no regressions\nTest: art/testrunner/testrunner.py -t 661-oat-writer-layout  # new test\nChange-Id: I40e9907d095b4a3b48bff0df8799954ef135fc19\n"
    },
    {
      "commit": "478abf08c6d2a95eef12e78d3b12857917a91872",
      "tree": "ad96443ea0af73261f4f546f25f6e32dfbe43fb0",
      "parents": [
        "38a03535e4abf24cda22a13e514454d9847b9682",
        "188b2bf98048b53df0c7ead9571160e83efeffbc"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Sep 21 21:00:56 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 21 21:00:56 2017 +0000"
      },
      "message": "Merge \"Revert^2 \"Verify profile wrt dex file in dex2oat\"\"\""
    },
    {
      "commit": "188b2bf98048b53df0c7ead9571160e83efeffbc",
      "tree": "3776d250687f250906f2bdde92ebcfc38dbe36b3",
      "parents": [
        "208dd6076bdddcb04afb0397e4d4708f44a5dd60"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Wed Sep 20 15:53:35 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Thu Sep 21 08:59:30 2017 -0700"
      },
      "message": "Revert^2 \"Verify profile wrt dex file in dex2oat\"\"\n\nThis reverts commit 7b211a11007eebdcdb4a600ec27207049084b15e.\nMade changes in the checker code - now we are stripping out\ndex2oat warning from the output.\n\nBug: 62602192\nTest: art-test-host, target\nChange-Id: Ic92fc700fceb939a779bea1df9141b8856e9f12a\n"
    },
    {
      "commit": "20e9a7f4ac3b61c1a81653276036e124b19cb8d4",
      "tree": "0108a2cff437d5f272be78edddfe7f01f8dce2ae",
      "parents": [
        "1d9f45b5f5e48ffb48ddca3a560bf33fe420b015",
        "d8dbc8da0e5cc6b5c2176ce2d3877e6194d72c0c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 15:37:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 21 15:37:55 2017 +0000"
      },
      "message": "Merge \"Refactor compiled_method.h .\""
    },
    {
      "commit": "672bcf5b537d93522d04313f77c0ffa0550f19cc",
      "tree": "1a9d224a7ec86c241b746d4f32e83a866dee0a3d",
      "parents": [
        "b407afe983f8b106a5007d07aa2523ffc6525018"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 19 20:02:42 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 20 10:29:29 2017 -0700"
      },
      "message": "ART: Fix os \u003c\u003c std::string* errors\n\nFix some unintented pointer logging.\n\nTest: m\nChange-Id: I7d66ec2f33cc46588b6f549876241871f19ce995\n"
    },
    {
      "commit": "d8dbc8da0e5cc6b5c2176ce2d3877e6194d72c0c",
      "tree": "af6e9fb02471d75ebdea46190a0aa3e9dbdb892d",
      "parents": [
        "93780a60090356921b844dbefdc13442c9f18b52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 13:37:47 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 15:55:10 2017 +0100"
      },
      "message": "Refactor compiled_method.h .\n\nMove LinkerPatch to compiler/linker/linker_patch.h .\nMove SrcMapElem to compiler/debug/src_map_elem.h .\nIntroduce compiled_method-inl.h to reduce the number\nof `#include`s in compiled_method.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id211cdf94a63ad265bf4709f1a5e06dffbe30f64\n"
    },
    {
      "commit": "7452797678c4345d4a9e65b03e00af703c2c5fe0",
      "tree": "fd23d118a6317737a692402a648217418c3d7b99",
      "parents": [
        "3c683150bcf2f1cabbe2e5f9d10d8c670b67fb7e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 15:57:32 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 10:58:42 2017 +0100"
      },
      "message": "Refactor linker files from compiler/ to dex2oat/.\n\nThis shifts some code from the libart-compiler.so to dex2oat\nand reduces memory needed for JIT. We also avoid loading the\nlibart-dexlayout.so for JIT but the memory savings are\nminimal (one shared clean page, two shared dirty pages and\nsome per-app kernel mmap data) as the code has never been\nneeded in memory by JIT.\n\naosp_angler-userdebug file sizes (stripped):\n  lib64/libart-compiler.so: 2989112 -\u003e 2671888 (-310KiB)\n  lib/libart-compiler.so: 2160816 -\u003e 1939276 (-216KiB)\n  bin/dex2oat: 141868 -\u003e 368808 (+222KiB)\nLOAD/executable elf mapping sizes:\n  lib64/libart-compiler.so: 2866308 -\u003e 2555500 (-304KiB)\n  lib/libart-compiler.so: 2050960 -\u003e 1834836 (-211KiB)\n  bin/dex2oat: 129316 -\u003e 345916 (+212KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: cd art/; mma; cd -\nChange-Id: If62f02847a6cbb208eaf7e1f3e91af4663fa4a5f\n"
    },
    {
      "commit": "7b211a11007eebdcdb4a600ec27207049084b15e",
      "tree": "2b9b6398727a7e6f74c5c4a4debdf5c9a9f50167",
      "parents": [
        "26765207bd51665f2413f37658b77c66391c6106"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 20 08:45:47 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 20 08:45:47 2017 +0000"
      },
      "message": "Revert \"Verify profile wrt dex file in dex2oat\"\n\nBug: 62602192\nBug: 65260586\n\nFails on device.\n\nThis reverts commit 26765207bd51665f2413f37658b77c66391c6106.\n\nChange-Id: I6cd54ff445828c39663156a8420224fd9a042c47\n"
    },
    {
      "commit": "26765207bd51665f2413f37658b77c66391c6106",
      "tree": "b2d34c7608679b4b073217359dc25f2e80a9b1e9",
      "parents": [
        "8048bf6d13dd4492df8d59ecb795987558e2e579"
      ],
      "author": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Mon Jul 17 12:59:25 2017 -0700"
      },
      "committer": {
        "name": "Shubham Ajmera",
        "email": "shubhamajmera@google.com",
        "time": "Tue Sep 19 16:39:10 2017 -0700"
      },
      "message": "Verify profile wrt dex file in dex2oat\n\nTest: dex2oat with invalid profiles, 707-checker-invalid-profile\nBug: 62602192\nBug: 65260586\n\nChange-Id: I3af53275ab7bfa8bcc489a22f606dba2df4d41b1\n"
    },
    {
      "commit": "fc8b422c286501346b5b797420fb616aaa5e952a",
      "tree": "61c857a895cdad9ce387a899f92824701259df32",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Sep 17 13:44:24 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 18 10:57:06 2017 -0700"
      },
      "message": "Clean up AtomicDexRefMap\n\nMake ClassReference, TypeReference, and MethodReference extend\nDexFileReference. This enables using all of these types as the key\nfor AtomicDexRefMap.\n\nTest: test-art-host\nBug: 63851220\nBug: 63756964\n\nChange-Id: Ida3c94cadb53272cb5057e5cebc5971c1ab4d366\n"
    },
    {
      "commit": "1b404a8b34f6fa80342955cb0a61673503328b51",
      "tree": "df0d83903e77c55dcb476a19961ea9cccc13e616",
      "parents": [
        "fe712a8b9c247d66df013f2b4b6faa6009d745bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 01 13:35:26 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 18 16:53:30 2017 +0100"
      },
      "message": "Add debug info for link-time generated thunks.\n\nAdd debug info for method call thunks (currently unused) and\nBaker read barrier thunks. Refactor debug info generation\nfor trampolines and record their sizes; change their names\nto start with upper-case letters, so that they can be easily\ngenerated as `#fn_name`.\n\nThis improved debug info must be generated by `dex2oat -g`,\nthe debug info generated by `oatdump --symbolize` remains\nthe same as before, except for the renamed trampolines and\nan adjustment for \"code delta\", i.e. the Thumb mode bit.\n\nCortex-A53 erratum 843419 workaround thunks are not covered\nby this CL.\n\nTest: Manual; run-test --gdb -Xcompiler-option -g 160, pull\n      symbols for gdbclient, break in the introspection\n      entrypoint, check that gdb knows the new symbols\n      (and disassembles them) and `backtrace` works when\n      setting $pc to an address in the thunk.\nBug: 36141117\nChange-Id: Id224b72cfa7a0628799c7db65e66e24c8517aabf\n"
    },
    {
      "commit": "fe712a8b9c247d66df013f2b4b6faa6009d745bb",
      "tree": "45897680a8f1897b6d33c3bccfad859bb6d9abe0",
      "parents": [
        "3597f51c4af8d5e32c21789ea7b7cd75dc078120",
        "486dda03900a215650f71a9068759978aa77c699"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 18 08:28:15 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 18 08:28:15 2017 +0000"
      },
      "message": "Merge \"Add support for registering classpath classes status.\""
    },
    {
      "commit": "486dda03900a215650f71a9068759978aa77c699",
      "tree": "1f2a1331d3ec474c979db5f9a35dd11f453abc25",
      "parents": [
        "b072ec25f8a71420ee77b068a28a2669420f6150"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 11 14:15:52 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 15 12:45:28 2017 +0100"
      },
      "message": "Add support for registering classpath classes status.\n\nBy doing class unloading after each dex file compilation, we are loosing\naway verification done on classpath classes.\n\nThis change introduces a new table for keeping around class status of\nclasspath classes.\n\nMultidex quickening compilation improved by ~5% by not re-verifying classpath\nclasses.\n\nBug: 63467744\n\ntest: test.py\ntest: golem successfully compiles FB\nChange-Id: I629c0a7d86519bbc516f5e59f7cd92ca6ca842eb\n"
    },
    {
      "commit": "6cfbdbc359ec5414d3e49f70d28f8c0e65b98d63",
      "tree": "f92b309ddc43c2254b6067346a653170fbbf7316",
      "parents": [
        "0f3c7003e08a42a4ed8c9f8dfffb1bee1118de59"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 25 13:26:39 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 07 17:52:35 2017 +0100"
      },
      "message": "Use mmapped boot image intern table for PIC app HLoadString.\n\nImplement new HLoadString load kind for boot image strings\nreferenced by PIC-compiled apps (i.e. prebuilts) that uses\nPC-relative load from a boot image InternTable mmapped into\nthe apps .bss. This reduces the size of the PIC prebuilts\nthat reference boot image strings compared to the kBssEntry\nas we can completely avoid the slow path and stack map.\n\nWe separate the InternedStrings and ClassTable sections of\nthe boot image (.art) file from the rest, aligning the\nstart of the InternedStrings section to a page boundary.\nThis may actually increase the size of the boot image file\nby a page but it also allows mprotecting() these tables as\nread-only. The ClassTable section is included in\nanticipation of a similar load kind for HLoadClass.\n\nPrebuilt services.odex for aosp_angler-userdebug (arm64):\n  - before: 20862776\n  - after: 20308512 (-541KiB)\nNote that 92KiB savings could have been achieved by simply\navoiding the read barrier, similar to the HLoadClass flag\nIsInBootImage(). Such flag is now unnecessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --pictest\nTest: testrunner.py --target on Nexus 6P.\nTest: testrunner.py --target --pictest on Nexus 6P.\nTest: Nexus 6P boots.\nBug: 31951624\nChange-Id: I5f2bf1fc0bb36a8483244317cfdfa69e192ef6c5\n"
    },
    {
      "commit": "cd87c3ee6fefc505010c795284cfc4bca076edf2",
      "tree": "074c0326206fe4a52dc8ebfa09657ef040d88022",
      "parents": [
        "39d44ba52b512cdfa7a0a2fccc7f77d28a15329e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:11:57 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 05 13:26:54 2017 +0100"
      },
      "message": "Clean up ImageHeader section getters.\n\nTest: m art-test-host-gtest\nTest: testrunner.py --host\nChange-Id: Iaea7ce6f9bc3ff3c6d9bb6fb598aa62333ebf30c\n"
    },
    {
      "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": "8cce65ac4855c01b58f66eeeeea30404df671d1e",
      "tree": "fe047c04e027368264b58ec2166d2053796d2cee",
      "parents": [
        "2ade881db8642f10007c1c46b5e7f073d463c2d3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 17 00:06:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 17 12:52:20 2017 -0700"
      },
      "message": "Disable app image for very large apps\n\nApp images prevent dex2oat unloading and should not be used in this\nmode. Disable app image generation when very large app mode is\ndetected.\n\nBug: 63467744\nTest: test-art-host-gtest-dex2oat_test\n\n(cherry picked from commit df8a96a1cde9dafbb1811358be1fbba6d3aec267)\n\nChange-Id: Icd5b0d9d3e61ececffe60f7472aaee8a54d1847b\n"
    },
    {
      "commit": "120aa286ab6adf3e76a31bc61fb4e583e5158d71",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "5bfead584f56b2a1cfb69f78c385965ec57f7e8b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 05 16:03:03 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 14 17:47:25 2017 -0700"
      },
      "message": "Store layout info in dex files\n\nStore layout info for code sections inside of the oat file. This will\nbe used to advise the kernel when dex files are loaded in\na follow up CL.\n\nAdded unit test in dex2oat_test.\n\nBug: 63178181\nTest: test-art-host\n\n(cherry-picked from commit 75c5ed6e75f70002db5fa7c609137c04dd2bdf40)\n\nChange-Id: I4777506886bde42ff0affdac412a8395e8013a40\n"
    },
    {
      "commit": "d0176f5ddd07f5374322b1a1decd73f1e18166d7",
      "tree": "5a249f6cfb730b10e6f27a4aba3ce3ea0a77e755",
      "parents": [
        "85e2d5865b720c40fb143aebccadcc75564e6bc9",
        "a6fc787e6bb07accff37ff9de059127b0c380153"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 17:03:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 14 17:03:55 2017 +0000"
      },
      "message": "Merge \"Recover vdex regression on multidex.\""
    },
    {
      "commit": "68db2258080ff6716f21f1cf1bf994600f3e5b8e",
      "tree": "57f9d1038d6ba7e19518f4ce362642d8b53151fb",
      "parents": [
        "4ec14ff3d6126750de753f7d162df408f278e825"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 14 12:48:47 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 14 12:48:47 2017 +0100"
      },
      "message": "Disable dex2oat test TestWatchdogTrigger with Valgrind.\n\nThis test sometimes fails an assertion with Valgrind:\n\n  art/dex2oat/dex2oat_test.cc:137: Failure\n  Value of: odex_file.get() \u003d\u003d nullptr\n    Actual: false\n  Expected: true\n\nDisable it while we investigate.\n\nTest: art/test/testrunner/run_build_test_target.py -j8 art-gtest-valgrind64\nBug: 63052624\nChange-Id: I75fdbad6f78377b3f80cd2447fb20fc5792cbdcf\n"
    },
    {
      "commit": "a6fc787e6bb07accff37ff9de059127b0c380153",
      "tree": "21bd8a90dfb3bd222f50722814d48aa6186327fd",
      "parents": [
        "c1bb1cd339b2ebea9c4770fb4d61bacd7d77746f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 11:29:22 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 14 11:29:22 2017 +0100"
      },
      "message": "Recover vdex regression on multidex.\n\nAs shown on golem, multidex apps regressed on vdex due\nto having to call FastVerify on each dex file.\n\nbug: 63467744\nTest: test.py\nChange-Id: Ibe49059ecd263ce553ef8f0dae3c0e975b3678fa\n"
    },
    {
      "commit": "2b03a1f24600c8c9558fb13d3f8bca1ef0f8ee40",
      "tree": "4d5fb728acd7f98f8949c84364375a804ff0ba63",
      "parents": [
        "461ec567f16039374dff35e2f3b808986c100249"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 06 16:09:59 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 10 18:17:47 2017 +0100"
      },
      "message": "Instrument ARM64 generated code to check the Marking Register.\n\nGenerate run-time code in the Optimizing compiler checking that\nthe Marking Register\u0027s value matches `self.tls32_.is.gc_marking`\nin debug mode (on target; and on host with JIT, or with AOT when\ncompiling the core image). If a check fails, abort.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: ARM64 device boot test with libartd.\nBug: 37707231\nChange-Id: Ie9b322b22b3d26654a06821e1db71dbda3c43061\n"
    },
    {
      "commit": "6a2b67beea9d1a59f7fc6d7f58c52ad1773da1c6",
      "tree": "78062f24703ea345653796ec08e7c13632bf5294",
      "parents": [
        "6ae4b9cf56b6371b0ebc0fa267d052d87e6df644"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 08 15:09:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 19:52:40 2017 +0000"
      },
      "message": "Enable class unloading in dex2oat for quicken multidex\n\nEnable class unloading for the quicken compilation filter. This\nreduces RAM used by dex2oat when compiling multidex apps with the\nquicken filter.\n\nUnit test is already in dex2oat_test.\n\nBug: 63467744\nTest: test-art-host\nTest: test/testrunner/testrunner.py --interpreter --host -j40\nChange-Id: Icde116fc066aaae9bf0ee951f277a618be60ccf0\n"
    },
    {
      "commit": "9e050df94df5c6736e1e24705194f62fbc119114",
      "tree": "0fe2c2a7a9e01cba8abaf449938503e5b906ee78",
      "parents": [
        "1bd8e5a1b2055e0ff7977ba7e149534d2ee0a696"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 10:05:47 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 09 11:16:52 2017 -0700"
      },
      "message": "Revert \"Revert \"Support class unloading in dex2oat for quicken multidex\"\"\n\nBug: 63467744\nTest: test-art-host\n\nThis reverts commit 6921d90a241f0307ac25120f8f976744d4a57706.\n\nChange-Id: If70e31d3a15579dc75fd40bfef186e0124568c87\n"
    },
    {
      "commit": "6921d90a241f0307ac25120f8f976744d4a57706",
      "tree": "04365479a12f9be9bfee324395284eb28391d965",
      "parents": [
        "0b1c341d2d89a483142cd14bdeb4650ab00184f1"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Aug 09 10:12:06 2017 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Aug 09 10:12:06 2017 +0000"
      },
      "message": "Revert \"Support class unloading in dex2oat for quicken multidex\"\n\nThis reverts commit 0b1c341d2d89a483142cd14bdeb4650ab00184f1.\n\nNew test Dex2oatDeterminism.UnloadCompile fails on bots gtest-debug-gc and friends.\n\nChange-Id: Ib101fc4390d90f88fe017d8482775d5e975f2ccb\n"
    },
    {
      "commit": "0b1c341d2d89a483142cd14bdeb4650ab00184f1",
      "tree": "1eb65853f4a9c53fda1a778911dd32979ef43e32",
      "parents": [
        "5129d8ede52ea31c0304ecaa8013f833310772a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 14 18:23:25 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 08 12:44:39 2017 -0700"
      },
      "message": "Support class unloading in dex2oat for quicken multidex\n\nSupport class unloading for the quicken compilation filter. This will\nbe enabled in a follow up CL.\n\nAdded a test that compares with and without unloading. The way that\nit tests this is by adding an output app image. Having an app image\ndisables the unloading. This test also covers that app images don\u0027t\nchange the odex (currently).\n\nAdded a test for the assumed verified logic.\n\nBug: 63467744\nTest: test-art-host\nTest: test/testrunner/testrunner.py --interpreter --host -j40\nChange-Id: I1e8a862c6f089c06c58aa0c846797e4c24bd072c\n"
    },
    {
      "commit": "d1ab1bdb48c8dceb7cff39215554e66cf6b2326f",
      "tree": "7f1656a2e504cd6cd3c8574bf47af1aefef9b79d",
      "parents": [
        "c116154a4aae8ed1608a15ac602f8bd69d8ca0ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 04 10:21:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 04 10:23:52 2017 -0700"
      },
      "message": "Add --avoid-storing-invocation option\n\nWill be used to test that some dex2oat options don\u0027t affect certain\nfiles. Without passing in --avoid-storing-invocation, the oat files\nalways differ because the invocation command line is stored in the\nkey value store.\n\nTest: m\nBug: 63467744\nChange-Id: Iaaed4423519840ce3878acc69fc7b71770a4e552\n"
    },
    {
      "commit": "293bfbdbed4bd98fe62208c98a858ccd4e1303a6",
      "tree": "e1b5f90c8fc690dcd51141fdf1da7cdd5f007ed4",
      "parents": [
        "a11100ee3ae6ef6a9000dc924e9a607a18ac1a2a",
        "1991589d4515561411156473c89d77d295183bdd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 03 20:57:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 03 20:57:38 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Stop using the runtime classpath in dex2oat\"\"\""
    }
  ],
  "next": "1991589d4515561411156473c89d77d295183bdd"
}
