)]}'
{
  "log": [
    {
      "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": "ef8c3376a812e943d4e7c4ef96f17e218d11bc7c",
      "tree": "18b28f41b7764a7f14bbc57b69b7d6b37c8c03b4",
      "parents": [
        "35363cf978d4d0b452cb8849041ff7dd6a6718bc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 15:01:42 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 18 16:43:46 2021 +0000"
      },
      "message": "Do not crash on out-of-date oat files.\n\nCheck that the OatHeader is valid before searching\nthe key-value store for \"debuggable\".\n\nTest: New test in dex2oat_test.cc .\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 179221298\nChange-Id: Ib10c919883b31b71810cc876fb38105b48a58bcb\n"
    },
    {
      "commit": "e3ca16f035ca100bad8225d5dc2cf9ccd1090a41",
      "tree": "a0a89a9beff32c7e2a357690f98c9be72238592e",
      "parents": [
        "375257870bae0f9fc66f99b69a2b1e519c170c1c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 12:41:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 17 15:56:46 2021 +0000"
      },
      "message": "Do not use absolute addresses in image test oat files.\n\nWe have not been using oat files with absolute addresses\nfor a long time, except that we forgot to remove code that\ncreates such files for image tests (gtests). Remove that\ncode now as well as related code including code that deals\nwith obsolete `oat_patches` sections.\n\nTest: m test-art-host-gtest\nChange-Id: If3e752f01c453e2a2628ac82c3a990c68047610e\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": "c09cd0513b860c4301ca7bd6a9065b583d102295",
      "tree": "1c7aa4ed2b9b5b1335829461e764c94565afb71d",
      "parents": [
        "40f8a74cba008af768316f0b5bfe9502174b6d02"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 23 16:36:36 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 31 11:50:53 2018 +0100"
      },
      "message": "Reserve boot image memory in one go.\n\nLoad boot image components into the reserved memory.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 77856493\nChange-Id: I214f947979bc0bbfc6df4312527504e90b88a01d\n"
    },
    {
      "commit": "c34bebf39410f5571d3d5813157b61f274d435c3",
      "tree": "73909d3b34a2908e9de44cc60c4a2ff74eabefd7",
      "parents": [
        "f345404c725330914b8313d2c1af17226c5b92ca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 16 16:12:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 21 13:51:00 2018 +0100"
      },
      "message": "Remove unnecessary indirection from MemMap.\n\nAvoid plain MemMap pointers being passed around by changing\nthe MemMap to moveable and return MemMap objects by value.\nPreviously we could have a valid zero-size MemMap but this\nis now forbidden.\n\nMemMap::RemapAtEnd() is changed to avoid the explicit call\nto munmap(); mmap() with MAP_FIXED automatically removes\nold mappings for overlapping regions.\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: I12bd453c26a396edc20eb141bfd4dad20923f170\n"
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\n"
    },
    {
      "commit": "440a9b3b3e6aa60c14e73a97dd85c9ada0898569",
      "tree": "26dcc48d91e3eec18ab1e4dd987962a0939f6531",
      "parents": [
        "d1652d14fbf477b3091eec3764b9890f2c072055"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 15 17:47:29 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 21 12:57:12 2018 +0000"
      },
      "message": "Add timestamps to JIT/DEX native debug info.\n\nThis a forward-looking change intended to allow simpleperf to\nreliably correlate samples and native debug information.\n\nI have added the timestamps to both JIT and DEX, and refactored\nthe code in the process to avoid code duplication.\n\nTest: testrunner.py -t 137\nChange-Id: I45fa4310305aff540e036db9af15a86c5b8b7aff\n"
    },
    {
      "commit": "f5b0f2cef8554efaa90adc6a1ae04c2b533970ed",
      "tree": "431874a41548ba5d18598a5b1b520de042e012a9",
      "parents": [
        "4c91f05a9ad59759760fb8c1543684dfdb9ab7dc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 14 01:04:26 2016 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 14 16:52:42 2016 -0700"
      },
      "message": "Ensure OpenDexFilesFromImage closes file to prevent file descriptor leak\n\n(cherry picked from commit 645e477c2ce7a59ac98bc86463826cf082a13ad8)\n\nTest: m -j32 test-art-host\nBug: 32095919\nChange-Id: I44541edeb403a508e1b9794ee09fb1f55e3f42bf\n"
    },
    {
      "commit": "bcb6a72569a1401b36a3ad3b6aa4d13e29966cf0",
      "tree": "75f7f56b3d158b14f20cfc30e30fb3e48ed9327f",
      "parents": [
        "3a1b33df0df7db2b8685f8616b9240accd6a23c5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 08 16:49:58 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 14 15:41:49 2016 -0700"
      },
      "message": "Add oatdump support for app images\n\nExample usage on host:\noatdumpd --app-oat\u003dart/plus32.odex --app-image\u003dart/plus32.art\n--image\u003dart/oats/system@framework@boot.art --instruction-set\u003darm\n\nTODO: Add to oatdump test.\n\nBug: 27408512\nBug: 22858531\n\nChange-Id: I320db8b76c780c6eadabcb45ce88f45950741484\n"
    },
    {
      "commit": "5d55d9ac7fc2fbdbdda49777d83fd4fa8303da28",
      "tree": "93595679f16437c1af60d767305e67102787af4d",
      "parents": [
        "ae6f23c83e1c8dcfbc4f74186ea1a37f1044414b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 11 15:25:22 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 11 15:25:22 2016 +0000"
      },
      "message": "Remove ElfFile::GdbJITSupport\n\nThis method notified gdb about loaded ELF file.\nSince we use dlopen to load the ELF file now, it should not be needed.\n\nNote that the method had nothing to do with JIT compiler.\n\nChange-Id: I967495c39e42112023a495ce5fac25b97669d1d5\n"
    },
    {
      "commit": "f8980875ef8fb0ce86be4ed2c0af7070f5ae9cfd",
      "tree": "9750cf170ec12bbd0638c5e373a35fe832999173",
      "parents": [
        "eabafcefca8ead8309dccc1c5510e6e0845e471d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 22 17:04:47 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 27 01:44:02 2015 +0100"
      },
      "message": "Split .oat_patches to multiple sections.\n\n.oat_patches section currently contains encoded patch locations for\nseveral other sections. Split it to several sections - one for each\nof the destination sections. For example, .text.oat_patches section\ncontains patch locations for the .text section.\n\nThis ensures that if we strip some the sections using standard\ntools, we strip the corresponding .oat_patches section as well.\n\nIt also makes the overall design simpler.\nI should have done it this way in the first place.\n\nSince ApplyOatPatches has been simplified and uses unaligned memory\naccess, this also fixes bug 21403573.\n\nBug:20556771\nBug:21403573\nChange-Id: Iae7c423911507b524eec500e8d61744046fcd3ba\n"
    },
    {
      "commit": "3fc9903407c6e89ffbbc92ded9e272d9de58e9b6",
      "tree": "ae8898200f09c4015ecc7d920711dd1053834e94",
      "parents": [
        "c3912c8a2db109a15603554fd456f56cd0a69ad0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 19:06:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 14 13:34:08 2015 +0100"
      },
      "message": "ART: Do not relocate app program headers in patchoat.\n\nChange the check whether to relocate program headers in\npatchoat to simply look whether there is a PT_LOAD section\nwith p_vaddr \u003d\u003d 0. If there is, don\u0027t relocate the headers,\nit should be an app. Otherwise, it\u0027s a boot image and needs\nto be relocated.\n\nAdd overflow checking to ElfFileImpl\u003c\u003e::GetLoadedSize().\n\nBug: 21047854\nChange-Id: Ie6737f338687296b6dbf4bb3b36358501dfb1587\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "533c207f9d2da6d913c4b10f6f757fe9d6367b10",
      "tree": "1e2c1bf5c91898e785398a3d66e7e7570e8b29db",
      "parents": [
        "8d1ba74fe48703fc2b5a5920dd5eea0c65db5b15"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 22 12:20:22 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 22 16:56:23 2015 +0100"
      },
      "message": "Simplify template parameters of Elf classes.\n\nThe ELF specification defines several types which differ between\n32-bit ELF and 64-bit ELF.  We used to template all ELF-related\nmethods on all of those types which was very verbose.\n\nThis CL wraps all the types as typedefs in ElfTypes32 and ElfTypes64.\nOne of those wrappers is then used as the template parameter.\n\nChange-Id: I65247c2c79d92a7c4799e988cf3e4a1b10eb4788\n"
    },
    {
      "commit": "2f6cdb01f74772c1c521a125776ef57ea3c73d43",
      "tree": "163f90841f02b9529997f4e3eea65e512e4795a3",
      "parents": [
        "58565098b2298041ccc97371a3cc486df88d51b3"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 11 00:17:53 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Apr 11 19:14:10 2015 +0100"
      },
      "message": "Relocate DWARF using .oat_patches.\n\nThe current solution is to hard-code knowledge of DWARF in the linker.\nThis works for simple use of DWARF, but breaks as soon as I try to do\nanything more complex.  Making the linker fully support DWARF would be\nnon-trivial task and would be essentially rewrite.  Using .oat_patches\nis much easier solution.\n\nRelocating .debug_* sections required extending .oat_patches to support\nmore sections than just .text.  I have encoded each section as\nnull-terminated section name followed by ULEB128 deltas.\n\nThe ULEB128 encoding shrinks .oat_patches for .text by factor of\nabout 6 with 64-bit compiler, and factor of 3 with 32-bit compiler.\n\nOn the other hand, it grows by the extra .oat_patches for DWARF which\nwere not present before (if debug symbols are included).\n\nOverall, it is still a clear improvement even with the DWARF patches.\n\nChange-Id: I78ffeda0f8a3da03341995a3b5ef15c954e16e9f\n"
    },
    {
      "commit": "3c54b0023fca579aae006dfa607fb14de5846c42",
      "tree": "7b996231875fdfd54855a9aa86fe2494cdee1ec5",
      "parents": [
        "425ee0e1103b52bb72132df64f503725d1a15300"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 07 16:09:30 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 07 16:43:08 2015 -0700"
      },
      "message": "ART: Fix 64-bit ELF file support\n\nThe API wasn\u0027t cross-compile-safe, 32-bit patchoat would fail for\nnegative delta applied to a 64-bit ELF file.\n\nAdd 64-bit ELF file output to the compilers, behind a flag, currently\noff by default (preserving current behavior).\n\nBug: 20095017\nChange-Id: I2cde7b4c7cc83413c76692d7b745868d644a604c\n"
    },
    {
      "commit": "46774767fcf7780d1455e755729198648d08742e",
      "tree": "09a5d87ff0acbc7eb1fa94ec901ba10009178f03",
      "parents": [
        "11bd683f6dbebe2f3d02fa383fc9dbc69a83ace8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 22 11:37:02 2014 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Oct 27 20:19:37 2014 -0700"
      },
      "message": "ART: Add support for patching and loading OAT files compiled with PIC\n\n* Images (.art) compiled with pic now have a new field added.\n* isDexOptNeeded will now skip patch-ing for apps compiled PIC\n* First-boot patching now only copies boot.art, boot.oat is linked\n\nAs a result, all system preopted dex files (with --compile-pic) no\nlonger take up any space in /data/dalvik-cache/\u003cisa\u003e.\n\nBug: 18035729\nChange-Id: Ie1acad81a0fd8b2f24e1f3f07a06e6fdb548be62\n"
    },
    {
      "commit": "d4c4d953035d4418126d36517e402f411d6a87f3",
      "tree": "735aacf812bbac7c1ae7c0788c1ca6f58cfa82ee",
      "parents": [
        "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 20:31:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 21:30:37 2014 -0700"
      },
      "message": "Some code clean-up.\n\nChange-Id: I4b745fd5298cd61c793e3b57514b48347bd66c0e\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "62d1ca3182a6cbb921799825f43ad36821233fd7",
      "tree": "54d9663f5ce10f41e95fe774d4e4841c1a78bbc3",
      "parents": [
        "63462448ca4e377074a10a4720aa22f71154dbe9"
      ],
      "author": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Wed Sep 03 17:24:56 2014 -0700"
      },
      "committer": {
        "name": "Tong Shen",
        "email": "endlessroad@google.com",
        "time": "Fri Oct 03 11:25:11 2014 -0700"
      },
      "message": "ART: Prepare for ELF64.\n\nOnly expose necessary interface in ElfFile, and move all details into template class ElfFileImpl.\n\nChange-Id: I9df2bbc55f32ba0ba91f4f3d5d0009e84a2ddf74\n"
    }
  ]
}
