)]}'
{
  "log": [
    {
      "commit": "4f570a43146c1456071f2ffe6590ab96e723051a",
      "tree": "7831f6e65bb5fa00fe54d0eb3f7e8146b1a42bf8",
      "parents": [
        "d43723ae34bb3845a9c0e4cb790ffaff13974562",
        "f4efa9ed0d7616bd32b258562d6977d9b7554af2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 19 12:10:23 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 19 12:10:23 2018 +0000"
      },
      "message": "Merge \"Remove oat_data_begin checks from OatFile.\""
    },
    {
      "commit": "afaf7f8198fe5ffc054278da6800f81dd83f272c",
      "tree": "3ebdec9fca813351d178709743121fa66815a7a0",
      "parents": [
        "6ca8ec7809f87ccac8d9d66d267f2379bdfdfe66"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 11:32:38 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 08:20:09 2018 -0700"
      },
      "message": "ART: Enable bugprone-unused-return-value\n\nEnable bugprone-unused-return-value as an error. This is on top of\nthe compiler warning for attribute((warn_unused)).\n\nMark the current occurrences (all unique_ptr.release()) with NOLINT\nto signal that we know what we\u0027re doing.\n\nBug: 32619234\nBug: 117926937\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I36659722335eef36acfa5845289104257a393874\n"
    },
    {
      "commit": "f4efa9ed0d7616bd32b258562d6977d9b7554af2",
      "tree": "826f880e65c88f85929c64907a414013f0901801",
      "parents": [
        "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 17 14:12:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 17 17:34:47 2018 +0100"
      },
      "message": "Remove oat_data_begin checks from OatFile.\n\nMake it a CHECK() directly in the ImageSpace instead. This\ncheck was a rather weird way to prevent the use of dlopen()\nfor boot image on host because it would load the oat file\nat the wrong address. This is now done by refusing to use\ndlopen() on host when we have a memory `reservation`.\n\nAlso clean up affected files for bugprone-argument-comment.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 77856493\nChange-Id: I6f0f9d5a0542574017d98acc2f4f30a585b483f4\n"
    },
    {
      "commit": "9b031f7e4834b263ae531409a9f6c82cfdc89477",
      "tree": "4b5fdfc3ecc12b5b7e32959bec0c26595b87d2ab",
      "parents": [
        "c71f38bdf7dca39a070ba25d436edcd758551f42"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 04 11:03:34 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 09 14:38:45 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles smaller subdirectories.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I81c8f3396b9922684b68e9f3d8fccefe364f1279\n"
    },
    {
      "commit": "ba62f6638bc78e91f90e48a63d183bff15be940f",
      "tree": "d50af6920371a003c5f60111c3502feab7da8ef1",
      "parents": [
        "2c3d9a443abdfd491b187e7c7660895f8bafb529",
        "d228d91d06f3e2ec20954b6bec2d1d1aa47690b7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 03 18:12:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 03 18:12:55 2018 +0000"
      },
      "message": "Merge \"Dexlayout: update help string for checksum.\""
    },
    {
      "commit": "c74d9cbd4c7b1b5b1a4c5a6bb34e9426336bbecc",
      "tree": "d1030d4bc5fb0986ef9f6e80d81b8a204c011ced",
      "parents": [
        "5ec6f36d4688e70c652882bff8c6a3c060ccc83e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:44:44 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 20:31:46 2018 -0700"
      },
      "message": "ART: Modernize counting-down loops\n\nPreparation for readability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I7a6f9636d5f4537020f99e8cf8560f7f6b6b7ba0\n"
    },
    {
      "commit": "6142e58efa7ccd012bb1f206edaedd48137f5f8a",
      "tree": "de7328e0a04c240aace1fc7ebe30a18fc0fa396a",
      "parents": [
        "4727396c867c6b4641f5bb0edb925d554379ae8e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 18 16:49:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Add redundant-void-arg check\n\nAdd modernize-redundant-void-arg.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I02e8702c237ce89c39880a65f15f21a56df8760d\n"
    },
    {
      "commit": "8351aac7bc2153cd2ad7247d467303019a76eac3",
      "tree": "0bcd742215805b88f08b71f8418e0de68dea1379",
      "parents": [
        "322c0891ebc1cf3e3b28d4cbb003b0e40506bc32"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 10 12:37:49 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 18 16:02:41 2018 -0700"
      },
      "message": "ART: Refactor for bool literals\n\nApply modernize-use-bool-literals.\n\nBug: 32619234\nTest: mmma art\nChange-Id: Ib9b36ca360af0f68ce89517a24b5d9fb49f23e58\n"
    },
    {
      "commit": "e5afbf335a8bc110ff7d4f86585a284c98a25a13",
      "tree": "7596a7b52e5f9a63b409969aba2805aaf012f199",
      "parents": [
        "7dca45b9677c16a54347cdc0d08bfa2bdd94b464"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 12 17:51:54 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 13 14:44:52 2018 -0700"
      },
      "message": "Refactor DecodeDebugLocalInfo\n\nRefactor the function to use a visitor instead of callback.\n\nTest: test-art-ghost\nBug: 112311591\nBug: 77709234\n\nChange-Id: I55385994952373b3fec4f9122400cf3c9d43da3b\n"
    },
    {
      "commit": "3e2e123239952c80e1b37431bf2efbbe07a41940",
      "tree": "153be0dafdbce55b5e5432cb10025b802a637402",
      "parents": [
        "68851b53e4152d3edaea977573af8bdc0bd23313"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 11 12:35:30 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 12 11:32:40 2018 -0700"
      },
      "message": "Refactor debug info position visiting\n\nMove logic to CodeItemDebugInfoAccessor, makes it easier to modify\nthe debug info format.\n\nTest: test-art-host\nBug: 112311591\nBug: 77709234\nChange-Id: Ice56a88951efa54dc07d88f2c228c01be4670e73\n"
    },
    {
      "commit": "cba17e81e71491d3994a1198a740b563a7ab1f57",
      "tree": "f11e57c00bedf9349b0a21a46b4896bdc9b5e4a7",
      "parents": [
        "e7c9164cb7b6f964000df8114d79e6fb544ca95c",
        "fa6a1b0a1d9d186a0ad9bb413a4e49f1ffd187d8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Sep 08 21:46:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Sep 08 21:46:00 2018 +0000"
      },
      "message": "Merge \"ART: Continue adding override annotations\""
    },
    {
      "commit": "d176e93d66df409e2eee5343efd26b35c73fb71b",
      "tree": "0c8bd5250f9c12330c2aa6129e73990cfc25dae9",
      "parents": [
        "ac9fa1811e0b7ab33d80df4476d5b09db058e939",
        "ec5ed06b59a3b85e7f98ffc50e0539e5a77d1ba1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 07 17:15:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 07 17:15:07 2018 +0000"
      },
      "message": "Merge \"ART: Refactor static include list\""
    },
    {
      "commit": "fa6a1b0a1d9d186a0ad9bb413a4e49f1ffd187d8",
      "tree": "6d3bef945030868d7e78162dc3f4f35a07ce410a",
      "parents": [
        "a0878aa9f4f4102e56a6381b28a8d7c38dec80b9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 08:11:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:13:50 2018 -0700"
      },
      "message": "ART: Continue adding override annotations\n\nUse Clang-tidy\u0027s modernize-use-override to add more annotations. Ignore\ninferred annotations on destructors.\n\nBug: 32619234\nTest: mmma art\nChange-Id: Ic432c928e398d44df9171e42db04ee19946e6887\n"
    },
    {
      "commit": "693eee9c7c9fe66ac709613f2480b92c25811f8e",
      "tree": "935ce6304cdcddfe0911d74f93ace10147047e83",
      "parents": [
        "e080222ba63946f57423df8ddc9dc33a3346f29b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 19:51:10 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:07:45 2018 -0700"
      },
      "message": "ART: Add Size() to CollectionMap\n\nAdd a Size() override. Make base function pure to avoid future errors.\nFixes clang-tidy\u0027s bugprone-virtual-near-miss.\n\nBug: 32619234\nTest: mmma art\nChange-Id: I4112ea4d652a39a6b18712fb649823f086dd5b38\n"
    },
    {
      "commit": "d228d91d06f3e2ec20954b6bec2d1d1aa47690b7",
      "tree": "d3d09cc36528a4ad93c019a151e547e25f13a0e1",
      "parents": [
        "9c568f10f68cdbeb285e41cb4538c06f5e90c1b2"
      ],
      "author": {
        "name": "Matthew Cary",
        "email": "mattcary@google.com",
        "time": "Fri Sep 07 11:09:39 2018 +0200"
      },
      "committer": {
        "name": "Matthew Cary",
        "email": "mattcary@google.com",
        "time": "Fri Sep 07 11:09:39 2018 +0200"
      },
      "message": "Dexlayout: update help string for checksum.\n\nThe -u flag to update the dex file checksum was missing from\nthe dexlayout project help string. No code was changed.\n\nTest: compiles, manual.\nChange-Id: I45c1c1a05c58e42c86df1da1ce95cb8cd5f8ce05\n"
    },
    {
      "commit": "ec5ed06b59a3b85e7f98ffc50e0539e5a77d1ba1",
      "tree": "c09b7debef2c19d2ea79488d9d3357b49020da26",
      "parents": [
        "9c568f10f68cdbeb285e41cb4538c06f5e90c1b2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 26 16:20:02 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 06 14:00:25 2018 -0700"
      },
      "message": "ART: Refactor static include list\n\nCreate default objects. This allows chaining the sets, and also\ncan separate between host and target.\n\nTest: mmma art\nChange-Id: I68a80068d442b20c6430e9e576df7f74375e7e49\n"
    },
    {
      "commit": "c09cd0513b860c4301ca7bd6a9065b583d102295",
      "tree": "1c7aa4ed2b9b5b1335829461e764c94565afb71d",
      "parents": [
        "40f8a74cba008af768316f0b5bfe9502174b6d02"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 23 16:36:36 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 11:50:53 2018 +0100"
      },
      "message": "Reserve boot image memory in one go.\n\nLoad boot image components into the reserved memory.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I214f947979bc0bbfc6df4312527504e90b88a01d\n"
    },
    {
      "commit": "4146840f4a88d7c4f44300758c942fd4d95db17a",
      "tree": "0fb437912c47ab5b5b9e9f9f099102129ba6a409",
      "parents": [
        "ecbb5701276dd5965d68fe825da31637ca62d8c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 29 11:39:00 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 29 14:48:55 2018 -0700"
      },
      "message": "Change dex naming for output directory\n\nWrite to Dex file names to match storage inside APK for -w option.\ndir/classes.dex\ndir/classes2.dex\n...\ndir/classesn.dex\n\nThis makes it easier to overwrite the Dex files in the APK.\n\nBug: 113059564\nTest: test-art-host\n\nChange-Id: Iadf1621402315887165813da4abf00d466f0f623\n"
    },
    {
      "commit": "36f7df52b1aeadd85c9f29e8b995c74a599a4e26",
      "tree": "59251ecd87c27d79e1eedc128452d500aaf8f5e4",
      "parents": [
        "213f895897c85bf98ebc65c8d8d0605d228ed3e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 28 17:59:53 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 28 17:59:53 2018 -0700"
      },
      "message": "Add dexlayout option for updating checksum\n\n-u causes dexlayout to update the Dex checksum.\n\nTest: manual\nBug: 113059564\nChange-Id: I915f1fa50b56255a972407ddb4e03492cc65e26c\n"
    },
    {
      "commit": "f73cacaae3d8f89327d8886b37792a849cabd9ac",
      "tree": "79047e31d512d065db47af7e68fa155c1f638f11",
      "parents": [
        "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 17:19:07 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:09:40 2018 +0100"
      },
      "message": "Remove superfluous \u0027virtual\u0027 specifiers in ART.\n\nRemove \u0027virtual\u0027 specifier on methods already bearing the \u0027override\u0027\nspecifier.\n\nTest: mmma art\nChange-Id: I114930969a5ca048d88de9ecd18e2c6403593e31\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "fe42d218cf8a3dcaa832651ea62e49ce7384c867",
      "tree": "cca4e8ed50410e965363ff7e776de7eda4ebea1a",
      "parents": [
        "d3678dc2531f95ced2d015b800ecd9018ce96c73"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Aug 24 14:01:14 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Aug 24 15:50:47 2018 +0100"
      },
      "message": "dexdump2: Remove conversion from dollar sign to dot\n\nThis was presumably added to render nested classes similar to how they\nare referred to in source, but since a dollar sign (\u0027$\u0027) is a valid\ncharacter in a class name and its use is growing thanks to annotation\nprocessors and D8/R8 it only resulted in very wrong names. If you are\nat the level where you can understand dexdump\u0027s output, you can handle\ndollar signs being present in nested class names.\n\nBefore:\n\n    [000234] -..Lambda.Lambda.fcyZxanqBZSHC_nf-noKh-e3bnY.\u003cclinit\u003e:()V\n        0000: new-instance v0,\n        L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY; // type@0000\n        0002: invoke-direct {v0},\n        L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY;.\u003cinit\u003e:()V // method@0001\n        0005: sput-object v0, L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY;.INSTANCE:L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY; // field@0000\n        0007: return-void\n\nAfter:\n\n    [000234] -$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY.\u003cclinit\u003e:()V\n        0000: new-instance v0, L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY; // type@0000\n        0002: invoke-direct {v0}, L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY;.\u003cinit\u003e:()V // method@0001\n        0005: sput-object v0, L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY;.INSTANCE:L-$$Lambda$Lambda$fcyZxanqBZSHC_nf-noKh-e3bnY; // field@0000\n        0007: return-void\n\nBug: 113152880\nTest: art/test/dexdump/run-all-tests\nTest: dalvik/dx/tests/run-all-tests\nChange-Id: I22a1d3db5b7e0fe6b6c77b5cf8f37e7254bd40f4\n"
    },
    {
      "commit": "8f75f7bdc9e72204ed4712670fd04e88f60e7f13",
      "tree": "69fb1725aa7f565713e6ab34633f3de72d515261",
      "parents": [
        "34be5e212b18f03a6cd3ec3b11cd05df49a4d32a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 06 23:38:48 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 07 08:38:47 2018 -0700"
      },
      "message": "Move veridex to ClassAccessor\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I38bfc8ca1050698a60807ae77eadeb04a5809579\n"
    },
    {
      "commit": "a34812c0801b8b991b5b5b1d0d5e5a4ccf2bf0ac",
      "tree": "7a45987265ef96b06bfb8d7761f7a83a16c340b5",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 17:10:43 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 18:03:24 2018 -0700"
      },
      "message": "Move dex_file_verifier_test and dexlayout to ClassAccessor\n\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I01d53eaf45d28fd762800c2716d6bf2dd3c9ad9e\n"
    },
    {
      "commit": "35d5b8a2c5d2fce03be59aa003c3bf3c1b481be0",
      "tree": "7665f6d1527be61af13c8ef53f10833dd4200cfd",
      "parents": [
        "b28683f43231e65860ecf91c96a8c0234542c019"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "message": "ART: Do not use std::\u003ccontainer\u003e::at().\n\nThese functions are specified as throwing std::out_of_range\nand we do not use exceptions.\n\nTest: m\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I67c365ed6d779c101a18b9f386c751c48ca76e16\n"
    },
    {
      "commit": "5774f57afc997ffe765c32199bd0d5e55d23005a",
      "tree": "5efdd0edb9c5a6d55c20f76c26fc7b330f014c87",
      "parents": [
        "7e56bd41cde4e489a11050d9e340bf8b5692d9e8",
        "bc802de2244ed9769d1ddf8841d7965a29493d9a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 21 15:28:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 21 15:28:05 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Fix some performance-X tidy\"\""
    },
    {
      "commit": "54159c6c6fe529a55ef3d15a3c8418362d5a43fb",
      "tree": "2ec461de8ec15383134f4c6e209f4b8a33854277",
      "parents": [
        "44217b253bf4e5990de7051129ecda34f94d7f25"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 20 14:30:08 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 21 13:46:50 2018 +0100"
      },
      "message": "Use HashSet\u003cstd::string\u003e instead of unordered_set\u003c\u003e.\n\nChange the default parameters for HashSet\u003cstd::string\u003e to\nallow passing StringPiece as a key, avoiding an unnecessary\nallocation. Use the HashSet\u003cstd::string\u003e instead of\nstd::unordered_set\u003cstd::string\u003e. Rename HashSet\u003c\u003e functions\nthat mirror std::unordered_multiset\u003c\u003e to lower-case.\n\nFix CompilerDriver::LoadImageClasses() to avoid using\ninvalidated iterator.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I7f8b82ee0b07befc5a0ee1c420b08a2068ad931e\n"
    },
    {
      "commit": "bc802de2244ed9769d1ddf8841d7965a29493d9a",
      "tree": "acac22c89c8cdedb65d6dc0657755851834500f7",
      "parents": [
        "35d4b9410c362685fdd8181483a6126dd3e20cdd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 17:24:11 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 17:25:25 2018 -0700"
      },
      "message": "Revert^2 \"ART: Fix some performance-X tidy\"\n\nThis reverts commit 6856214f2c849600bcb94cc6e84975ba8cb69920.\n\nFix lifetime issue in imgdiag.\n\nTest: mmma art\nTest: m test-art-target-gtest-imgdiag_test\nChange-Id: I919db6310c0713313340adfe66bcd75a1c5c236e\n"
    },
    {
      "commit": "6856214f2c849600bcb94cc6e84975ba8cb69920",
      "tree": "a103f54ec49fac8d5cd15661f5c2d0cb5dab32e5",
      "parents": [
        "89de444350fdbd7df4fb4d95bb71f00e6673b466"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 21:49:11 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 20 21:49:11 2018 +0000"
      },
      "message": "Revert \"ART: Fix some performance-X tidy\"\n\nThis reverts commit 89de444350fdbd7df4fb4d95bb71f00e6673b466.\n\nReason for revert: Seemingly breaks imgdiag_test on device.\n\nChange-Id: I46084ecb4205575381aafffd90a0f1a1126e8d2d\nTest: mmma art\n"
    },
    {
      "commit": "89de444350fdbd7df4fb4d95bb71f00e6673b466",
      "tree": "57fa7214c4059afcfd11aa35a81999b8558b91b8",
      "parents": [
        "e383d23918db4eede30c3d78589d4639de3ec446"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 18 13:33:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:11:21 2018 -0700"
      },
      "message": "ART: Fix some performance-X tidy\n\nFix performance-for-range-copy, performance-unnecessary-copy-initialization\nand performance-unnecessary-value-param issues.\n\nTest: mmma art\nTest: m test-art-host\nChange-Id: I43d8736fc541030a3c61f66aeee0b9c2f1d295f7\n"
    },
    {
      "commit": "dbf540399a2aaddad00b1233b80808c80dc0d443",
      "tree": "b5a1933b5edd1b998a815b22695f2591e8db072c",
      "parents": [
        "4f0e0b8a4161ec9217b0b3cbca5fa6d3a289cc6a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 18 14:47:01 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:09:45 2018 -0700"
      },
      "message": "ART: Fix clang-analyzer leak/memory warnings\n\nFix warnings, or make code more obvious to the analyzer.\n\n(The analysis itself is too expensive to force it on for all\nlocal builds.)\n\nTest: mmma art (with clang-analyzer-cplusplus.NewDeleteLeaks)\nChange-Id: Id3687eb6f3af3a0b4f2df1422bc6d83650517623\n"
    },
    {
      "commit": "2b5a38f8fbdecf9c82f06ec108c7ee7463bd8093",
      "tree": "51e3648106f2f74196f9476209a7a649e7885dcb",
      "parents": [
        "5f7c6a1fc35e04b75e1154620c5fd0ab8758e62c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jun 14 15:13:04 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jun 15 10:55:56 2018 -0700"
      },
      "message": "Refactor ownership in dex_ir\n\nRemove some unnecessary generality, consolidating and simplifying the\ninterface to Header and moving all the construction code out of dex_ir.\nThis makes item ownership exclusively controlled by the collections\nthemselves, preparing for in-place construction.\n\nBug: 33017139\nTest: make -j 40 test-art-host-gtest\nChange-Id: Ice461ae89ef9f8bed3350780e8dd6283bc6eca1b\n"
    },
    {
      "commit": "d83437cba0eaac9797def3c09f7812e25fdcd6ac",
      "tree": "e29156febe965efb57099b232d9b85342db39a41",
      "parents": [
        "a316f9129a698ccb995b035f8781f93c58981893"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jun 11 14:06:23 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jun 13 11:08:05 2018 -0700"
      },
      "message": "Use factory pattern for dex_ir objects\n\nIn preparation for memory improvements, make dex_ir API more friendly to\npre-allocated or in-place type allocation.\n\nBug: 33017139\nTest: make -j 50 test-art-host\nChange-Id: I09b67e279a04535b175433287ce98ecbdc37f7a3\n"
    },
    {
      "commit": "671af6c3f3858bb372fb4946b14c069c2d456a60",
      "tree": "41d0326309b5acb94566335c8825acdd70695427",
      "parents": [
        "df810b9c8d5013cd6f5799a75b6aaf0f3991210c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 17 11:00:35 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 17 11:00:35 2018 -0700"
      },
      "message": "Make dexlayout and profman independent of libart\n\nRemove the libart dependency from these two tools.  Dexdiag remains\ndependent because vdex_file.* is in runtime.  It could possibly be moved\nalso.\n\nBug: 78652467\nTest: make -j 40 checkbuild\n      make -j 40 test-art-host-gtest\n\nChange-Id: I68a62f8b2a2730067aee5ff5e0cf81acdca0d703\n"
    },
    {
      "commit": "1f010164bea4714e9f653c52e8948c5d5305040b",
      "tree": "e69b2c3f4d2645d4097655f8914325945fe5dbbd",
      "parents": [
        "a7d37cf735f05cfc3a3585a5c44eb65d8a279874"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 15 08:59:32 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed May 16 13:01:34 2018 -0700"
      },
      "message": "Move ArtDexFileLoader to libdexfile\n\nAdds a dependency from libdexfile on libartbase, but allows the use of\nMemMap loaders, etc.\n\nBug: 78652467\nTest: make -j 40 checkbuild\nChange-Id: I15cf33893ca9192050762f8350a3cc1e39f88dc5\n"
    },
    {
      "commit": "06d10a78506fae7e033795cda7b1d9d0e1f1fff5",
      "tree": "91f94a605395776710f3d14298613a803158f3aa",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 08:53:38 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 16:49:55 2018 +0100"
      },
      "message": "ART: Add dex::ProtoIndex\n\nTest: m -j32 test-art-host\nChange-Id: Ic2d2a7a43be1b8590b97cdf3729200b043ffc6a3\n"
    },
    {
      "commit": "818cb80ff7503f4ce46f05386209d0070b6b70b0",
      "tree": "b0e1bf92b900a8fba3d85553f96849d5fe8abd1f",
      "parents": [
        "2b80ed488c497393270c98f7a767d8495166db8e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 05:30:16 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 05:30:16 2018 +0000"
      },
      "message": "Revert \"Make dexlayout and profman build without libart\"\n\nThis reverts commit 2b80ed488c497393270c98f7a767d8495166db8e.\n\nBug: 78652467\n\nReason for revert: ASAN tests failing\n\nChange-Id: Id4bba2711d8b69c0a64e3e8eb335a18facab9fdd\n"
    },
    {
      "commit": "2b80ed488c497393270c98f7a767d8495166db8e",
      "tree": "e1c249285b2e441b56ec7faf06757f3fe7affde5",
      "parents": [
        "a6ce173839a1bca1811fca7d9a0a39efd720611d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue May 08 08:58:15 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu May 10 08:23:22 2018 -0700"
      },
      "message": "Make dexlayout and profman build without libart\n\nUse libprofile and libartbase to remove the dependencies on libart for\ndexlayout and profman.  dexdiag remains connected to libart because of\nvdex file APIs.\n\nBug: 78652467\nTest: make -j 40 test-art-host-gtest\nChange-Id: Ie4d58e7e75aa725a6d453a9d4c7fefd868aa7b2d\n"
    },
    {
      "commit": "82d046e7c9daad9b706cbec7df7025c5a4ef9163",
      "tree": "92b7deea052015dd64bea6fc72d76c67f69e0e5d",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 23 08:14:19 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 12:37:04 2018 -0700"
      },
      "message": "Add a profiling library\n\nMove profile_compilation_info to a separate library.  Another step\ntowards building many of our tools without libart[d].\n\nBug: 78459333\nTest: make -j 50 checkbuild\nChange-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44\n"
    },
    {
      "commit": "89b06a15b530acf78727700075d8b457e1cc4eb0",
      "tree": "0d4cc200d359f532cb1fc27f0d7e5cc3b4bf8ee7",
      "parents": [
        "9e363f65c1d85e601b0445b51fefc5156ec71fca",
        "30025095524e471ec347633e39f26ed0606bea65"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 26 09:00:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 26 09:00:58 2018 +0000"
      },
      "message": "Merge \"Pass the fd to OatFile::Setup to avoid selinux errors.\""
    },
    {
      "commit": "30025095524e471ec347633e39f26ed0606bea65",
      "tree": "533cbe1808445dcd4dd6d8b7dacc180fcc29b90a",
      "parents": [
        "cee49280366af9aa35e889e90d0ae0e90b453a22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 19 14:43:29 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 24 14:39:06 2018 +0100"
      },
      "message": "Pass the fd to OatFile::Setup to avoid selinux errors.\n\nbug: 77853712\nTest: test.py\nChange-Id: I069cda5296b561284d71b067924e1bc4a8562710\n"
    },
    {
      "commit": "42d5805b30b095eb1abd39d99ed71d9fa2b7c03b",
      "tree": "53373e5aa0f47ee4e9ebfff54f97e90c44a5b6cd",
      "parents": [
        "cee49280366af9aa35e889e90d0ae0e90b453a22"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Wed Apr 18 22:59:36 2018 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Thu Apr 19 06:05:14 2018 +0000"
      },
      "message": "Separate out PGO profile files per arch\n\nBug: http://b/78259283\n\nSpecify separate PGO profiles for AArch64/ARM and x86_64/x86.  This\nallows per-arch profile collection that exercises ART\u0027s code generation\nfor the corresponding 32-bit and 64-bit ABIs.\n\nTest: Build Sailfish and x86_64 targets and verify that corresponding\nprofile files are read.\n\nChange-Id: Iad3a657411676952de5ed446db4dd4e754ea9e11\n"
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    },
    {
      "commit": "c17b7d80652765750fa7f2baf236061014b23f93",
      "tree": "1be2a3330aab9d6b216bd90685e0133ce5bd597e",
      "parents": [
        "2a66809d28c9ee1cbabe52991dbf526095c96c04"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 14 14:00:04 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 15 09:27:08 2018 -0700"
      },
      "message": "Add owned section for CompactDex\n\nThe owned section is the part of the shared data section owned by\na given dex file. This enables efficiently attributing an offset to\na dex file.\n\nBug: 74443371\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I2de9a281e18b02a20c3dcf5f484eacb591220cdc\n"
    },
    {
      "commit": "281fee0dd44a4349fec38fd6f6348ca381c80218",
      "tree": "e82420586df1049df822cec0e33ac52df35e62e9",
      "parents": [
        "8ba5641ddc43fc13cdb0158bd9f3237c4a90a356"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 12:59:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 08 10:36:56 2018 -0800"
      },
      "message": "ART: Remove static libbase\n\nExcept for static binaries, do not include a static copy of libbase.\n\nBug: 34867873\nTest: mmma art\nChange-Id: I6ed37b45c01c9dac33c4fc3bb71ee416138c2cb8\n"
    },
    {
      "commit": "1f9df4ae66667d3c0b62caace7f2f4374e104159",
      "tree": "96b92f5b5c68f0ca64e62bf2ce74c0abe22901f1",
      "parents": [
        "45d857bad49223c9f981800dfea7914e95f397e7",
        "1d894d90634b3d685a5a1143dd84f0272b4a7dcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Mar 08 02:39:29 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 08 02:39:29 2018 +0000"
      },
      "message": "Merge \"Enable ThinLTO for dex2oat\""
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "2daa13448d5caeb7eb4f7fd3981c0d430264c7c3",
      "tree": "547222519fc7627a99eae914fbaa39eb294a82c6",
      "parents": [
        "b2f1edc3d1f162bd9007f10bc66009eac5b2daab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:19:28 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 22 10:37:31 2018 -0800"
      },
      "message": "Fix unquickening logic for quickened input dexes\n\nIn the case where an input dex is already quickened (i.e.\nobfuscation), do not attempt to unquicken it. This is done by\nswitching the quicken info table to the compact offset table (used by\ncdex debug infos).\n\nAdded test.\n\nPosssible to get a bit of extra savings by deleting the quicken info\nnum entries field.\n\nQuicken filter size regression average on golem: -0.14%.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest-dex2oat_test -j64\nChange-Id: I5534a7509b4c718a9b959fa43b82bde857e0b59e\n"
    },
    {
      "commit": "b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb",
      "tree": "724022162a4f3de021cebab32ee5ac67ec860f32",
      "parents": [
        "f13343eb8b2738e2812fd7bd9d5592f529e93c21"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:20:31 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 21 13:51:15 2018 -0800"
      },
      "message": "Remove duplication, split tests\n\nThe code move to libdexfile/dex/descriptors_names.cc apparently did not\nremove the original code from runtime/utils.cc.  Fix that duplication\nand all the header mentions needed.  Also, split the test files to go\nalong with the new locations for the code to be tested.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n      flash \u0026 boot marlin\n\nChange-Id: Ie734672c4bca2c647d8016291f910b5608674545\n"
    },
    {
      "commit": "5e3cfa295a44d4f1a0eb26134c6f866b27245a9f",
      "tree": "fa079fd6d865b1270a88248cd9919902ab387f46",
      "parents": [
        "1efb431b478bbae9d959fad6a58863a4c1b0b47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 16:53:37 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 20 18:17:21 2018 -0800"
      },
      "message": "Generalize CompactDexDebugInfo offset table\n\nRenamed the class to CompactOffsetTable.\n\nMotivation: Use this table for quicken info offsets too.\n\nBug: 72608794\nBug: 63756964\nTest: test-art-host-gtest\nChange-Id: Idcb5355d8a5e4354bc3694152a7270047bed9d0a\n"
    },
    {
      "commit": "1d894d90634b3d685a5a1143dd84f0272b4a7dcd",
      "tree": "aee159e79816473f774863638693639e673d762d",
      "parents": [
        "2b7e1c6d04930361bafbd4959966341fa7c4a097"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Jan 19 22:01:14 2018 -0800"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Fri Feb 16 21:20:46 2018 +0800"
      },
      "message": "Enable ThinLTO for dex2oat\n\nThis helps reducing binary size as well as improve performance of\ndex2oat.\n\nOn Marlin (lower clocked cores)\n  With PGO\n  dex2oat binary + libraries size:\n   - no-lto:   9.90MB\n   - thin-lto: 9.81MB\n\n  dex2oat run time for top 25 apps (with speed filter):\n    Average case: -2.83%\n    Best case   : -4.65%\n    Worst case  :  0.25%, likely noise\n\n  Without PGO\n  dex2oat binary + libraries size:\n   - no-lto:   9.67MB\n   - thin-lto: 9.60MB\n\n  dex2oat run time for top 25 apps (with speed filter):\n    Average case : -0.96%\n    Best case    : -2.30%\n    Worst case   :  0.52%, likely noise\n\nTest: Benchmark on Marlin (low-clock cores)\nBug: 62839002\nChange-Id: Iad39eae4c222b753dd2dab949a928151ea13e630\n"
    },
    {
      "commit": "fcbe15ce26930c0c4bb33998fc2abbe4f8770dbe",
      "tree": "6513a2eaf1251e93578916b5171dc42984de7da3",
      "parents": [
        "b40fa7c33075292beeb6840ac679ffd08fd1f719"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 15 09:41:13 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 15 15:15:13 2018 -0800"
      },
      "message": "Build debug library libdexfiled\n\nAdd a debug version of libdexfile for use when CHECKs, etc., are\nenabled.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: I263138611bcdde9dbc8f619bcb2a0a6d3a09fbf6\n"
    },
    {
      "commit": "05f90d133d288b524eaa9deacdc56e7d29ea9f99",
      "tree": "89153d3bccc0aba04423f5712fee09e768d5aa2c",
      "parents": [
        "0efe3243d4f1878e8220ff8bc469beee9ac90518"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 13:47:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 07 14:56:50 2018 -0800"
      },
      "message": "Avoid generating cdex for dex files with duplicate methods\n\nFor the cases where two different method have the same code item or\ndebug info, avoid generating cdex and write the input dex into the\noat file isntead.\n\nTest: test-art-host-gtest\nBug: 72997076\nBug: 72100771\nBug: 72100668\nBug: 63756964\n\nChange-Id: I5dfe2b47b2c908921c8421367536c2d950186ac6\n"
    },
    {
      "commit": "e1123402f14879643f722885b4748965451be1b2",
      "tree": "63c22592b312cfb66d8cb81ad28f6d297f705f12",
      "parents": [
        "abee76ef780877132cf82c84f42e8ab50e6cc1d1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Feb 01 02:46:18 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Feb 06 17:39:39 2018 -0800"
      },
      "message": "Make libdexfile tests independent of runtime\n\nRemove dependencies on common_runtime_test and related so that\nlibdexfile\u0027s tests can be run independently of the runtime directory.\n\nBug: 22322814\nTest: make -j 50 test-art-host-gtest\nChange-Id: If306c1995e87cbfc944e11fb13c927bc287014ad\n"
    },
    {
      "commit": "9827367cb7a5dd813995ade66def8d28befd50e5",
      "tree": "d1e1e74979a515779e8b82d9f9eb17409d5cf592",
      "parents": [
        "83784ca898f823e6f02c86996626b5e48e328d85"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 11:50:27 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 06 11:52:04 2018 +0000"
      },
      "message": "Fix failure in CodeItemOverrun on target\n\nUse unlink rather than exec /bin/rm to delete files.\n\nBug: b/72979892\nTest: m test-art-target-gtest-dexlayout_test64\nChange-Id: I91aa87fcf9a4fd91a26c1bb524ce2e8567ddf4c7\n"
    },
    {
      "commit": "83784ca898f823e6f02c86996626b5e48e328d85",
      "tree": "6e49bf5bdc66c959d820f02dc8c3908725ecdec8",
      "parents": [
        "540d4be4514b3d02e046d5faebd3cb55a8ea9eff",
        "a27af08ee0c5f307366be73363369cc1d95d6d4c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 06 01:16:13 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 06 01:16:13 2018 +0000"
      },
      "message": "Merge \"Handle code item overruns in cdex code item write\""
    },
    {
      "commit": "a27af08ee0c5f307366be73363369cc1d95d6d4c",
      "tree": "b419ec0515085f2a362da9e123f6531b4d1162b0",
      "parents": [
        "ca6f1c0cb7655e90237583c1b6b771d3c8aae95d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 03 16:12:23 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 05 14:30:15 2018 -0800"
      },
      "message": "Handle code item overruns in cdex code item write\n\nFor the case where code items overrun, use a safe iterator to not\ncrash.\n\nBug: 72315996\nBug: 63756964\nTest: test-art-host-gtest\n\nChange-Id: I2aa8d127aad09ed3c8e6c9f9cc71c4b5646a5307\n"
    },
    {
      "commit": "279e3a3499d208daf467a1690b111dfb06f3e96e",
      "tree": "74c7d6d860bea25aabae47dc0ca95bafb0571f8e",
      "parents": [
        "ca6f1c0cb7655e90237583c1b6b771d3c8aae95d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 18:17:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 05 13:38:20 2018 -0800"
      },
      "message": "Enable code item deduping\n\nDedupe code items if they have the same contents, this is safe\nbecause of the fixed quickening logic.\n\nRemoved duplicate code items in ManyMethods that caused the startup\nmethods section to be empty in dex2oat_test.\n\nTo avoid errors related to quickening and compilation of shared code\nitems, quickening is currently disabled for shared code items.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I7c62eb746785d787c5269effd396f7be4859d3a6\n"
    },
    {
      "commit": "0225f8e2939a9340cb7dcebfcfe7996a2bd9bce9",
      "tree": "fd32362dff4ecdc8ff8b0d800a1b46fb0d9d0104",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 08:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Jan 31 01:24:53 2018 -0800"
      },
      "message": "Revert \"Revert \"Make libdexfile build independent of runtime dir\"\"\n\nThis reverts commit 787784f9effb126b5d0d3dc97d544c4a477b5daf.\n\nReason for revert: Bot configuration issue.\n\nChange-Id: I6a10bb4a9571f89c7e4dd095f9157e830a44e2de\nBug: 22322814\nTest: make -j 50 checkbuild\n"
    },
    {
      "commit": "787784f9effb126b5d0d3dc97d544c4a477b5daf",
      "tree": "1ff6d9fd284a4dd2a337165dff20e71137997c9d",
      "parents": [
        "b40b7e73469339a6b667b4a2e2b8690112a74dc9"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 18:48:51 2018 +0000"
      },
      "message": "Revert \"Make libdexfile build independent of runtime dir\"\n\nThis reverts commit b40b7e73469339a6b667b4a2e2b8690112a74dc9.\n\nReason for revert: on device libdexfile.so missing\n\nChange-Id: I9bd61a98bef870400580e8c991cb061d3f57fa72\n"
    },
    {
      "commit": "b40b7e73469339a6b667b4a2e2b8690112a74dc9",
      "tree": "7e8a34d9c7894c4c946f674f19f0a0a512b95184",
      "parents": [
        "9690ad794b324ba54e936608881ac0f62538b97a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 25 17:11:07 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jan 30 01:17:58 2018 -0800"
      },
      "message": "Make libdexfile build independent of runtime dir\n\nRemove libdexfile\u0027s dependency on utils.cc and move utf.cc into\n/dex.  Remove libdexfile\u0027s constituent sources from libart and\nuse libdexfile wherever libart is. Also remove some ART-specific\ninterfaces.  Libdexfile\u0027s tests remain to be converted, plus\nmoving the files to a new directory peer to runtime/.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ifaf695216e4a0e43d3aa377984d933f7a2a243c2\n"
    },
    {
      "commit": "807b21b2364eee0770d1e24e5f34d71014afbac2",
      "tree": "5b505e6ae4a4cd67b3a4684f9cb7c2803440f6ca",
      "parents": [
        "7a5a3036f9d8f08871c1c6e03dfa25d3641593e2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 29 05:18:24 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 29 06:06:49 2018 -0800"
      },
      "message": "Clean up some compact dex comments\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: If8748db7a9e68b6a82656fd9ec8fd8072e92af97\n"
    },
    {
      "commit": "5e496145a53a02d8ba0fb3b4a65b024af9f290fd",
      "tree": "0e742b8a9bdf823f10d350e136c1c79f15cbfeda",
      "parents": [
        "26f927518fda8e334e2af2003056b44a9265d5a0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 27 13:11:14 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 27 17:52:40 2018 -0800"
      },
      "message": "Remove size return values for dex writer\n\nSince moving to streams, the return values are no longer required.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I42be181cfb30eb73274faeef3f1129bdabc84f44\n"
    },
    {
      "commit": "26f927518fda8e334e2af2003056b44a9265d5a0",
      "tree": "c4cb024261ef4d6da7c12c88cfe8e3ab8a16ef38",
      "parents": [
        "eaf09d10411c8b56f2b4b0c882eb63ef7d01ec0c",
        "221d9810aa8af1ceab4626620a81baf0fd8377d7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 27 03:31:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 27 03:31:17 2018 +0000"
      },
      "message": "Merge \"ART: Use libbase for logging in command-line tools\""
    },
    {
      "commit": "7517555480074dcbd5c6d9472d5a394ce0e88023",
      "tree": "8b9f74989f3e94d810ed99590e8c207a5dc551c4",
      "parents": [
        "bf9eedaac5a9723f022150d0f5fd58cb91779497"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 11:23:01 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 26 14:33:40 2018 -0800"
      },
      "message": "Add dexlayout class filtering\n\nFor fixed_up_dexfile, the returned dex only needs to contain a single\nclass. This CL adds filtering during IR creation to only contain that\nclass. This speeds up wifi tests from 25s to 15s on marlin.\n\nBug: 63756964\nBug: 72064989\nTest: mm test-art-host-gtest-dexlayout_test -j64\nChange-Id: I3648ac886b377d95e33e5b40a63a34c2a9dbde58\n"
    },
    {
      "commit": "4e046e211cb836c702429bf8af3499aa4ecf3a36",
      "tree": "aad5ea792cbb9ff573d7931f75a551a936c8b4ba",
      "parents": [
        "44720c6fb84f85bd7628a020ed1097e744f0b660"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 16:55:44 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 26 01:15:57 2018 +0000"
      },
      "message": "Fix container overflow for compact dex writer\n\nASAN detected a container overflow regarding string item\ndeduping. The problem was that Skip(1) did not ensure growth of the\nbacking buffer. This resulted in occasionally reading one byte past\nthe end. Also added ensure growth to Seek().\n\nTest: SANITIZE_HOST\u003daddress mma dump-oat-boot -k -j64\nBug: 63756964\nChange-Id: I5b91f9e6cca7ee37cc304517f4655ba8946b772d\n"
    },
    {
      "commit": "44720c6fb84f85bd7628a020ed1097e744f0b660",
      "tree": "e6a2d4af4dc64e45b1847ea3656894fad7c42e6c",
      "parents": [
        "3288ac58275f77d9b530bf21c0f4290540d3e831",
        "9b302bf57c9966dcac51582d83ea7606666c500b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 21:29:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 25 21:29:39 2018 +0000"
      },
      "message": "Merge \"Fix method handles using wrong section\""
    },
    {
      "commit": "9b302bf57c9966dcac51582d83ea7606666c500b",
      "tree": "032beea38c2c75dddec0fb19399791c8d3f25953",
      "parents": [
        "816ca4d083ae9c439be587a0192906fe1510a123"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:08:08 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 13:09:19 2018 -0800"
      },
      "message": "Fix method handles using wrong section\n\nFor compact dex, the method handles were using offsets relative to\ndata section instead of main section. Fixed this code and the map\nlist offset logic in InitializeSectionsFromMapList.\n\nTest: test/run-test  --always-clean --dex2oat-jobs 4 --host --prebuild --compact-dex-level fast --optimizing --no-relocate --runtime-option -Xcheck:jni 979-const-method-handle\nBug: 63756964\nChange-Id: I9e6ddfd77da99ae1aedef7591536be190ff60904\n"
    },
    {
      "commit": "b81ecadb57557ed8e3225ae6765e2c7537ce0dda",
      "tree": "9999e0bf45072ba1445619ec6d54b9e0a9b52e85",
      "parents": [
        "b7b2957f79a33fc15ee48ff6709e9b080a266b07"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 23 22:08:26 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 25 17:27:35 2018 +0000"
      },
      "message": "Add deduping for string data and debug infos\n\nAdd multidex deduping of string data and debug info data.\nCode items are still not deduped since they do not work well with\ndex2oat unloading.\n\nReduces dex size by average of 2.96% on golem compile benchmarks.\n\nTest: test-art-host\nBug: 63756964\n\nChange-Id: I3f358779820adcedebf72c2ad28c367926b72ceb\n"
    },
    {
      "commit": "c3a22aa19bbe35ff8447460b29e07d42937a39de",
      "tree": "9f795deb249eebcf573dfe07a98d70c1d52ce898",
      "parents": [
        "d3233abdf14f173bb99e3905e8543ffff845230e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 19 18:58:34 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 24 19:53:20 2018 -0800"
      },
      "message": "Add shared separate data section for compact dex\n\nAdded a shared dex data buffer for compact dex files, this buffer\nis referenced by all compact dex files in a vdex file. Repurposed\nthe existing data_off / data_size fields in the header.\n\nAfter the shared buffer is filled up, it is placed after the dex\nfiles in the oat writer and the dex file headers are fixed up to have\nthe correct offsets / sizes to the shared buffer.\n\nMotivation:\nMake it easy to deduplicate data across dexes.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I17855a0c78b20be3d323d12dedb9c695962be3ed\n"
    },
    {
      "commit": "e6b6ff89e3cac4e443e731fbcdd957e32c7bc189",
      "tree": "64a48abd2a97b1ece83b014fa02cd5c40b580eb4",
      "parents": [
        "49971eb50c0213b7506bdd29954a6a4423e6426a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 19 18:58:34 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 23 12:08:13 2018 -0800"
      },
      "message": "Revamp dexlayout writing functions\n\nAdded some stream abstractions to make it easier to split apart\nthe main part of the dex file compared to the data one.\n\nMoved to using a vector based stream instead of a mem_map one.\n\nMotivations:\nMake it easy to separate data into a separate stream for multidex data\ndeduping.\nRemove upper bounds on dex expansion that would SIGSEGV if the writer\nwent over the limit.\n\nBug: 72051652\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic622a4142b161566d149166a1767434ff4cc7fec\n"
    },
    {
      "commit": "221d9810aa8af1ceab4626620a81baf0fd8377d7",
      "tree": "ae8e10655b727bb7a79607d9778dab6aee29c2ab",
      "parents": [
        "8105dad6cb540f6521d25507ae3e70718bc7a264"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 22 17:48:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 22 17:48:56 2018 -0800"
      },
      "message": "ART: Use libbase for logging in command-line tools\n\nUse LOG for logging, and StderrLogger to redirect all logging to\nthe terminal.\n\nThis only applies to tools used only on the command-line.\n\nTest: m test-art-host\nChange-Id: Ia3a6363a06c6a849eb1068213962d686c4495e29\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": "5c362202a6c82fff6b7052a53e6fe13e8fc9ad08",
      "tree": "2b28942d8ca483f203ed4227806e03c72f13062c",
      "parents": [
        "f147a3f896e0726e3a4d47e7092e0cc6930c559e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 17 14:52:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 17 14:53:27 2018 -0800"
      },
      "message": "Add a way to specify compact dex level for dexlayout\n\nThe option is \u0027-x\u0027, which supports \"fast\" and \"none\" compact dex\ngeneration. The default is \"none\".\n\nTest: dexlayout -w out_dir -x fast classes.dex\nBug: 63756964\n\nChange-Id: I77125d5148974d24a0808f80e2400f77f8b57a76\n"
    },
    {
      "commit": "66c9df1ed77f9da986dcf87f6b9bc1a2e86c3385",
      "tree": "b4dbd3e9be729b7dc2e305d44d608379dddc701b",
      "parents": [
        "34554c9a6aadd66845a25d1b23a64759f6692e32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 14:45:20 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 16:24:41 2018 -0800"
      },
      "message": "Add logic for deduplicating in dexlayout\n\nAdded logic for dedeplicating blobs, this is only used for code items\nin compact dex for now. This currently provides 0.74% code size\nreduction on golem\n\nDisabled for now since quickening is fragile and does not play well\nwith deduped code items currently.\n\nFuture work is to fix quickening and dedupe after quickening to get\nthe most code size savings.\n\nTest: test-art-host-gtest\nBug: 63756964\n\nChange-Id: Iec770d9c1f5171288aca8329a6ca6992375101bc\n"
    },
    {
      "commit": "8740c66cbfbeb3b7f306279c843650c3b18f2dca",
      "tree": "f6c095c184fdf3e5fb2f243acdc818ce20e928a5",
      "parents": [
        "dcbe96b23b8be48d4cce799caf5a9a207b137f06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 14:50:02 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 11:24:02 2018 -0800"
      },
      "message": "Use efficient encoding for compact dex code item fields\n\nUse a compact format for compact dex code items. In the common case,\nthere are only 4 bytes worth of fields.\n\nThis is accomplished by shrining the fields and adding an optional\npreheader before each code item that describes fields that don\u0027t fit\nin the fast path case. The preheader may use up to 12 extra bytes.\nExperiments showed that the preheader is only non empty for ~1% of\ncode items.\n\nCompactDex code item:\n0-12 bytes: Optional preheader\n\u003cCode item pointer\u003e\n4 bits: register size\n4 bits: ins size\n4 bits: outs size\n4 bits: tries size\n11 bits: num code item units\n5 bits: preheader flags\n[Dex Instructions]\n\nStandard dex code item:\nSee: https://source.android.com/devices/tech/dalvik/dex-format\n\u003cCode item pointer\u003e\n16 bits: register size\n16 bits: ins size\n16 bits: outs size\n16 bits: tries size\n32 bits: num code item units\n[Dex Instructions]\n\nAlso change code item alignment to be 2 byte aligned for code items\nthat don\u0027t have payload instructions that require 4 byte alignments.\n\nResults (on golem).\nThe CL reduces vdex size by an average of 4.3%. Interpreter performance\nis 0.3-1% slower, but may be noise.\n\nTest: test-art-host\n\nBug: 63756964\n\nChange-Id: I836fd098063dd1573a3dfb6ac465a6d33d2cb2c9\n"
    },
    {
      "commit": "1557778b03b02b589283100ee8de821692b88813",
      "tree": "701ee8ebc00d919693cd29b913315076623195a9",
      "parents": [
        "6d4c343ee5db18f039aeb3e07ff8d3c1fd37c3a0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 09:43:24 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 16 09:49:47 2018 -0800"
      },
      "message": "Add more extra space for dexlayout writing\n\nTemporary fix to prevent aborts that can happen when converting very\nsmall dex files to compact dex. Fixes a broken build.\n\nTest: make\nBug: 63756964\n\nChange-Id: I8fce5ebd6d6659d740b100890c825a1899575c31\n"
    },
    {
      "commit": "8892c6bd9235e7ae697039c901aaeea1597a7473",
      "tree": "fa10893a270bad91d3503a761f140cbe9c97a74c",
      "parents": [
        "210531f8775c89feb90d430cd5b6026b4cf8ef89"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 15:10:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:47 2018 +0000"
      },
      "message": "Move debug info offsets into a side table\n\nAdd a compact side table for figuring out the debug info offsets\nfor a given method index. This reduces dex size by ~1.2%.\n\nThe debug table is keyed by method index and has leb encoded\noffsets for the offsets. This means the table is smaller if debug\ninfos are encoded by method index order.\n\nTo prevent expansion for method indicies without debug info, there\nis a bitmap that specifies if a method index has a debug info offset.\n\nMotivation: Reduce code item size and allow more deduping in the\nfuture.\n\nTest: test-art-host\nBug: 63756964\n\nChange-Id: Ib983e85c1727f58c97676bde275f4a9756314da0\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": "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": "21cf2581844c478db3627d3e0259c205bce76ae7",
      "tree": "f74e21fe818dfe4fe40db8b774751b1a8aeaf628",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 17:09:48 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 09 09:26:09 2018 -0800"
      },
      "message": "Convert to StandardDex in fixup_dex_dex_file\n\nIn fixup_dex_file, run dexlayout to convert compact dex back to\nstandard dex since the output is supposed to be standard dex.\n\nFixed a bug in dexlayout where conversion from compact dex -\u003e\nstandard dex was not supported becuase the dex header was always\npreserved.\n\nTest: test/testrunner/testrunner.py  --host ---redefine-stress --compact-dex-level fast\nBug: 63756964\n\nChange-Id: Id13e8593458213e7040d053c35e8914404ae5381\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": "6238c8331bf89ce35a377c6475034243a0791f28",
      "tree": "7de5c1baa9bfe88100b73ca055e7fbf4895ba4d5",
      "parents": [
        "a821bb1a71637dbd2e251795fce26f5f6f937299"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 09:55:13 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 15:25:47 2018 -0800"
      },
      "message": "Remove DexFile direct accesses to CodeItem\n\nMotivation: StandardDexFile and CompactDexFile should be able to a\nhave different layout for code items.\n\nAlso addressed comments from a previous CL.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I5ea7a853b8095f68b4443ded0f599f2ac5efbd3a\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": "f6e31474096a3c25b2d0c872fc120d7479b62367",
      "tree": "72d8cee843375af8b8c8c7919ae930c9e5df2bfd",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 28 13:32:08 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 11:41:47 2018 -0800"
      },
      "message": "Fix default method verifier check for compact dex\n\nAdd a feature flag and mark if the compact dex file was\ngenerated from a dex file that supported default methods or not. This\nis done to maintain the existing verifier behavior differences for\ndex files that do and don\u0027t support default methods.\n\nFixed callers to use a virtual function instead of always checking\nthe dex file version.\n\nRe-enabled run-test 975.\n\nBug: 70930171\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I46ac5d3cde0d0c9f41cbc68cccaf954b531e0edf\n"
    },
    {
      "commit": "dc578c7e47b2db623b382932bfe4dbc6dce41aa4",
      "tree": "409e6dc0c338bf75c1ce55acfae91fe86ef3028e",
      "parents": [
        "1d32a16f93d8bb479523fd237277ecbbff5bf1f4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 11:51:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 27 13:24:11 2017 -0800"
      },
      "message": "Move dex exception helpers to their own file and use dex accessor\n\nAlso change the input argument to be a code item accessor\ninstead of a code item pointer. This removes the dependency on\nthe code item layout.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: If75a168d0b5a77d08fa3c6ba38d00705158911db\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "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": "d13126d1ba8f65e483cd2e9dd18e60c9a0992c6e",
      "tree": "4f1189a912bb56bb1adb01219cf8e27b5442ef83",
      "parents": [
        "7f3b60825f6cfe20359b389708b9e98e6deb9924",
        "219cb9021fa74af7773066ffb8fc77ac85f3d0de"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 10:20:50 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 11 10:20:50 2017 +0000"
      },
      "message": "Merge \"Reduce memory allocations in dexlayout\u0027s CodeFixups.\""
    },
    {
      "commit": "219cb9021fa74af7773066ffb8fc77ac85f3d0de",
      "tree": "2ecee11a4ad831c0f9f407e9a1240c5534b888e1",
      "parents": [
        "4388fb213ec746ee18a6bea38ee894f8c19990b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 07 16:20:39 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 08 11:08:54 2017 +0000"
      },
      "message": "Reduce memory allocations in dexlayout\u0027s CodeFixups.\n\nUsing heaptrack for the services.odex compilation of\naosp_taimen-userdebug:\n  - before: calls to allocation functions: 5032880\n  - after: calls to allocation functions: 4645378\n\nTest: Rely on TreeHugger\nBug: 70331349\nChange-Id: I477d5a84e0bf22994ce3de9fe56525de0b498801\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": "58cc1cb66c1a96ffba4a314edb2c5b4e8b235d5b",
      "tree": "ed00c90ab564c54ae4f09a4acbc5f3ffa65b9e71",
      "parents": [
        "65e0432cdaf3ee170045b21943c24eae5d6a0357"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 20 13:27:29 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 23 10:44:47 2017 +0000"
      },
      "message": "Pass the debug_info_offset explicitly.\n\nIn order to use debug_info_offset for encoding implementation details,\nrewrite all indirect users of it to fetch it before calling DexFile\nmethods.\n\nThis allows keeping the DexFile interface clean of runtime\nconsiderations.\n\nTest: test.py\nChange-Id: I4591e0039b5f822f4409aae411071ecbe97082b1\n"
    },
    {
      "commit": "fe9185aa7635ad4885a8f158f7a8feb770f08d7e",
      "tree": "87c5c2d37d823a516b9d68d53557628d81e40795",
      "parents": [
        "6f99acac2e1d60dfb1ed45ce69ec5a542847687e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 21 19:01:10 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 21 19:01:10 2017 -0800"
      },
      "message": "Disable LinkData test for target\n\nSeems to be failing on the target, disable for now until we\nfigure out why this is the case.\n\nBug: 69561363\nTest: make\nChange-Id: I940055a8576164af5c3a1678d14106595ca540cb\n"
    },
    {
      "commit": "2f36d2fdf277e2579e55cd3f54c1683c1b1a84bf",
      "tree": "58bfa3f06e9ab607dd542c83ec0e2088154097a0",
      "parents": [
        "e6779fde5a3c0a8bb484a61398da439a37d25b92"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 15:45:25 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 20 17:10:00 2017 -0800"
      },
      "message": "Write link data for dexlayout\n\nInstead of not writing out the link data and leaving an invalid\nlink_offset, write it out. Fixes dex verifier failures for a few\nAPKs.\n\nAdded test.\n\nTest: test-art-host\nBug: 69561363\n\nChange-Id: Iec1c331f74f9fd58658d4c13465a3bcb6295ce24\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": "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": "693bfbfce9867f19573d352bd754c81c2f0f91a4",
      "tree": "3b5880a4073869fc34d258b0778350a7907d08f8",
      "parents": [
        "4720046dfa1c3f396ac7dbcd3fe6179c1230bed1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 10 12:23:31 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 10 12:25:30 2017 -0800"
      },
      "message": "ART: Fix test dependencies and code\n\nLet profman target test correctly depend on profmand.\n\nCreate a debug version of dexlayout to be used in dexlayout_test.\nFix a bug in ProfileCompilationInfo referring to a nonexisting\nelement.\n\nTest: m test-art-host\nChange-Id: If2220f26c37c25a600399b2637f081c62cae9718\n"
    },
    {
      "commit": "f95a75e83782eb2bd6d778db516ad66388542517",
      "tree": "a4c9d4628a05284699990bbd374497e7b0f01da7",
      "parents": [
        "f404dda8a48f2fac24ca3525257db7bc9157ba61"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 03 15:25:52 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 11:51:45 2017 -0800"
      },
      "message": "Refactor compact dex writing\n\nRefactor compact dex writing into compact_dex_writer.cc, change\ndexlayout writing logic to use the header structs instead of having\nan array with indicies.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I58879aefc1672c965789ee539450986c9d830c82\n"
    }
  ],
  "next": "5f317039d87d74f25d3b0a442072557086742d17"
}
