)]}'
{
  "log": [
    {
      "commit": "1e271ce1d48c64136a1e2f6102c78d51635ac435",
      "tree": "0d9ad35b372b157dd2d1cebe00b2d6c1457067cc",
      "parents": [
        "2269f7eef5ac7821d4461b7f452313239aa100eb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 12 15:14:13 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 16 08:17:37 2021 +0000"
      },
      "message": "Revert \"libelffile: move to DWARF3 when writing .debug_frame.\"\n\nThis reverts commit 546243375d7e129aa02ca7ea9663ed7c40b4880e.\n\nReason for revert: DWARF-64 is supposed to be used for libraries\nover 4GB in size.  It is unrelated to pointer sizes and linked bug.\n(the spec explicitly says that it should not be used in our case)\n\nBug: 192012848\nChange-Id: Iaf4679b6d4cb27d049277ef7bdc6606771390a6b\n"
    },
    {
      "commit": "4f990714b13e0b4446305a5411648a1a9ae42a7a",
      "tree": "4568386e3e6f3c98c819851f6573e2c7cbc184fb",
      "parents": [
        "7744b69abf073101b09b9043f0f0eb109768fcfe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 12:45:13 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 15:18:36 2021 +0000"
      },
      "message": "Modernize typedefs with `using`.\n\nReplace many occurences of `typedef` with `using`. For now,\ndo not update typedefs for function types and aligned types\nand do not touch some parts such as jvmti or dmtracedump.\n\nTest: m\nChange-Id: Ie97ecbc5abf7e7109ef4b01f208752e2dc26c36d\n"
    },
    {
      "commit": "546243375d7e129aa02ca7ea9663ed7c40b4880e",
      "tree": "adc158db1f6d6d6c482ac88462ad687a63d8267d",
      "parents": [
        "7ffab8106445905d30fdef6291ebd18765c961f0"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jun 25 17:37:32 2021 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jul 01 00:37:35 2021 +0000"
      },
      "message": "libelffile: move to DWARF3 when writing .debug_frame.\n\nzR augmentation in .debug_frame isn\u0027t recognized by llvm-dwarfdump.\nThis leads to below test failure after compiler update:\n  DwarfTest.DebugFrame\n  DwarfTest.x86_64_RegisterMapping\n\nSo switch to DWARF3, which supports 64-bit format without using zR\naugmentation.\n\nBug: 192012848\nTest: run art-test\nChange-Id: Ib37c0bba7a293ae7b04c8cc0e9e09c045bcc0287\n"
    },
    {
      "commit": "2d3354ac96f587e74178dfbf94098f4e7cf96e58",
      "tree": "5f93811238fb3b6369b7f03e7faa3bb680a1e440",
      "parents": [
        "af30bf7fb48741f126db1b8316afde6d11b1db69"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 28 23:10:40 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 06 10:43:05 2021 +0000"
      },
      "message": "Fix .debug_frame_hdr generation.\n\nMinor fixes (keep the generation still disabled/unused).\n\nBug: 110133331\nTest: art/test.py -b --host\nChange-Id: I82a104d36afd68ef3133f345991ab3888bdcdc8e\n"
    },
    {
      "commit": "88e08c0568f2c09f562ee6e2d3eacabfcc67bf1d",
      "tree": "176064563f3cd5516efcce0c5beb2bb184abada5",
      "parents": [
        "e1e0e0f187587dfb019a1689c005b31813b4cfe7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 29 12:42:22 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 29 15:28:59 2021 +0000"
      },
      "message": "Create magic symbol to mark .symtab as sorted.\n\nELF symbols don\u0027t have to be sorted, but ART always sorts them.\nThis is very useful property if libunwindstack can rely on it.\n(that is, it can binary search the table instead of linear)\n\nBug: 110133331\nTest: art/test.py -b --host\nChange-Id: I4d491096a5bd4ea738a45bbc64fc9dea91c45575\n"
    },
    {
      "commit": "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4",
      "tree": "4373745cfa3eb131749d6c3207a7cbca29c98950",
      "parents": [
        "bd570591eab2d683eb634ac057dbf9f0e1337f8c"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Dec 08 16:25:27 2020 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 07 00:52:19 2021 +0000"
      },
      "message": "Fix expected results for clang-r407598 update.\n\nllvm-dwarfdump has changed the format it uses for displaying, so we\nmust also adapt all of the ART tests similarly, since they check for\nexact matching output.\n\nBug: 171348143\nTest: m test-art-host-gtest\nChange-Id: I901cd45330b0def7c6ed98a15c0206312feff01b\n"
    },
    {
      "commit": "23c926d12f8333d2ca59d6b321064cb9d831f0ad",
      "tree": "68e7f88f580ff30950605332f2187b18a904add6",
      "parents": [
        "6af553d1f411926acdb96d6fa85fb126b761eada"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 05 12:02:00 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 24 21:13:51 2020 +0000"
      },
      "message": "Do not create symbols for [DEDUPED] methods.\n\nThe incorrect method name keeps confusing developers, despite the tag.\n\nHowever, around half the time, the deduped methods share either the\nsame class name or method name, so include it in the name if possible.\n\nBug: 32949969\nTest: printf the generated method names.\nChange-Id: I9cc6f16da0a91d93aa05df5476011bf180d626d9\n"
    },
    {
      "commit": "331c8e371f2a3324070a4da966af8bf296b58bbb",
      "tree": "82ad282811d40e605bd7e0ad1c3be81ea3385e7f",
      "parents": [
        "49cde240141d84bc0d79ed2225aff5b1a7f8a65e"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Sep 11 17:03:58 2020 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Sep 22 16:39:51 2020 +0000"
      },
      "message": "Fix expected results for clang-r399163 update.\n\nllvm-objdump changed the format it uses for displaying assembly, so we\nmust also adapt all of the ART tests similarly, since they check for\nexact matching output. llvm-dwarfdump has similarly changed its outputs,\nso we adjust our expectations there too.\n\nBug: http://b/155835175\nTest: m test-art-host-gtest\nChange-Id: Iefdb7b98b5f87d9c7bbad1930a4393919d9b9b34\n"
    },
    {
      "commit": "b461b53c926dae7f1959a309b0a2b109b6d3c4d3",
      "tree": "a9d3d51d8a3267dd3e7724c1ab3bf70cfd4c417a",
      "parents": [
        "fab6f1c479f6053a0c1eaaa889e0ff067d596211"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 13 17:45:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 15 09:48:56 2020 +0000"
      },
      "message": "Revert^2 \"Switch to LLVM prebuilt tools for ART gtests\"\n\nIt is also necessary to adjust the expected output of some tests.\n\nThis reverts commit ea54b823a3a02f65c865e11bbbccb327a273c039.\n\nBug: 147817558\nTest: m test-art-host-gtest\nChange-Id: Ib244e8b7d43d575299654397a47056f295ab4589\n"
    },
    {
      "commit": "ea54b823a3a02f65c865e11bbbccb327a273c039",
      "tree": "e6cb592138b95d2cb3ab5a132d56b3211915a108",
      "parents": [
        "7285a4bc7337cf6382ac464b979ae5db986a2a53"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 10 18:28:56 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 10 19:34:40 2020 +0000"
      },
      "message": "Revert \"Switch to LLVM prebuilt tools for ART gtests\"\n\nThis reverts commit 8070443ce4b31a6787c22490f18f838f8f6ed4be.\n\nReason for revert: Failing on chrome buildbots.\nTest: None\nBug: 137817558\n\nChange-Id: I4cbb4898e859ce33560592dd63cbf4a413048662\n"
    },
    {
      "commit": "8070443ce4b31a6787c22490f18f838f8f6ed4be",
      "tree": "ca9952b599e81570b60a0b1d403316de45d3f340",
      "parents": [
        "60690e495c3d6ead778bc25c44e925c5fd66173f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 01 13:40:19 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 10 10:57:04 2020 +0000"
      },
      "message": "Switch to LLVM prebuilt tools for ART gtests\n\nIt is also necessary to adjust the expected output of some tests.\n\nBug: 147817558\nTest: m test-art-host-gtest\nChange-Id: Ib517169614470193e0c55f566adb72a526ae6902\n"
    },
    {
      "commit": "194f555db74816aa380d2f46f63c8626f38e9b71",
      "tree": "d81626d2023f2d5a7f77b1ff4718e353ee76bc90",
      "parents": [
        "d6e14e0b6a3447d6e89a93d0a017e92b11dc5f6f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 07 01:10:07 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 09 15:58:18 2020 +0000"
      },
      "message": "Refactor arm assembly tests.\n\nAnother step in preparation to move to the LLVM toolchain.\n\nBug: 147817558\nTest: m test-art-host-gtest\nChange-Id: Ie5be337165d8f24e04740de0486144fa6a62f063\n"
    },
    {
      "commit": "a5ed9a16c0bd4f0571b4d9fff951257d638b1199",
      "tree": "97c1a4aaae1772d9825777e14bbd0c5786d6f169",
      "parents": [
        "86fafac1fb5c26ab671569258bb5125fa3207c5c"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 17 19:24:21 2020 -0700"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 24 10:59:01 2020 +0000"
      },
      "message": "Mark deduplicated symbols more obviously.\n\nMove \"[DEDUPED]\" to the front of the symbol name to make the fact that\nthe symbol was deduplicated more obvious at a glance.\n\nBug: http://b/32949969\nTest: treehugger\nChange-Id: I4b60ee1eedd709dfd41b8da27ad6bb9e8197acda\n"
    },
    {
      "commit": "187a2014bdd8c19092766e916393bb74dfc5b788",
      "tree": "8e9a1fba8dd3dbf8e9167159c11d0316a9a01b86",
      "parents": [
        "3d190c0f01071c5c402a96ac77ef07d20291405a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 19 14:21:26 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 19 14:52:14 2020 +0000"
      },
      "message": "Improve DWARF test logging.\n\nBug: 159295421\nTest: Make some of the tests fail locally and observe output.\nChange-Id: I3d82f85ff1cb727d73b51688d35271d08a3f6c98\n"
    },
    {
      "commit": "439528400e3a807d1696d70cf2e657612533830c",
      "tree": "1d6f57411ca78e1145cb2189627e90ffa4b7fcbe",
      "parents": [
        "be50bc3e7eed84842d5d2302444270dd0d635d00"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 18 21:00:04 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 19 10:56:58 2020 +0000"
      },
      "message": "Consider thumb bit when repacking and compressing JIT mini-debug-info.\n\nARM uses least significant bit of function address to encode thumb mode.\nThis means the function address might not point to first byte of code.\n\nNormalize the addresses by rounding them down to instruction size.\nThis fixes memory leak (debug info would not be freed) on 32-bit ARM.\n\nBug: 151137723\nTest: ./art/test.py -r --target -t 137 --jit --32\nChange-Id: I6851c2ac874badec8b385eb0b3f21e8119178e22\n"
    },
    {
      "commit": "03e871678db7585a621740fb1ce65a75fdc44319",
      "tree": "3d984535c3ec7d10fbad28b9890d205223a1eaca",
      "parents": [
        "bbec8a6fc720ee5ce572d3fb63617fb0af6addc7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 25 16:29:21 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 26 08:36:18 2020 +0000"
      },
      "message": "Remove MIPS support from libelffile.\n\nTest: m\nChange-Id: I01e6c6abb845baa4763929f5b9b6b3b36ac0e8b0\n"
    },
    {
      "commit": "be0d3cff84c69c497487d39c4022d604a7907d5b",
      "tree": "15364a8eb252f9645bb1cf3f9fe9d2017f1ed5fa",
      "parents": [
        "5945de03b6f6b35bcf6a575b2291e29ae7a2b1ee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 10:52:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 20 07:15:30 2020 +0000"
      },
      "message": "Remove remaining MIPS support.\n\nWith the exception of dwarf support in libelffile.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 147346243\nChange-Id: Ib25acbc98aa7f63ce49a7ed2f81a4a64d48eac39\n"
    },
    {
      "commit": "e09b87eb8d8c063ddaee53a70b4bc8dbf61ff66c",
      "tree": "df53a0996b9ae47422f4661edc2d7998cc57ba95",
      "parents": [
        "c88c1d0fbbc4bc230f08fd1e0fe7b652519c9236"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Aug 19 21:31:31 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 28 10:24:35 2019 +0000"
      },
      "message": "JIT mini-debug-info: Support JIT data dual mapping.\n\nEnsure that we can add/remove mini-debug-info if the JIT data is\nread-only and we need to use the other mapping for writes.\n\nPointers into the read-only memory are marked as \"const\".\n\nTest: \"test.py -b --host --jit\" with data dual mapping\nTest: device boots with data dual mapping\nBug: 119800099\nChange-Id: I9399cffbe5ae13f08f698ab1598c30f13545a767\n"
    },
    {
      "commit": "8fc2f95291206806599d4f2a50da529da85155b6",
      "tree": "c3c9de9a9a925d6ab790f6db466d1f9c17ed1010",
      "parents": [
        "9ce340f829f836560278ecd078fbefcf19c9d629"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 31 18:40:09 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 16 09:10:55 2019 +0000"
      },
      "message": "JIT mini-debug-info: Remove global maps.\n\nKeep the extra bookkeeping information in JITCodeEntry.\n\nAlso do the compression eagerly during GC rather then lazily.\n\nTest: test.py -b --host --jit\nBug: 119800099\nChange-Id: Ie6cc682033a32c01d4c2cac242d8a4201116f940\n"
    },
    {
      "commit": "d4f8afb4d8bc7bb5cbaf217c2f0734b880b62689",
      "tree": "687c2b9bef9f370bbb1547c0d801fb0bc9dae3d2",
      "parents": [
        "354ddc52e3e08a7b17cd5b28686119407d2bcdc3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 10 16:44:38 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 14 13:15:23 2019 +0000"
      },
      "message": "Revert \"Add binary search table for .debug_frame\"\n\nThis reverts commit 5f1465ff689eccbb1b6d15160d1a3700793956da.\n\nReason for revert: Reclaim space for now as I didn\u0027t manage\nto implement the libunwindstack side yet.\n\nTest: test.py --host -b -r -t 137-cfi\nChange-Id: Iffeed63e54f38a905324d03b148daac4bb37f6cf\n"
    },
    {
      "commit": "76b9c695a7cee0772cb9ee7e472bbf8ce3030a73",
      "tree": "cfc3d1642688a93b2ef1b7d0660bfb2a333d8be9",
      "parents": [
        "e18588381b34a5ed24417c826dc389a91f8d2b7f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Apr 01 19:36:33 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 07 21:27:36 2019 +0000"
      },
      "message": "Split JIT mini-debug-info packing and compression to two phases.\n\nEvery JIT compilation creates a mini-debug-info entry (~800 bytes).\n\nAfter every 64 compilations, pack the data so that we have multiple\nmethods per mini-debug-info entry (amortized ~200 bytes per method).\n\nCompress the entries after code GC (amortized ~60 bytes per method).\n\nSplitting packing and compression means we can cheaply claim most\nof the memory savings by packing recent methods and older methods\nstill benefit from the compression.\n\nTest: test.py -b --host -r -t 137-cfi\nChange-Id: Ic2c677ada09983e49d96623a48f4d4ad1fa5bfbc\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "50928116be503deed341fbc84c0647d5687b12a1",
      "tree": "2ab09470c05eff72860eb8df14dfcc1fba002ec4",
      "parents": [
        "b9c29f625bc27968d80f9eafa988dc14af0a1c28"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 22 17:06:28 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 25 10:59:19 2019 +0000"
      },
      "message": "Move elf_utils.h to libelffile library as well.\n\nAlso move some of our ART-specific utils form elf.h.\n\nBug: 73344075\nTest: generated oat files on host are identical.\nChange-Id: I587afc30875b9ddb57220fb3d4e764f9bb7a0e25\n"
    },
    {
      "commit": "2faab0064bccdf06a454ba5fc37f2cfeceab78bc",
      "tree": "bc51a211068019d77e7739164adf5be5c6333b7b",
      "parents": [
        "5f1465ff689eccbb1b6d15160d1a3700793956da"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 16:35:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 20 15:20:54 2019 +0000"
      },
      "message": "Create libelffile library for ELF file manipulation.\n\nMove some of our tooling to library to make it reusable.\n\nRemove MIPS support from the ELF builder.  This is slightly\neasier than making it independent of the runtime.\n\nBug: 110133331\nTest: test.py -b --host\nChange-Id: I93343808d0e27ee8e1117e713a2503e8179fc245\n"
    },
    {
      "commit": "5f1465ff689eccbb1b6d15160d1a3700793956da",
      "tree": "44b11b483eb169ff652d2545d2731551ee484cc8",
      "parents": [
        "21b656872c27b8d174293cf37975d769c8554b22"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 17:34:39 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 20 11:34:46 2019 +0000"
      },
      "message": "Add binary search table for .debug_frame\n\nAdd ELF section somewhat similar to .eh_frame_hdr,\nwhich can be used in libunwind to do binary search.\n\nThis increases .oat file size by 0.1%.\n\nBug: 110133331\nTest: ./art/test.py -b --host -r -t 137-cfi\nChange-Id: Ief47d15eb3f3d302438b713af4cfbcddd0c5078a\n"
    },
    {
      "commit": "de3e70ff45450a54f02ff6f11c39ea9e45d6decc",
      "tree": "fefb3c7d5799667ab49237273147fed76ffed3cb",
      "parents": [
        "77182cd0f4527538df832eddbc775391c283cffb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 22 12:07:29 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 22 16:17:05 2019 +0000"
      },
      "message": "Move to new glibc in the tree.\n\nBug: 125632645\nBug: 125778437\nTest: prebuilt_tools_test\nChange-Id: Id4c7eca4e8c976e2b23c4d489805abfff694ac13\n"
    },
    {
      "commit": "03c6b174a4e412e9bb62935c4ee15b5445e517f2",
      "tree": "1deaa160bde1a6f6089fdce8e1d2c8797422b5a9",
      "parents": [
        "03fc50104cb5225542de33cdafaff1613ec05cf9",
        "53eb07f0858795b7487eddc23b95ac38336696a7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 19 14:49:20 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 19 14:49:20 2019 +0000"
      },
      "message": "Merge \"Refactor ElfDebugReader.\""
    },
    {
      "commit": "53eb07f0858795b7487eddc23b95ac38336696a7",
      "tree": "8b5710abea53fdf95aac2c582d58b465e9fd46e7",
      "parents": [
        "e39765cd311f31653137a2efede6c0eb7903e434"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 16:34:55 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 18 14:06:22 2019 +0000"
      },
      "message": "Refactor ElfDebugReader.\n\nMake the code more flexible, which I will need for\nfuture mini-debug-info work.\n\nBug: 110133331\nTest: ./art/test.py -b -r -t 137\nChange-Id: I8b0fe3c43537f546f2ff103bff3c63a59a0f940a\n"
    },
    {
      "commit": "82b9560f28a7528d3a0dd3337db236d28e460374",
      "tree": "0ae54e8530ceee417bd2cbd776abe2abbb18fad4",
      "parents": [
        "e39765cd311f31653137a2efede6c0eb7903e434"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 15 18:52:47 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 18 12:59:51 2019 +0000"
      },
      "message": "Simplify XZ compression.\n\nIt turns there is configuration option to split the data into blocks.\n\nTest: ./art/test.py -b -r -t 137 --host\nChange-Id: I33c8722e300951a14abc3a759a06eff4e7c00fd4\n"
    },
    {
      "commit": "e39765cd311f31653137a2efede6c0eb7903e434",
      "tree": "83d299c1edbcfa10ee812437c21195afa4c3898c",
      "parents": [
        "18d70c19fd2122db62f867bcb73a53ed3331197e",
        "300218472729b91591bd39754684fb16ea56c4de"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 15 15:08:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 15 15:08:00 2019 +0000"
      },
      "message": "Merge \"Generate CFI for stackless methods.\""
    },
    {
      "commit": "300218472729b91591bd39754684fb16ea56c4de",
      "tree": "e7f3b67ac3b39cea40d6be2d0ad5956ba81ad23e",
      "parents": [
        "d8c4a38b3fc37efdfe691c317b37e9808022f7a3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 13 14:19:36 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 14 11:50:54 2019 +0000"
      },
      "message": "Generate CFI for stackless methods.\n\nGenerate at least a single no-op.\nOtherwise it seems like CFI is missing.\n\nBug: 122379755\nTest: ART_HEAP_POISONING\u003dtrue ART_USE_READ_BARRIER\u003dtrue ./art/test.py -r -t 137 --jit --32 --target\nChange-Id: Id9206cb49ce976a03e1d50e6801abcefff537f60\n"
    },
    {
      "commit": "7370d92da01ad07c649e3f988aaf55ee7585a803",
      "tree": "961717b2838d923b87b2ecf1ebac55a8c5ecaa8d",
      "parents": [
        "91b290038cbd00a48028922a5e76c0c39d6ebcb6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 14:00:30 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 14:44:44 2019 +0000"
      },
      "message": "Remove oat_patches from the DWARF writer.\n\nWe no longer use them.\n\nTest: test-art-host-gtest-dwarf_test\nChange-Id: Ie018d2314f028584edb398b6310a7284a0ec2069\n"
    },
    {
      "commit": "91b290038cbd00a48028922a5e76c0c39d6ebcb6",
      "tree": "0b05e3a20da9ae131b9299554b4c7efa7e156f7d",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 08 15:51:31 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 13:51:16 2019 +0000"
      },
      "message": "Remove support for generating .eh_frame ELF section.\n\nThe eh_frame support was originally added because the\nold libunwind library didn\u0027t support debug_frame.\nThe new libunwind supports debug_frame well, and since\nwe have switched to it, we can remove the legacy code.\n\nThe main advantage of debug_frame is that it can be\ncompressed as part of mini-debug-info.\n\nI am somewhat preserving the .eh_frame_hdr binary\nsearch table (renamed as .debug_frame_hdr.android).\n\nBug: 123621350\nTest: Generated framework oat files are identical.\nChange-Id: I35b18895482f2176e02df07b086af7a1d40f90d5\n"
    },
    {
      "commit": "49b2b2050d970384bf70c3a3bc526ac62d299b2c",
      "tree": "35ba4cbd6f008e2152e3683eac70cfb7ce031088",
      "parents": [
        "5fe64d84822bf86d72d941c271c93ecbb0ff0742"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 01 13:35:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 01 15:37:49 2019 +0000"
      },
      "message": "Allow empty mini-debug-info ELF section.\n\nGenerate mini-debug-info ELF section even if it is empty\n(if we generate oat file with no compiled methods).\n\nThe intention is to make it easier to distinguish ELF files\nmiss the section unintentionally due to build configuration.\n\nThe overhead of the empty section is 140 bytes per oat file.\n\nBug: 37724669\nTest: test.py -b -r -t 137\nChange-Id: I521da6bb1a04d099465a3ffd9e05b7c836165208\n"
    },
    {
      "commit": "5d938ef154f504ada9c8fc9c9361fe69aabbe8b9",
      "tree": "00b59e57bc4cee74fe0bc976fff02cb1d8ed1be6",
      "parents": [
        "c3c0299f4bf262005ad41eeb0b5e281e5cea5d84",
        "51bc752e21e56522ce1df22e1016800d43b8c534"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 07 13:19:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 07 13:19:50 2019 +0000"
      },
      "message": "Merge \"Fix CFI tests for heap poisoning.\""
    },
    {
      "commit": "51bc752e21e56522ce1df22e1016800d43b8c534",
      "tree": "7a0b05d3cf4cbfc5185d7a42e2b718432629e20d",
      "parents": [
        "30a8c4b28c8199418dd0a844992604274a7bc9cc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jan 05 15:41:06 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 07 13:10:09 2019 +0000"
      },
      "message": "Fix CFI tests for heap poisoning.\n\nThis is partial revert of \"Pack JIT mini-debug-infos together.\"\n\nThe code is correct, but it makes heap poisoning tests fail.\n\nReverting for now, pending further investigation.\n\nBug: 122259922\nBug: 122379755\nTest: ART_HEAP_POISONING\u003dtrue ART_USE_READ_BARRIER\u003dtrue ./art/test.py -b -r -t 137\nChange-Id: Ic15e150e0c205439be7753c125e243f77e380cae\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": "3db70689e3e1c92344d436a8ea4265046bdef449",
      "tree": "3db08743e968062ed5bdc143233cdb3c4564696b",
      "parents": [
        "1650dafad62578a1766bd617d78458a4cf1e2a9a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 26 15:12:03 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 27 12:56:39 2018 -0800"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles compiler.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I5cdfe73c31ac39144838a2736146b71de037425e\n"
    },
    {
      "commit": "0b21e41260bea6c078c18eba745d43e549230fd0",
      "tree": "25e41920b8a38d01ec904a2d1a1498c1364c07fb",
      "parents": [
        "889e29aae6a7cbd3c6f8dae44f67e054e083a8b6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 05 13:24:06 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 16:47:38 2018 +0000"
      },
      "message": "Pack JIT mini-debug-infos together.\n\nWe currently produce one in-memory ELF file per JITed method,\nwhich has significant overheads due to the ELF file headers.\n\nPack several of those files together regularly to save space.\nSimilarly, prune information about methods which were GCed.\n\nThis reduces the size of JIT mini-debug-info by factor of 10.\nThe final overhead is 5% to 10% relative to the JIT code size.\n\nTest: ./art/test.py -b -r -t 137\nChange-Id: Idfaff8ed9a209e871e815e527f24f36c63a57bbf\n"
    },
    {
      "commit": "58431a7cf863b2eb7fe25eff6a28ec376f2f151d",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "27f1997511de023e4f33329fe0c8ca984b9dece4",
        "cf1af73677cf9ce474cafe4ba7a915ac8b4b6495"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 07 13:44:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 13:44:25 2018 +0000"
      },
      "message": "Merge \"Add xz decompression method.\""
    },
    {
      "commit": "cf1af73677cf9ce474cafe4ba7a915ac8b4b6495",
      "tree": "39f373b235922d4831e7d00356e918ca55c3801d",
      "parents": [
        "6a98f89c4ad645b04d6c80d3d7e260c59bf6f193"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 04 14:31:32 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 07 11:13:29 2018 +0000"
      },
      "message": "Add xz decompression method.\n\nUse the method to check compressed data in debug builds.\n\nTest: boot.oat is identical\nChange-Id: Id796d4ba19c338522fc855f751bac00555029c79\n"
    },
    {
      "commit": "be50f9ae077b9d5fb4f12f693ba36cc69e9d4073",
      "tree": "edcd00b15d95aee101dd85574d1ce91b3cb35c0c",
      "parents": [
        "6a98f89c4ad645b04d6c80d3d7e260c59bf6f193"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 05 10:48:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 05 11:35:29 2018 +0000"
      },
      "message": "Simplify MakeElfFileForJIT\n\nWe only ever pass single method info to the method and\nI don\u0027t plan to use the method for anything more complex.\n\nThe JIT-related methods also know the relevant ElfTypes\nat compile time, so some of the helpers are not needed.\n\nTest: ./art/test.py -b -r -t 137\nChange-Id: Ie7815a6427ac05be15a79adeb05dccc9150441d2\n"
    },
    {
      "commit": "98104995d8dfc6fec6ec46f4cd50acd67e435687",
      "tree": "390e8a3f8361a894fba2d6136d906aa1c62c29f3",
      "parents": [
        "17c5e022f48a36fd160906b9c99ae14a2f014f17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 12:49:47 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 12:49:47 2018 -0700"
      },
      "message": "ART: Use ObjPtr for GetSuperClass\n\nBug: 37224696\nTest: mmma art\nTest: m test-art-host\nChange-Id: If55db6e26bb1bb05a13c59b849bed17839fca6cf\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": "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": "facf41a811a7e943b322e2e04784e7f80151eaf9",
      "tree": "503ca91973e3e11b303d9f80ffc52bbe8c053dec",
      "parents": [
        "10c62239a26e5124776961ca4527e3b388c7ca12",
        "154c57fc97e5fa343d97b5e7c6bb993ecb4e6e34"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jul 28 09:04:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 28 09:04:17 2018 +0000"
      },
      "message": "Merge \"Compress mini-debug-info in small chunks.\""
    },
    {
      "commit": "6ee06e97cef5ee92944deaeba0da4d10c4c33a2a",
      "tree": "77d69c85d37864b4d3ee970be4b7fd1246adee7b",
      "parents": [
        "f5dcd31d89282b6c9324fdc960e6e7e2281c16f1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 25 21:45:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 26 11:45:54 2018 +0100"
      },
      "message": "Decode only the needed tables from CodeInfo.\n\nMost use cases need only the first two bit tables from CodeInfo.\nAdd flag to the decode method so that only those two are loaded.\nWe only touched the table header but that still made difference.\n\nThis speeds up pmd by over 10%.\n\nTest: test-art-host-gtest\nChange-Id: I7740081bf18205dd69864503b5bcec7de5e1a901\n"
    },
    {
      "commit": "154c57fc97e5fa343d97b5e7c6bb993ecb4e6e34",
      "tree": "caa390f67ad733872fda06e46fc9f5d516f4c9c2",
      "parents": [
        "2449d6d006dcb685d3b386edcf624e67ef37e12c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:27 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 17 14:45:51 2018 +0100"
      },
      "message": "Compress mini-debug-info in small chunks.\n\nCompress the mini-debug-info in small independent parts.\nThis still results in standard compressed data stream.\nHowever, by dividing into chunks, the compressed data\ncan be random accessed - that is, it makes it possible\nto decompressed only the data that is needed.\n\nThis increases size of .oat files by 1.2%.\n\nBug: 110133331\nTest: test.py --host -b -t 137\nChange-Id: I9d1d4f1971b3c072d45ca4289f8c15f44da4036a\n"
    },
    {
      "commit": "93bd3619de4616040d672a4ed3825976bed4bfce",
      "tree": "2ab3424374ed3d316053ed8e9ec2d4b95ea2ef4d",
      "parents": [
        "f07d5617770c37d87447c8bddf105eb0469ab093"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 02 19:30:18 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 14:23:12 2018 +0100"
      },
      "message": "Use iterators to access stack map data.\n\nTry to simplify the code using the recently added iterators.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0b9f54df01749ee6ec3a67cfb07ba636a2489c89\n"
    },
    {
      "commit": "a043111e3a2c09b549708a6227a1f54d91da76aa",
      "tree": "393fe11cfceccebf474e4bdf36ff79b70b97f589",
      "parents": [
        "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 09:32:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 18:43:19 2018 +0100"
      },
      "message": "Move instruction_set_ to CompilerOptions.\n\nRemoves CompilerDriver dependency from ImageWriter and\nseveral other classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I3c5b8ff73732128b9c4fad9405231a216ea72465\n"
    },
    {
      "commit": "e1402125e8363b49e176c6072893d1c110a05d2f",
      "tree": "44ec055be78cdcb8086a598cbf791f8c4627e157",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:20:45 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:31:44 2018 +0100"
      },
      "message": "Move some helper methods to DexRegisterLocation.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0abab008159db023d531df69214cd3bb8c0639bd\n"
    },
    {
      "commit": "fd89b0739d4000ea70f28bf53dea531027024f5a",
      "tree": "1c9f3e1b046d60df405fb63f04cf83d3be4ff0f5",
      "parents": [
        "6de8833fb64e59301eada4005ed04da995796170"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 07 12:00:18 2018 +0100"
      },
      "message": "Remove unused GetDexRegisterMap arguments.\n\nThey are no longer needed in the new encoding.\n\nI reuse the local variables in most places to DCHECK the size\nof the decoded register map.  This has one catch though:\nWe sometimes omit all dex registers, so the DCHECK should be\ndone only after checking if the map is empty (if applicable).\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I94b67029842374bc8eb7c9e5eac76fc93a651f24\n"
    },
    {
      "commit": "9e4bbfb8c912dde29f01a76494fe6c253118e1d6",
      "tree": "3aebc9078ad94f132f7a5df0813a97bbdd4c4ed9",
      "parents": [
        "e7d145980df0079425a1ed04330848f92b992cd2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 31 08:52:16 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 31 09:19:53 2018 +0100"
      },
      "message": "Fix build: Extend the scope of CodeInfo object in ELF writer.\n\nCodeInfo is referenced from DexRegisterMap now, so keep it alive.\n\nTest: ./art/test/testrunner/run_build_test_target.py -j30 art-asan\nChange-Id: I47d0eb2a5be26fdaf2e2f6efc1c0909b84b38b31\n"
    },
    {
      "commit": "21d45b4f4ef3661ac33d622aaac5dd6d2ce7deb8",
      "tree": "121e046a949025bca4d766fdfdc5ea58e4ea4a10",
      "parents": [
        "d02b23f7ee9664213216a82bfdcb0ee83824de04"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 06:35:05 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Simplify DexRegisterMap API.\n\nStore some of the needed decoding state explicitly to avoid passing it\naround all the time. The DexRegisterMap class is rewritten in next CL.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ie268dff2a1c1da2e08f0e6799ae51c30e11f350b\n"
    },
    {
      "commit": "052f8ca1776ed7deb4f036498edd69eb6a1b942f",
      "tree": "ae993f1a634b258e124df12663a1d24859917b05",
      "parents": [
        "1c515f0b9d621869a2e67ce5e0f5532d0f2f323a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 26 15:42:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 20:28:41 2018 +0100"
      },
      "message": "Rewrite stackmap encoding code.\n\nRemove most of the code related to handling of bit encodings.\nThe design is still same; the encodings are just more implicit.\nMost of the complexity is replaced with a single BitTable class,\nwhich is a generic purpose table of tightly bit-packed integers.\nIt has its own header which stores the bit-encoding of columns,\nand that removes the need to handle the encodings explicitly.\n\nOther classes, like StackMap, are accessors into the BitTable,\nwith named getter methods for the individual columns.\n\nThis CL saves ~1% of .oat file size (~4% of stackmap size).\n\nTest: test-art-host-gtest\nChange-Id: I7e92683753b0cc376300e3b23d892feac3670890\n"
    },
    {
      "commit": "f9e11ac336888238c9573eb081324c101bf39f49",
      "tree": "28e0fdd253d9bdd82ad8dc403c469b55bae9e3a8",
      "parents": [
        "9926e4615d75cb6c9371e1766a14b0a80089ae18"
      ],
      "author": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri May 04 13:08:48 2018 -0700"
      },
      "committer": {
        "name": "Sen Jiang",
        "email": "senj@google.com",
        "time": "Fri May 04 13:08:48 2018 -0700"
      },
      "message": "Match LZMA SDK 18.05 API.\n\nThe signature of ISeqInStream::Read and ISeqOutStream::Write changed.\nCXzProps::lzma2Props is not a pointer now.\n\nTest: mma\nChange-Id: Ia6936bd2ff1ea9a09e2d81496867078bf9116d6a\n"
    },
    {
      "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": "64fbbd3b99bcfb8638596095fb0c8ac24fbcffdc",
      "tree": "6b672a008d25ba89e1a2108f7a60b0a1d1e265be",
      "parents": [
        "ae3c5cc582442e3493aa23155f2ee2f6b4613923",
        "ec419db26d96c74e2cb2418db247f9a94ff0d262"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 21 12:41:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 21 12:41:59 2018 +0000"
      },
      "message": "Merge \"Don\u0027t compress the JIT mini-debug-info if we have just 1 method.\""
    },
    {
      "commit": "ec419db26d96c74e2cb2418db247f9a94ff0d262",
      "tree": "44bf29fa39482bd62520a14ad22d4fb68d9c31e6",
      "parents": [
        "d1652d14fbf477b3091eec3764b9890f2c072055"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 16 17:24:16 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 21 10:41:06 2018 +0000"
      },
      "message": "Don\u0027t compress the JIT mini-debug-info if we have just 1 method.\n\nThe compression is great help for multiple methods but\nit is not worth it for single method due to overheads,\nso skip the compression there for a small speed boost.\n\nTest: testrunner.py --host -t 137\nChange-Id: Idc37645061c745032474b5115e66b1d790550d0a\n"
    },
    {
      "commit": "d2645a3c867e523d62c11ee9117ef245cc5b4d1f",
      "tree": "d953329267c6bdffb5adf01557c8681814d528b9",
      "parents": [
        "d1652d14fbf477b3091eec3764b9890f2c072055"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 16 16:16:39 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 16 16:53:24 2018 +0000"
      },
      "message": "Ensure local debug symbols are generated first.\n\nThis is what the spec says, and newer tools warn about it.\nI expect it is of little consequence otherwise.\n\nTest: Checkout output with readelf\nChange-Id: Icd358181f41304d3121a85f87b34e563b0e59073\n"
    },
    {
      "commit": "a996953bffa9f29b0135c1b0fd317100b4115b42",
      "tree": "eec071395ab707266926e6069586b03ed33db9fc",
      "parents": [
        "09f86297e7f82176fb8bb78fee86249e012c3af7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 05 16:00:55 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 06 12:57:23 2018 +0000"
      },
      "message": "Remove .symtab debug symbols for individual interpreted methods.\n\nThis code has been essentially moved to libunwindstack, which\nwill resolve the java method name by loading open dex files.\n\nThere is certainly no harm in having those entries in .symtab,\nbut as long as we do not use them, I am tempted to drop them.\n\nTest: testrunner.py --host -t 137\nChange-Id: If91ddec63cf2c27881148f56ef6fd4b533fef965\n"
    },
    {
      "commit": "c684f337eae6bd3d77fa44cb568d2bab113e4cee",
      "tree": "21c3e40cc150da71d91aef03f33010813f3a8368",
      "parents": [
        "26037dd60df16d84fbd5c0ee3215b78aa2bcb408"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 19 17:38:06 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 19 17:42:54 2018 +0000"
      },
      "message": "Refactor jit debugger interface and its ELF creation.\n\nMake it possible to store more then one method per entry,\nand ref-count the number of live methods per entry.\n\nTest: m test-art-host-gtest\nChange-Id: I45d69185e85e47fbee88a8d1f549ede9875a3c0a\n"
    },
    {
      "commit": "259316264d160012d1f429bae01c5e6d444fcd52",
      "tree": "df9520388df181dc2df51a2ad03982f5ef0db757",
      "parents": [
        "ad643b01de3f1152badfb12edb8469d40843d1e7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 18 22:55:20 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jan 18 23:25:39 2018 +0000"
      },
      "message": "Fix the offset of $dexfile debug symbol.\n\nThe symbol is currently unused but will be needed soon.\n\nIt is also more convenient if it is marked as STT_FUNC.\n\nTest: testrunner.py --intepreter -t 137 (with other CLs)\nChange-Id: I47bcbb498c47cd662eb85aaeb0363678e54d6471\n"
    },
    {
      "commit": "510bb881819a5b0bbd89769240ddff2199ed76c6",
      "tree": "066b54e7c9fd9feb94be2439a8d3b221f700b3a7",
      "parents": [
        "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 17 23:38:49 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 17 23:38:49 2018 +0000"
      },
      "message": "Add size for the $dexfile debug symbol.\n\nNeeded for libunwind to be able to find it.\n\nTest: readelf on boot.oat\nChange-Id: Ieaa5ee51a6786f7c6bf86c79fb7de0d0dc9cabaf\n"
    },
    {
      "commit": "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208",
      "tree": "afa8b2429f6a36e73c70f66dbe7204c2e69f657b",
      "parents": [
        "a6b2a2dddc1379fdca5cc95a86a724b12f16099d",
        "32210b9f8c30e202e275764200315fe26f22f34c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 15 10:36:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 15 10:36:54 2018 +0000"
      },
      "message": "Merge \"Generate debug symbols for interpreted methods.\""
    },
    {
      "commit": "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": "32210b9f8c30e202e275764200315fe26f22f34c",
      "tree": "31480b479f4a935c54926df5041e9dee42d7bc66",
      "parents": [
        "d97a2d17924bc4b19674c6ec7dd494a4dca3d70e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Dec 04 14:39:21 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 12 17:21:15 2018 +0000"
      },
      "message": "Generate debug symbols for interpreted methods.\n\nAdd .symtab symbols for method bytecodes in the dex section\n(only if the full --generate-debug-info is enabled for now).\n\nTest: m test-art-host-gtest\nTest: testrunner.py -b --host --optimizing\n\nChange-Id: Ie90034c921484bc4ff27c5458da78690b629dd0b\n"
    },
    {
      "commit": "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": "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": "f4886df5e72fa21eddfc4cc7860f4154929b3380",
      "tree": "897e74d9da4e92faae5c24350fa2f999cbfb2b1e",
      "parents": [
        "7eb4333d0b60a13f9d3126eadef9eb16c399662a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Dec 11 16:06:29 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 14 13:52:07 2017 +0000"
      },
      "message": "Add mini-debug-info generation mode for JIT.\n\nThis excludes everything that is not needed for backtraces and\ncompresses the resulting ELF file (wrapped in another ELF file).\n\nThis approximately halves the size of the debug data for JIT.\nThe vast majority of the data is the overhead of ELF header.\nWe could amortize this by storing more methods per ELF file.\n\nIt also adds NOBITS .text section to all debug ELF files,\nas that seems necessary for gdb to find the symbols.\nOn the other hand, it removes .rodata from debug ELF files.\n\nTest: Manually tested that gdb can use this data to unwind.\nTest: m test-art-host-gtest\nTest: testrunner.py --optimizing --host\nTest: testrunner.py -t 137-cfi\n\nChange-Id: Ic0a2dfa953cb79973a7b2ae99d32018599e61171\n"
    },
    {
      "commit": "3f74ea478d755453a2fe5789ce155e80be3e7c7f",
      "tree": "d28868a2efebae079e1f26d146acd6503f3de45d",
      "parents": [
        "b67c20cea4deb9b42c196ec834f9fea1921dcb7b",
        "e155f4b858be42a825e8270f65abb0fdcf6cbc9f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 13 09:52:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 13 09:52:12 2017 +0000"
      },
      "message": "Merge \"Decouple virtual memory allocation in ElfBuilder.\""
    },
    {
      "commit": "b67c20cea4deb9b42c196ec834f9fea1921dcb7b",
      "tree": "f33cec3640610df814653d47cfb529c2aefb3023",
      "parents": [
        "ea32413df41f5dc7d41d5870744c7ee21a8e3c5e",
        "566865df6a6292355f061ea857f8df5dcba44ca3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 13 09:40:01 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 13 09:40:01 2017 +0000"
      },
      "message": "Merge \"Reduce DWARF local variable error to just warning.\""
    },
    {
      "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": "e155f4b858be42a825e8270f65abb0fdcf6cbc9f",
      "tree": "545d99febd61872a7a7c1c8e77e53b104db0ad7a",
      "parents": [
        "bc96fc6e2d8dd02e9b085b1c7ec03c3f01982816"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 06 15:18:38 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 12 11:42:21 2017 +0000"
      },
      "message": "Decouple virtual memory allocation in ElfBuilder.\n\nMulti-boot-image requires knowing the loaded size ahead of time,\nand calculating that size ended up being fairly hacky.\n\nDecouple allocation of virtual memory and allocation of file space,\nso that we have more flexibility when we do those.\n\nTest: The generated boot image is bit-for-bit identical as before.\n\nChange-Id: I012b55a71e7625f2310570f9b91447c9db73578b\n"
    },
    {
      "commit": "31f4c9f86522061d682fd0e2c6003043cec496dc",
      "tree": "fc7192bc634811bdc8176afc4b5e60a049d56ae0",
      "parents": [
        "f23779bc210ecbf448e61d7b18088b6afb46a476"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 08 15:46:11 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 11 19:55:46 2017 -0800"
      },
      "message": "Add CodeItemDebugInfoAccessor\n\nUse it in places where DecodeDebugPositionInfo is called.\n\nMotivation: Abstract away calls to GetDebugInfoOffset.\n\nBug: 63756964\nTest: test-art-host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 --debug\n\nChange-Id: I3ab2eff56c472cc717f49d17fd17eb0b8fde4062\n"
    },
    {
      "commit": "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": "566865df6a6292355f061ea857f8df5dcba44ca3",
      "tree": "fa7fc14a7f959416fc20162d5ee114ce75e6146f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 29 14:32:43 2017 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 29 14:57:08 2017 +0000"
      },
      "message": "Reduce DWARF local variable error to just warning.\n\nTest: m build-art\n\nChange-Id: Iaeeb2a7880e6891f5a5c0a5ed554515f0bc5c716\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": "5573c37e795668eca81a8488078f798d977685c3",
      "tree": "5e7675d6c1ca9ed1c31834e52282bfb9f73dc2a4",
      "parents": [
        "1598a77ca3559c8a59902f26ee887504b8159859"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 16 13:34:30 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Nov 16 14:42:49 2017 -0800"
      },
      "message": "cpplint: Remove many unnecessary NOLINT\n\nNow that we updated to upstream cpplint, a lot of these NOLINTs are no\nlonger necessary.\n\nBug: 68951293\nChange-Id: If8ed5ffe89727f313f907a214b6d8fd2a2eddbad\n"
    },
    {
      "commit": "92f7f3ce3b01f7c7df1c15b81c900e087248093f",
      "tree": "37647ac824e450f80d752539cabbe631ba795c75",
      "parents": [
        "5dcb0d2cabe9d67987a6a7477fb124cef92abefb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 11:38:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 15 14:29:52 2017 +0000"
      },
      "message": "Use intrinsic codegen for compiling intrinsic methods.\n\nWhen compiling an intrinsic method, generate a graph that\ninvokes the same method and try to compile it. If the call\nis actually intrinsified (or simplified to other HIR) and\nyields a leaf method, use the result of this compilation\nattempt, otherwise compile the actual code or JNI stub.\n\nNote that CodeGenerator::CreateThrowingSlowPathLocations()\nactually marks the locations as kNoCall if the throw is not\nin a catch block, thus considering some throwing methods\n(for example, String.charAt()) as leaf methods.\n\nWe would ideally want to use the intrinsic codegen for all\nintrinsics that do not generate a slow-path call to the\ndefault implementation. Relying on the leaf method is\nsuboptimal as we\u0027re missing out on methods that do other\ntypes of calls, for example runtime calls. This shall be\nfixed in a subsequent CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 67717501\nChange-Id: I640fda7c22d4ff494b5ff77ebec3b7f5f75af652\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "d8dbc8da0e5cc6b5c2176ce2d3877e6194d72c0c",
      "tree": "af6e9fb02471d75ebdea46190a0aa3e9dbdb892d",
      "parents": [
        "93780a60090356921b844dbefdc13442c9f18b52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 13:37:47 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 15:55:10 2017 +0100"
      },
      "message": "Refactor compiled_method.h .\n\nMove LinkerPatch to compiler/linker/linker_patch.h .\nMove SrcMapElem to compiler/debug/src_map_elem.h .\nIntroduce compiled_method-inl.h to reduce the number\nof `#include`s in compiled_method.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id211cdf94a63ad265bf4709f1a5e06dffbe30f64\n"
    },
    {
      "commit": "7452797678c4345d4a9e65b03e00af703c2c5fe0",
      "tree": "fd23d118a6317737a692402a648217418c3d7b99",
      "parents": [
        "3c683150bcf2f1cabbe2e5f9d10d8c670b67fb7e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 29 15:57:32 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 10:58:42 2017 +0100"
      },
      "message": "Refactor linker files from compiler/ to dex2oat/.\n\nThis shifts some code from the libart-compiler.so to dex2oat\nand reduces memory needed for JIT. We also avoid loading the\nlibart-dexlayout.so for JIT but the memory savings are\nminimal (one shared clean page, two shared dirty pages and\nsome per-app kernel mmap data) as the code has never been\nneeded in memory by JIT.\n\naosp_angler-userdebug file sizes (stripped):\n  lib64/libart-compiler.so: 2989112 -\u003e 2671888 (-310KiB)\n  lib/libart-compiler.so: 2160816 -\u003e 1939276 (-216KiB)\n  bin/dex2oat: 141868 -\u003e 368808 (+222KiB)\nLOAD/executable elf mapping sizes:\n  lib64/libart-compiler.so: 2866308 -\u003e 2555500 (-304KiB)\n  lib/libart-compiler.so: 2050960 -\u003e 1834836 (-211KiB)\n  bin/dex2oat: 129316 -\u003e 345916 (+212KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: cd art/; mma; cd -\nChange-Id: If62f02847a6cbb208eaf7e1f3e91af4663fa4a5f\n"
    },
    {
      "commit": "09659c22dc2f2c85a0ade965d1fc5160944b8692",
      "tree": "66fd5729395d27569c4d9d255a5ce9b44cb000bf",
      "parents": [
        "4d159807a4854caa6396b708a38bbd6fa49d736f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 18:23:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 19 10:26:51 2017 -0700"
      },
      "message": "ART: Remove heap poisoning from globals.h\n\nRemove mostly-unused include and move it to its users.\n\nTest: m\nChange-Id: Ibb40f919db64a490290c6e18cf1123aaf44199fc\n"
    },
    {
      "commit": "216ba99075c650822585b92c37161aabd45f74a0",
      "tree": "02a4ca81e9ad503c15210c386de811fcdcf7d533",
      "parents": [
        "a62747766bd1ec719e812eecc66bc519ff058c3b",
        "56da23c6a20e01724b9495443ccab75d4abcaa36"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Sep 19 14:30:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 19 14:30:43 2017 +0000"
      },
      "message": "Merge \"DWARF: Allow compilation units to contain methods out of order.\""
    },
    {
      "commit": "1b404a8b34f6fa80342955cb0a61673503328b51",
      "tree": "df0d83903e77c55dcb476a19961ea9cccc13e616",
      "parents": [
        "fe712a8b9c247d66df013f2b4b6faa6009d745bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 01 13:35:26 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 18 16:53:30 2017 +0100"
      },
      "message": "Add debug info for link-time generated thunks.\n\nAdd debug info for method call thunks (currently unused) and\nBaker read barrier thunks. Refactor debug info generation\nfor trampolines and record their sizes; change their names\nto start with upper-case letters, so that they can be easily\ngenerated as `#fn_name`.\n\nThis improved debug info must be generated by `dex2oat -g`,\nthe debug info generated by `oatdump --symbolize` remains\nthe same as before, except for the renamed trampolines and\nan adjustment for \"code delta\", i.e. the Thumb mode bit.\n\nCortex-A53 erratum 843419 workaround thunks are not covered\nby this CL.\n\nTest: Manual; run-test --gdb -Xcompiler-option -g 160, pull\n      symbols for gdbclient, break in the introspection\n      entrypoint, check that gdb knows the new symbols\n      (and disassembles them) and `backtrace` works when\n      setting $pc to an address in the thunk.\nBug: 36141117\nChange-Id: Id224b72cfa7a0628799c7db65e66e24c8517aabf\n"
    },
    {
      "commit": "56da23c6a20e01724b9495443ccab75d4abcaa36",
      "tree": "d4905d048f66dec7658d25aa3e1ef81ba2bbf6ed",
      "parents": [
        "fe712a8b9c247d66df013f2b4b6faa6009d745bb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Sep 08 19:59:15 2017 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Sep 18 16:45:23 2017 +0100"
      },
      "message": "DWARF: Allow compilation units to contain methods out of order.\n\nTest: m test-art-host\n\nChange-Id: I463a413fea3a740d4a8912f138bdccdc09a3d1e4\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": "d49012909625c3bf87bf51138fe79315ce1b1bdc",
      "tree": "349ef2cdcb7255d042244046601bd0fd5eb3a092",
      "parents": [
        "726e1793d3f54470705e5b84e7860074e029b0ed"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 18:41:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 20:44:33 2017 -0700"
      },
      "message": "ART: Clean up heap headers\n\nUse more forward declarations for accounting structures and spaces.\nFactor out structs to reduce header surface. Remove heap include where\nunnecessary. Fix up transitive users. Move some debug-only code out\nof line.\n\nTest: m test-art-host\nChange-Id: I16db4aaa803f39e155ce6e1b0778b7e393dcbb17\n"
    },
    {
      "commit": "8ea4eec9139da904979792a0660e992c3f6318d4",
      "tree": "4ab4cadb0fba2a1489b5491f4dec263cb6b1568c",
      "parents": [
        "deae7db5864fa50c5a1cd6c232a17aeb986b36e1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 13:53:03 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Mark some functions as always-inline\n\nThese functions should be marked correctly to avoid ODR violations.\n\nBug: 32619234\nTest: m\nChange-Id: Ifbdc349b7bee3fa356b175be438d04c6c4eae01f\n"
    },
    {
      "commit": "deae7db5864fa50c5a1cd6c232a17aeb986b36e1",
      "tree": "cdedad3d0f921e4f82fa7b65d55820455b7ac0ea",
      "parents": [
        "8d01c3708c4becb186979ed9377aed0fc2954d06"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 09:56:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Add missing namespace comments\n\nAdd closing namespace comments.\n\nBug: 32619234\nTest: m\nChange-Id: I1f50e09dcd1038c4b540b87e5c19e319c1f592e4\n"
    },
    {
      "commit": "3bada4be05bb44f2dccb043ba7aef17f15b520f0",
      "tree": "f67a4016995702af1cec2ab0556909bcfffd68e8",
      "parents": [
        "a654e0378a8d0bb149362399917e4da2959e6991"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 19 12:32:47 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 19 12:32:47 2017 +0100"
      },
      "message": "Avoid binding const references to temporaries.\n\nTest: Rely on TreeHugger.\nChange-Id: I52930cfaea4b5e977f125500bb8c9160f9c8db33\n"
    },
    {
      "commit": "a1d2f957a21319d1110bebb9a52f46fd1c67ffaf",
      "tree": "db9b6eda7cd4764e13c07256df14a7c14888ee75",
      "parents": [
        "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 20 22:53:58 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:41:28 2017 -0700"
      },
      "message": "ART: Clean up art_field.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit.\n\nTest: m\nChange-Id: I6ff2d6f89b741d8188e19426eccf4743fec688fc\n"
    },
    {
      "commit": "575d3e60c68b5cf481b615dde4a16283507b19ed",
      "tree": "4718f2747233e74268de21d804df9bfe0b7e4362",
      "parents": [
        "857acf51fbc5a931939c20e9e299c69676baf654"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 06 11:00:40 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 08 09:51:27 2017 -0800"
      },
      "message": "Clean up code info table layout\n\nPreviously:\nTable layout was computed multiple places like stack_map_stream,\nand getters. This made it difficult to add new stack map tables and\nmade the code hard to understand.\n\nThis change makes the table layout specified all inside of the code\ninfo. Updating the layout only requires changing ComputeTableOffsets.\n\nChanged the stack map inline info offset to be an index, so that it is\nnot require the inline infos are directly after the dex register table.\n\nOat file size for a large app: 94459576 -\u003e 93882040 (-0.61%)\n\nUpdated oatdump and fixed a bug that was incorrectly computing the\nregister mask bytes.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I3a7f141e09d5a18bce2bc6c9439835244a22016e\n"
    },
    {
      "commit": "a2f526f889be06f96ea59624c9dfb1223b3839f3",
      "tree": "769f517e6664de0e89abeadf07a39d5410fcee42",
      "parents": [
        "64e50021845b1ad9d8851596e8aaddf18be217c2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 19 14:48:48 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 20 15:47:06 2017 -0800"
      },
      "message": "Compressed native PC for stack maps\n\nCompress native PC based on instruction alignment. This reduces the\nsize of stack maps, boot.oat is 0.4% smaller for arm64.\n\nTest: test-art-host, test-art-target, N6P booting\n\nChange-Id: I2b70eecabda88b06fa80a85688fd992070d54278\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": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    }
  ],
  "next": "d9c90373d640a5e08072cf469c372e24a8c0fc35"
}
