)]}'
{
  "log": [
    {
      "commit": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "20c765f645fa9be77e045463c5064d41211a2815",
      "tree": "dcb9dfb6bf5363d1e933589f22339dc999b96703",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Oct 27 21:45:15 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Oct 28 20:00:03 2018 +0000"
      },
      "message": "Revert^4: Add dex item for hiddenapi flags\n\nMove hiddenapi access flags to own data section so as to:\n(a) increase amount of information stored per method/field\n(b) use encoding which can be supported long-term.\n\nThe dex item is implemented as:\n - array of offsets indexed by class def index\n - streams of uleb-128 encoded flags.\nOffsets in array point to the beginning of the flags stream\nfor the given class def. Flags are encoded in the same order\nas fields and methods are encoded in class data. Zero offset\nmeans that the class either does not have class data, or all\nof its flags are zero.\n\nThe patch updates:\n(a) libdexfile with data structure declarations and accessor\n    methods,\n(b) hiddenapi tool to create the new item from hiddenapi lists\n    and insert it into the given dex file,\n(c) dexlayout to copy the flags into compact dex,\n(d) dex file verifier to verify the item.\nIt also removes skipping of verification for boot class path\ndex files as those now pass DexFileVerifier, and removes the\nneed for removing the flags for JVMTI.\n\nThe size increase is 450 KB.\n\nThis reverts commit d33d318685ec4a1c9e7995c914c104ab6487513b.\n\nChange-Id: Id00e0efb38ee1eab8d7ed5c645a7778b6b94b849\nTest: phone boots\nTest: m test-art\n"
    },
    {
      "commit": "d33d318685ec4a1c9e7995c914c104ab6487513b",
      "tree": "3bb8a93f499ac537d445e90533598571f3d2d120",
      "parents": [
        "fe3a979f6214e2ea94a9aed4c573c6a6f64c7096"
      ],
      "author": {
        "name": "Luman Qu",
        "email": "quluman@google.com",
        "time": "Fri Oct 26 16:53:25 2018 +0000"
      },
      "committer": {
        "name": "Luman Qu",
        "email": "quluman@google.com",
        "time": "Fri Oct 26 16:53:25 2018 +0000"
      },
      "message": "Revert \"Revert^2: Add dex item for hiddenapi flags\"\n\nThis reverts commit fe3a979f6214e2ea94a9aed4c573c6a6f64c7096.\n\nReason for revert: Caught by droidcop https://b.corp.google.com/issues/118481351\n\nChange-Id: I17cc3586c9ae3b49839633d9543edce2937c388d\n"
    },
    {
      "commit": "fe3a979f6214e2ea94a9aed4c573c6a6f64c7096",
      "tree": "b31c1748dcd30a5bf76c2186b4c0124fb18b9dd6",
      "parents": [
        "d9a0437b0d6cb1438bf21284a2502cbfe293db06"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 25 17:24:38 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 25 17:25:17 2018 +0000"
      },
      "message": "Revert^2: Add dex item for hiddenapi flags\n\nMove hiddenapi access flags to own data section so as to:\n(a) increase amount of information stored per method/field\n(b) use encoding which can be supported long-term.\n\nThe dex item is implemented as:\n - array of offsets indexed by class def index\n - streams of uleb-128 encoded flags.\nOffsets in array point to the beginning of the flags stream\nfor the given class def. Flags are encoded in the same order\nas fields and methods are encoded in class data. Zero offset\nmeans that the class either does not have class data, or all\nof its flags are zero.\n\nThe patch updates:\n(a) libdexfile with data structure declarations and accessor\n    methods,\n(b) hiddenapi tool to create the new item from hiddenapi lists\n    and insert it into the given dex file,\n(c) dexlayout to copy the flags into compact dex,\n(d) dex file verifier to verify the item.\nIt also removes skipping of verification for boot class path\ndex files as those now pass DexFileVerifier, and removes the\nneed for removing the flags for JVMTI.\n\nThe size increase is 450 KB.\n\nThis reverts commit d9a0437b0d6cb1438bf21284a2502cbfe293db06.\n\nTest: phone boots\nTest: m test-art\nChange-Id: I224bf1b587529f36ea00a666680c4e4c8ca16a42\n"
    },
    {
      "commit": "d9a0437b0d6cb1438bf21284a2502cbfe293db06",
      "tree": "3bb8a93f499ac537d445e90533598571f3d2d120",
      "parents": [
        "fd2aa2bf72563870c9261f248f992a20ac4837a8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 24 12:34:06 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 24 12:37:49 2018 +0000"
      },
      "message": "Revert \"Add dex item for hiddenapi flags\"\n\nThis reverts commit 0dbc363f32d075017e1c4fb5e17715e3f12d0157.\n\nReason for revert: marlin running out of space\n\nChange-Id: I80218af6408812b639b7c807bf8cb2a1d5239d94\n"
    },
    {
      "commit": "cd98cde0642e664ae2396555c5d90c0a44c77ba7",
      "tree": "69790ce15b0d5c213669cab12108b8f33f2f6f9f",
      "parents": [
        "349d1377aa300512177729e7988d824b67638552",
        "0dbc363f32d075017e1c4fb5e17715e3f12d0157"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 24 09:19:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 24 09:19:00 2018 +0000"
      },
      "message": "Merge \"Add dex item for hiddenapi flags\""
    },
    {
      "commit": "0dbc363f32d075017e1c4fb5e17715e3f12d0157",
      "tree": "950dfed748f63863db6b95d7b854940171b544c6",
      "parents": [
        "62ada4cd2c9a7ef5d1ab4c538d660f8a6a7f7571"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 10 09:14:30 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Oct 23 14:51:01 2018 +0100"
      },
      "message": "Add dex item for hiddenapi flags\n\nMove hiddenapi access flags to own data section so as to:\n(a) increase amount of information stored per method/field\n(b) use encoding which can be supported long-term.\n\nThe dex item is implemented as:\n - array of offsets indexed by class def index\n - streams of uleb-128 encoded flags.\nOffsets in array point to the beginning of the flags stream\nfor the given class def. Flags are encoded in the same order\nas fields and methods are encoded in class data. Zero offset\nmeans that the class either does not have class data, or all\nof its flags are zero.\n\nThe patch updates:\n(a) libdexfile with data structure declarations and accessor\n    methods,\n(b) hiddenapi tool to create the new item from hiddenapi lists\n    and insert it into the given dex file,\n(c) dexlayout to copy the flags into compact dex,\n(d) dex file verifier to verify the item.\nIt also removes skipping of verification for boot class path\ndex files as those now pass DexFileVerifier, and removes the\nneed for removing the flags for JVMTI.\n\nThe size increase is 450 KB.\n\nTest: phone boots\nTest: m test-art\nChange-Id: Idec301db540cf164fccc97136d1df4abb8f758bd\n"
    },
    {
      "commit": "dfcd82c09e8ce4562ed39e006d4b1c8163b4e25e",
      "tree": "d9bfd3e043a95b3c8e302769cef23c13a89df3c5",
      "parents": [
        "4f570a43146c1456071f2ffe6590ab96e723051a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 20:22:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 13:06:33 2018 -0700"
      },
      "message": "ART: Fix android-cloexec warnings\n\nUse the DupCloexec helper wherever possible. Add O_CLOEXEC to open\nand fopen calls.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I0afb1beea53ab8f68ab85d1762aff999903060fe\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": "c55bb390d88b8eb62a50932f7f9b47c2a3733f16",
      "tree": "ec2e74f3f8404dffcb9bfde4e7ffa3416a35543d",
      "parents": [
        "89468aeaa6a67ae4025b30d427391186306d6522"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 00:02:02 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 18:37:12 2018 -0700"
      },
      "message": "Revert^2 \"ART: Refactor typedef to using\"\n\nThis reverts commit ee07743e03042c2ca36e0c9513847a9e7d2509f1.\n\nReason for revert: fixed attributes.\n\nBug: 32619234\nTest: m test-art-host\nTest: m test-art-target-gtest-unstarted_runtime_test\nChange-Id: I6f0a775adfdf6ecd132b470f7c5446e949872e20\n"
    },
    {
      "commit": "ee07743e03042c2ca36e0c9513847a9e7d2509f1",
      "tree": "66867d7443a3798f6d882ef2715ddeb7baf3e771",
      "parents": [
        "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "message": "Revert \"ART: Refactor typedef to using\"\n\nThis reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd.\n\nReason for revert: Attributes on the wrong side.\n\nBug: 32619234\nChange-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b\n"
    },
    {
      "commit": "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd",
      "tree": "7e55557e118eb5fffe03ad3456e00d8469a36232",
      "parents": [
        "70dfb6983492aff1c52cc1b52044258aef51f47f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 10:58:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Refactor typedef to using\n\nAdd clang-tidy\u0027s modernize-use-using.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If50d37b5152af4270784e3cde7951292a9e19033\n"
    },
    {
      "commit": "70dfb6983492aff1c52cc1b52044258aef51f47f",
      "tree": "66867d7443a3798f6d882ef2715ddeb7baf3e771",
      "parents": [
        "6142e58efa7ccd012bb1f206edaedd48137f5f8a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 18 16:50:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Fix dexdump \u0026 dexlist\n\nUse art_defaults for these tools. Fix up tidy and non-tidy errors.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I0f40f91cd7ec8584002609839dec6a3e74926a22\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": "4ac9ade09d796ce4fc866a02d05c1fba64578f78",
      "tree": "4b6894e379bb224dc86141acf573949c37af24c4",
      "parents": [
        "c19adea473a8415adcbdeb8eedb1245d4ae92351"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 24 10:27:21 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 24 17:42:44 2018 -0700"
      },
      "message": "Move dexdump, dexlist, openjdkjvmti to ClassAccessor\n\nTest: test-art-host\nBug: 79758018\n\nChange-Id: Iecdcf81b9dd2fa5cd938579847d4934467abf813\n"
    },
    {
      "commit": "e166facea335b9adcff7717d6d30150a41718668",
      "tree": "fee3bff71f8820141c6f58b9e733677c9c0e906e",
      "parents": [
        "6743f1ebd4a1a266896541acb5c4dde1f78e708f"
      ],
      "author": {
        "name": "Dario Freni",
        "email": "dariofreni@google.com",
        "time": "Mon Jul 16 11:08:03 2018 +0100"
      },
      "committer": {
        "name": "Dario Freni",
        "email": "dariofreni@google.com",
        "time": "Thu Jul 19 16:12:13 2018 +0100"
      },
      "message": "Add a public error code to DexFileLoader::OpenAll.\n\nSome of the APKs in the build system don\u0027t contain any dex file (e.g.\nthey are only there to test that PackageManager can install them).\nUsers of this library (e.g. veridex) can now verify the error condition\nto determine whether they should just skip the file or propagate the\nerror.\n\nTest: m test-art-host-gtest; ran veridex on an APK without classes.dex\nBug: 110073830\nBug: 78924201\nChange-Id: I65b6a5aa8abb404a77b90352dd066fb0dff36955\n"
    },
    {
      "commit": "999646d7f3b2ced25a995c020d19a55caf3c18d5",
      "tree": "870d9d5d33bca66f4891f66a0b53505508ebe009",
      "parents": [
        "0694a5527862fc76056458622759976fa41d4da6"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Feb 16 10:22:33 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Feb 16 14:45:23 2018 -0800"
      },
      "message": "Dex header cleanup and windows simplification\n\nRemove a few unnecessary inclusions, move one missed header to\nlibdexfile.  Also use android-base utilities for file loading in\ndexdump2 and dexlist.  (The utilities seem to work on Windows, where\nmmap did not.)\n\nBug: 22322814\nTest: make -j 50 test-art-host-gtest\nChange-Id: I6e6de1895921f664a2280451b01e367649436200\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": "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": "5a1f6294919206d117662925ff2ad7cd0802721d",
      "tree": "3414edb24e5a834207551a3b172d37552cbe2a55",
      "parents": [
        "5577295109a8af9f5bd31430670e5cbbc1a1e079"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 19 11:08:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jan 22 20:50:17 2018 +0000"
      },
      "message": "Build dexdump2 and dexlist without libart\n\nFinally, flesh out libdexfile enough that it can replace libart for use\nin dexdump2.\n\nBug: 22322814\nTest: make -j 50 dexdump2 dexlist\n      dexdump2 -d fb/base.apk\n      dexlist fb/base.apk\n\nChange-Id: Ibf9a1cd642cd473eea0b2208d72b4768aaa17f02\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": "210531f8775c89feb90d430cd5b6026b4cf8ef89",
      "tree": "3c23fffcc0d1d7876f15f64672e0de98b1f051ca",
      "parents": [
        "3c9e0f69b04b614c44448e66e15c6f8a78da4b2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 12 10:15:51 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Jan 13 01:40:03 2018 +0000"
      },
      "message": "Revert \"Revert \"Move quickening info logic to its own table\"\"\n\nBug: 71605148\nBug: 63756964\n\nTest: test-art-target on angler\n\nThis reverts commit 6716941120ae9f47ba1b8ef8e79820c4b5640350.\n\nChange-Id: Ic01ea4e8bb2c1de761fab354c5bbe27290538631\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "6716941120ae9f47ba1b8ef8e79820c4b5640350",
      "tree": "76dd7d32703505d4ab44c0b55a7ecaf3ff66a94e",
      "parents": [
        "7a26f948204377130be7b738d70d7365c86a804b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 12 09:06:14 2018 +0000"
      },
      "message": "Revert \"Move quickening info logic to its own table\"\n\nBug: 71605148\nBug: 63756964\n\nSeems to fail on armv7.\n\nThis reverts commit f5245188d9c61f6b90eb30cca0875fbdcc493b15.\n\nChange-Id: I37786c04a8260ae3ec4a2cd73710126783c3ae7e\n"
    },
    {
      "commit": "7a26f948204377130be7b738d70d7365c86a804b",
      "tree": "dd3ab45b73127fdcbcdca64bbac484bfe2c0a8cd",
      "parents": [
        "29504326da13831fa3060ac507927c4d76aa556a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 04 18:23:55 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 11 10:58:22 2018 -0800"
      },
      "message": "Move quickening info logic to its own table\n\nAdded a table that is indexed by dex method index. To prevent size\noverhead, there is only one slot for each 16 method indices. This\nmeans there is up to 15 loop iterations to get the quickening info\nfor a method. The quickening infos are now prefixed by a leb\nencoded length. This allows methods that aren\u0027t quickened to only\nhave 1.25 bytes of space overhead.\n\nThe value was picked arbitrarily, there is little advantage to\nincreasing the value since the table only takes 1 byte per 4 method\nindices currently. JIT benchmarks do not regress with the change.\n\nThere is a net space saving from removing 8 bytes from each\nquickening info since most scenarios have more quickened methods than\ncompiled methods.\n\nFor getting quick access to the table, a 4 byte preheader was added\nto each dex in the vdex file\n\nRemoved logic that stored the quickening info in the CodeItem\ndebug_info_offset field.\n\nThe change adds a small quicken table for each method index, this\nmeans that filters that don\u0027t quicken will have a slight increase in\nsize. The worst case scenario is compiling all the methods, this\nresults in 0.3% larger vdex for this case. The change also disables\ndeduping since the quicken infos need to be in dex method index\norder.\n\nFor filters that don\u0027t compile most methods like quicken and\nspeed-profile, there is space savings. For quicken, the vdex is 2%\nsmaller.\n\nBug: 71605148\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I89cb679538811369c36b6ac8c40ea93135f813cd\n"
    },
    {
      "commit": "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": "641a3afee3e6879b71ae9fe47b92680580901a49",
      "tree": "64804a4d5820131e487e7c34fa5abdccc94b29b2",
      "parents": [
        "35e9c147cb1a45f36a63964d677f26c44f02990f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:42:58 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 19 21:22:44 2017 +0000"
      },
      "message": "Add code_item_accessors-no_art-inl and use it in dexlist, dexdump\n\nAdded new helper to prevent inclusion of ART code. Removed accesses to\ndex code.\n\nBug: 63756964\nBug: 70852830\nTest: test-art-host-gtest -j40\nTest: mm test-art-host-dexdump -j40\n\nChange-Id: Ie0220df464a5cc2b81c0ee3e0483cdf2de003092\n"
    },
    {
      "commit": "702f6f276d2b81ae27bce51c2e78b04aa45a5796",
      "tree": "84e1e493074878447cf1fe01ece97b9eff8b5f52",
      "parents": [
        "6f05cca7f37eba9f831c811af044bfe735acb8cd",
        "31f4c9f86522061d682fd0e2c6003043cec496dc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 12 21:37:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 12 21:37:59 2017 +0000"
      },
      "message": "Merge \"Add CodeItemDebugInfoAccessor\""
    },
    {
      "commit": "31f4c9f86522061d682fd0e2c6003043cec496dc",
      "tree": "fc7192bc634811bdc8176afc4b5e60a049d56ae0",
      "parents": [
        "f23779bc210ecbf448e61d7b18088b6afb46a476"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 08 15:46:11 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 11 19:55:46 2017 -0800"
      },
      "message": "Add CodeItemDebugInfoAccessor\n\nUse it in places where DecodeDebugPositionInfo is called.\n\nMotivation: Abstract away calls to GetDebugInfoOffset.\n\nBug: 63756964\nTest: test-art-host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 --debug\n\nChange-Id: I3ab2eff56c472cc717f49d17fd17eb0b8fde4062\n"
    },
    {
      "commit": "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": "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": "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": "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": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "51d80ccca5eb2ea0eef0de836dcc03e0545f63db",
      "tree": "14ff2bf5b9a9ca86d8a8d6f736cf27d8a1d47554",
      "parents": [
        "19df565ffcb30cb7b5217f074771078f0bb6cc1c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:05:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 16:04:07 2017 -0700"
      },
      "message": "ART: Refactor abort code\n\nRemove Runtime::Aborter and let Runtime::Abort set the abort message\non target.\n\nThis works around a missing tail-call optimization that leads to a\nsuperfluous frame on the call-stack when aborting.\n\nPartially reverts commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 62810360\nTest: m test-art-host\nTest: Manual inspection of abort dump\nChange-Id: Ie4efc8bbdc8b665b23081b37a11921fe26b182b4\n"
    },
    {
      "commit": "e17cf243978ca7f5356e746ee460f0fcf04e04a6",
      "tree": "e8ad423bf1dee5756fec451ba22db749ed4f5472",
      "parents": [
        "2bc159ebd1115f71d80639e47fc38663aa84ba4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:05:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:11:12 2017 -0700"
      },
      "message": "Add field/method skipping helper functions to DexFile\n\nSpecifically added SkipStaticFields, SkipInstanceFields,\nSkipAllFields, SkipStaticMethods, and SkipVirtualMethods.\n\nAlso applied the helpers to the code base.\n\nTest: test-art-host\nChange-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32\n"
    },
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "f57589fd40e5b69dad5aff060ccef756507f381a",
      "tree": "62d38e73660d9818b18c4741c6b3cce3306d63d5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 10:09:33 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 13:50:35 2016 -0700"
      },
      "message": "Remove logging dependency on runtime\n\nMoved the abort backtracing function to runtime, forcing callers to\nsupply the aborter at InitLogging.  This makes runtime properly layer\non top of logging by removing the cyclic dependency.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I8b2e72174e937bb88fe1bddd6d04b564cfb011a9\n"
    },
    {
      "commit": "c05e2f2255cfc7d1a5a91be4aa3dfe7838e4e77a",
      "tree": "8b2152de5eabef2c996f171a1bb989f053196b0f",
      "parents": [
        "f79c0e6f74dfaf7ca5ba3fbe1c903abd65086a1a"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jul 12 15:53:13 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jul 12 16:55:06 2016 -0700"
      },
      "message": "Refactored a few dexdump alloc/free into unique_ptr\n\nRationale: easier to read\n\nTest: dexdump\u0027s output is well-tested\n\nChange-Id: Ib5b36dce68d442e555599f9427bd9bfa7c6f3831\n"
    },
    {
      "commit": "37d6a3bbf5826abb73f872ed0bc4c6ae9553e274",
      "tree": "0fbe5fda78e251597f909f654014f2c25efa62e5",
      "parents": [
        "739dc72773c5dee583a1d322f91b5abd61f9889d"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 21 18:30:10 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 22 15:39:07 2016 -0700"
      },
      "message": "Support the -i flag in the new dexdump.\n\nRationale:\nThe old dexdump supported the -i feature (ignore checksum failures).\nThis CL adds the same functionality to the new dexdump. Note that\nthis feature is, for example, useful to inspect DEX files that are\nextracted from images (with quickened instructions), since the\nchecksum is not always valid in those cases.\n\nBUG\u003d29548017\n\nChange-Id: I6017b2f3d789f450560b568297f43c62bf9453b1\n"
    },
    {
      "commit": "b06e28e5b9fbabe3e69b18f31bf353eaff5d0c1f",
      "tree": "18ff419c6a3b80ecff3125f13b72a8851e848ab0",
      "parents": [
        "f71b3ade9c99ce2fec2f5049ce9c5968721e1b81"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 13:15:00 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 15 15:11:50 2015 +0000"
      },
      "message": "Refactor DexFile::DecodeDebugInfo.\n\nSplit the method into two - one for locals and one for positions.\nAll uses of the method request only one of the two and it makes the\ncode slightly cleaner. The position variant requires fewer parameters.\n\nExpose additional line table information which was previously ignored\nby the decode method (prologue, epilogue, source file).\n\nChange-Id: Idf8ba98fa58ea0d2103932b5cc0af81365885107\n"
    },
    {
      "commit": "b1b45bec6a3eed1fb95dabd95b1957a51341dc2a",
      "tree": "fd1f0ffdc319510e659fe0fbaa800b13c60dae57",
      "parents": [
        "2a7ea34cda9bf776339dfc7f4a22ab01f9525f2d"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Aug 28 11:09:29 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Aug 28 11:09:29 2015 -0700"
      },
      "message": "Make Art\u0027s dexlist the real one!\n\nRenaming dexlist2 into dexlist now that Dalvik\u0027s dexlist\nis gone. Unless dexdump, this migration is straightforward\nsince the windows SDK does not ship dexlist.\n\nBug: 22322814\nChange-Id: I721a72abdd9a17329b53020274495323467e388e\n"
    },
    {
      "commit": "4e14960f070a0979e785d278ec3452905b669110",
      "tree": "303b1014b2bbc6e1fe0b5e5dbb43202f464b35b6",
      "parents": [
        "f99628f7673c21c42be34f95bef6bbb50cd99f20"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 09 11:45:28 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Jul 09 11:45:28 2015 -0700"
      },
      "message": "Enable multi-dex content per file in dexlist/dump.\n\nRationale:\nUnlike the original Dalvik-based utilities, the Art-based\nutilities are able to extract multi-dex content from one file.\nSo no need for any artificial restriction on number of dex files.\n\nBug: 22322814\nChange-Id: I7c603d22c7e0caa5ae712b905d9bb83982f1b918\n"
    },
    {
      "commit": "22c26f5b454b56a20215cb8bbc5e8afcaccafdb0",
      "tree": "25e224c087f006e75983a6f7fdcf55ee53797861",
      "parents": [
        "d10ee1ce1ccd92c003ec49c15edf339e74c13894"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 08 21:20:13 2015 +0000"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 08 21:20:13 2015 +0000"
      },
      "message": "Revert \"Make Art dexdump/list the real utilities.\"\n\nThis reverts commit d10ee1ce1ccd92c003ec49c15edf339e74c13894.\n\n\nREASON:\nwin_sdk is not happy with my migration :-(\n\nChange-Id: I2ed196da3f5883112883525f883d25b36e48352a\n"
    },
    {
      "commit": "d10ee1ce1ccd92c003ec49c15edf339e74c13894",
      "tree": "65f85f5bdf5dbc4141fc556d3389d3a7ca9d40c7",
      "parents": [
        "d9acfe21f6eb09a22db69958dfb05c1f48f779bd"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 08 11:30:04 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 08 11:30:04 2015 -0700"
      },
      "message": "Make Art dexdump/list the real utilities.\n\nNote: depends on pending CL that removes\n      old dexdump/list and libdex.\n\nBug: 22322814\nChange-Id: I99259553f0f4655a633989feb8d67aa11de8b29d\n"
    },
    {
      "commit": "3e40f4a7289bf0104e061dc36f17a776d4c122d4",
      "tree": "e812261b29900db86b35a777e3e52b792a447b78",
      "parents": [
        "a100332ee0f4b842c28ec2448f97e40a882cd837"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jul 07 17:09:41 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jul 07 17:36:41 2015 -0700"
      },
      "message": "Migrated dexlist from Dalvik (libdex) into Art (libart)\n\nRationale:\nThe new dexlist (temporarily called dexlist2 until we are\nsatisfied with the migration) is a re-implementation of the\noriginal dexlist utility that was based on Dalvik functions\nin libdex into a new dexlist that is now based on Art functions\nin libart instead.\n\nBug: 22322814\nChange-Id: I0f034d66c1a1f3c5450423f57fcdc23e2f5a1e29\n"
    }
  ]
}
