)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "d9c90373d640a5e08072cf469c372e24a8c0fc35",
      "tree": "35615699aa6c12b21d9c0de7d11ccf0f088ba0d8",
      "parents": [
        "b180b893b5acb5c55251522465f9d20ed45c3b5a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 16:53:55 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 19:57:21 2016 +0100"
      },
      "message": "Move ArrayRef to runtime/base\n\nWill be used in upcoming CLs regarding VDEX and VerifierDeps.\n\nTest: m test-art-host\nChange-Id: I68e611a4a52246c2bdf45eab7c61f3212908afd4\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292",
      "tree": "4fe7e66f3385b1955934d3ec6f02e00bde6e13b8",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Mon Apr 04 16:27:32 2016 +0100"
      },
      "committer": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Fri Apr 22 13:33:30 2016 +0100"
      },
      "message": "Refactor use of __ANDROID__ macro\n\nWe use the __ANDROID__ macro, which is provided by the toolchain, in\nnumerous places. This patch refactors the usage of this by defining a\nnew macro, ART_TARGET_ANDROID, that is being passed during build to\nART_TARGET_CFLAGS in Android.common_build.mk on the same line as\nART_TARGET. The codebase currently assumes that the existence of the\n__ANDROID__ macro implies that we are compiling art for an android\ntarget device. This is because, currently, target builds are compiled\nwith target toolchains that provide the macro, while host toolchains\ndo not.  With this change this assumption is still preserved. However,\nin a future patch we will add the ability to compile art for a linux\ntarget, and in that case the ART_TARGET_ANDROID macro won\u0027t be passed\nanymore.\n\nChange-Id:  I1f3a811aa735c87087d812da27fc6b08f01bad51\n"
    },
    {
      "commit": "93205e395f777c1dd81d3f164cf9a4aec4bde45f",
      "tree": "1d08efd9b7bca9fe23df9ae9489c5dd575d3c6df",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 11:59:46 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 17:50:16 2016 +0100"
      },
      "message": "Move Assemblers to the Arena.\n\nAnd clean up some APIs to return std::unique_ptr\u003c\u003e instead\nof raw pointers that don\u0027t communicate ownership.\n\nChange-Id: I3017302307a0253d661240750298802fb0d9585e\n"
    },
    {
      "commit": "09ed09866da6d8c7448ef297c148bfa577a247c2",
      "tree": "dad6a5dae6ca6131f1eba201eaa371edc6d9929d",
      "parents": [
        "e28ad4b91591c226ed404a2b01104bb99bfeb28f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 12 21:58:43 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 31 22:12:07 2016 +0100"
      },
      "message": "Pack stack map entries on bit level to save space.\n\nUse only the minimum number of bits required to store stack map data.\nFor example, if native_pc needs 5 bits and dex_pc needs 3 bits, they\nwill share the first byte of the stack map entry.\n\nThe header is changed to store bit offsets of the fields rather than\nbyte sizes. Offsets also make it easier to access later fields without\ncalculating sum of all previous sizes.\n\nAll of the header fields are byte sized or encoded as ULEB128 instead\nof the previous fixed size encoding. This shrinks it by about half.\n\nIt saves 3.6 MB from non-debuggable boot.oat (AOSP).\nIt saves 3.1 MB from debuggable boot.oat (AOSP).\n\nIt saves 2.8 MB (of 99.4 MB) from /system/framework/arm/ (GOOG).\nIt saves 1.0 MB (of 27.8 MB) from /system/framework/oat/arm/ (GOOG).\n\nField loads from stackmaps seem to get around 10% faster.\n(based on the time it takes to load all stackmap entries from boot.oat)\n\nBug: 27640410\nChange-Id: I8bf0996b4eb24300c1b0dfc6e9d99fe85d04a1b7\n"
    },
    {
      "commit": "d89f605b1de929ae158b3844e44a5d57f7aad72d",
      "tree": "a700380294513e8e6878acd3b89292ca1c203d48",
      "parents": [
        "e717e2c2c436da1d6daa572bd3142e34aef25b1c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Mar 12 21:10:04 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Mar 12 21:38:50 2016 +0000"
      },
      "message": "Ignore empty maps when emitting DWARF variable locations.\n\nThis is rewrite of https://android-review.googlesource.com/#/c/202115\n\nThe aim in both cases is to avoid gaps in generated locations.\n(which helps to keep the size of the generated DWARF down).\n\nHowever, the previous CL was a bit too eager with extending of\nvariable scope and reporting locations. We might have reported\nvariable in scope when in fact, it was not.\n\nThis CL implements simpler solution by just filtering stackmaps\nwithout dex register maps at first opportunity. This should\nensure that locations for breakpoint locations are completely\naccurate as originally intended.\n\nChange-Id: I98378716c0ef5ef46b12181502904621eb6ecf2f\n"
    },
    {
      "commit": "2de1e8a52ef8d4b2e033f3404ca9cc970bb5149c",
      "tree": "f140ba578b933c58367745c5670f6575f8bbfdd7",
      "parents": [
        "9faab4dd50d2bdda12284c6b8d3837943a73b5da",
        "6a6b38fbed22688fac7e061450a8a9c64a685faf"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 18:19:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 18:19:12 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Allow duplicated methods in different DWARF line tables.\"\"\""
    },
    {
      "commit": "6a6b38fbed22688fac7e061450a8a9c64a685faf",
      "tree": "79c27dd0575f8d7fac2b9b0c630577701ec1c7a9",
      "parents": [
        "6030b15ce83ac2a9fb78cd9d137b6f4b441e6417"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:35:45 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 18:17:56 2016 +0000"
      },
      "message": "Revert \"Revert \"Allow duplicated methods in different DWARF line tables.\"\"\n\nThis reverts commit 8862fac4a0b97d827d2808146d2d79b8d799b998.\n\nChange-Id: I4d5629df4580b7ac08a5cb04924c56eecad3ad25\n"
    },
    {
      "commit": "9faab4dd50d2bdda12284c6b8d3837943a73b5da",
      "tree": "b028de219d3e6bc1d4fe6e71158e5c5ff61216e6",
      "parents": [
        "6030b15ce83ac2a9fb78cd9d137b6f4b441e6417",
        "252fa90d25eb3fa9c4189304d021533c9657fea7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 18:16:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 18:16:36 2016 +0000"
      },
      "message": "Merge \"DWARF: Compensate for compiler\u0027s off-by-one instruction.\""
    },
    {
      "commit": "09c2a6be63337ee060e2d54bd01cf18be7301d29",
      "tree": "c623c5352bc908410f03b20b772c3dad47df207c",
      "parents": [
        "fdaa583e785383cca68df63c7ef53fcaf667b8e2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 17:11:44 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 17:35:19 2016 +0000"
      },
      "message": "Add trampoline symbols to native debug info.\n\nThe debugger needs them to unwind through the trampolines and to\nunderstand what is happening in the call stack.\n\nChange-Id: Ia554058c3796788adcd7336d620a7734eb366905\n"
    },
    {
      "commit": "b14a5ede4b232d5f7709001d1e0b90e6910d9306",
      "tree": "68fb0485ed511f7f8db178ef4bbb3b495fcd7651",
      "parents": [
        "60e10c8564f47de0b7f29b26d040c591d5a396b5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 16:54:22 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 17:30:57 2016 +0000"
      },
      "message": "Minor optimizations of debug::WriteCFISection.\n\nThe method might be passed method infos without CFI in some cases.\nUse the sorting phase as a chance to filter them out.\nThis makes sure we do not allocate memory and sort methods if there\nis in fact no work to do.\n\nAlso change the sort to stable - for the sake of determinism.\n\nChange-Id: I97d57d77e8b709d0d49d6971f66b955efcbb57b0\n"
    },
    {
      "commit": "252fa90d25eb3fa9c4189304d021533c9657fea7",
      "tree": "3fd03332a888b8e3902dbdc1f0c9f830a55ecc8d",
      "parents": [
        "60e10c8564f47de0b7f29b26d040c591d5a396b5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:25:00 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 16:18:50 2016 +0000"
      },
      "message": "DWARF: Compensate for compiler\u0027s off-by-one instruction.\n\nThe compiler generates stackmaps with PC value which is *after*\nthe instruction rather PC of the instruction itself. This causes\ntrouble when generating native line number mapping since the\nbranch instruction itself will not be mapped, and consequently\nwe get incorrect line number in backtraces. Add code to compensate\nfor this. See the in-code comment for more details.\n\nChange-Id: I72c992e6d08a767f314290d562421b251ae60732\n"
    },
    {
      "commit": "60e10c8564f47de0b7f29b26d040c591d5a396b5",
      "tree": "49809c99b991eece44dad9ca26c89bdcf0f9d911",
      "parents": [
        "8583b44f8b5788b57be4d4738072dc6a99c49823",
        "8862fac4a0b97d827d2808146d2d79b8d799b998"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:35:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 14:35:33 2016 +0000"
      },
      "message": "Merge \"Revert \"Allow duplicated methods in different DWARF line tables.\"\""
    },
    {
      "commit": "8862fac4a0b97d827d2808146d2d79b8d799b998",
      "tree": "27509ec22da5d2b82443142f230525d5b4ad9aea",
      "parents": [
        "3c5462364daee17e651299f1c370f965f34baed8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:34:47 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:34:47 2016 +0000"
      },
      "message": "Revert \"Allow duplicated methods in different DWARF line tables.\"\n\nThis reverts commit 3c5462364daee17e651299f1c370f965f34baed8.\n\nChange-Id: Icc63c47cd53abeff2a470ae84715012a1ef988ac\n"
    },
    {
      "commit": "8583b44f8b5788b57be4d4738072dc6a99c49823",
      "tree": "2c3aea50b7b2c208a8d770b36cf3d392d909d50d",
      "parents": [
        "cc22d41d4de2514cc3cb4ed569764a35f15da48d",
        "3c5462364daee17e651299f1c370f965f34baed8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:28:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 14:28:00 2016 +0000"
      },
      "message": "Merge \"Allow duplicated methods in different DWARF line tables.\""
    },
    {
      "commit": "3c5462364daee17e651299f1c370f965f34baed8",
      "tree": "3e730b28ccd4d7d17d65777eeba6c85c6034fc96",
      "parents": [
        "ef0119a0f329906ba1e8cbd8e53ce5a759fd4f99"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 11:49:20 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 11 14:13:44 2016 +0000"
      },
      "message": "Allow duplicated methods in different DWARF line tables.\n\nThis makes the compilation units more self-contained.\nIf method is mentioned in the compilation unit, we can\nalso find its line table there. Otherwise, we would have\nto search through all of them.\n\nChange-Id: I0cdfb9006e796e41e123fc1f4fecd15312570068\n"
    },
    {
      "commit": "fe736b775c7774bb2f7072e022099ca47dd21a3c",
      "tree": "92a7850c812dc0373738c6c5cfdff5a32d5e489c",
      "parents": [
        "197160d47f34238cb5e7444fa4c2de300db8e2c6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 09 11:44:44 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 10 10:29:27 2016 +0000"
      },
      "message": "Allow generation of native debug info for multiple methods.\n\nSlight tweak in the API which I will need in the near future.\n\nChange-Id: I45954ae16710bc941a9a06a3a17c70798315ca53\n"
    }
  ],
  "next": "197160d47f34238cb5e7444fa4c2de300db8e2c6"
}
