)]}'
{
  "log": [
    {
      "commit": "1a225a76ee6bc29833aee048b6cfae20242bdc8b",
      "tree": "069bfc01d827fcbf9aa4415c4d63d354648f396c",
      "parents": [
        "323844002e54243e295497e7f829e46a533da621"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 05 13:37:42 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 18 13:37:15 2019 +0000"
      },
      "message": "ARM/ARM64: Improve frame entry/exit codegen.\n\nOn ARM64, use STP pre-index for the method and the lowest\nspilled core register for method entry if there\u0027s no gap or\nFP spills in between. On exit, use LDP post-index to restore\nin this case, ignoring the method by loading to XZR. Thus,\nwe save one instruction for both entry end exit for such\nmethods and the performance should be the same or better.\n\nOn ARM, use a single PUSH/POP for method entry and core\nspills if the gap between them is 2 words or less and and we\nhave one or no FP spill, spill args as filler if needed. On\nexit, load the FP spill if any and do a single POP for core\nregisters and return in this situation, clobbering as many\nregisters from r2-r4 as needed; these caller-save registers\nare not used to pass return values. If we cannot do this\nbecause of FP spills but the gap between the method and FP\nspills is 2 words or less, we adjust SP and save the method\nin one PUSH after spilling; there is no similar handling\nfor method exit as the method does not need to be restored.\nThis may improve or degrade performance a bit depending on\nthe particular situation; in the worst case we PUSH/POP\nthree additional registers as a cost for smaller code size.\n\naosp_taimen-userdebug prebuils:\n - before:\n   arm/boot*.oat: 19147484\n   arm64/boot*.oat: 22558344\n   oat/arm/services.odex: 21922256\n - after:\n   arm/boot*.oat: 19105436 (-41KiB, -0.2%)\n   arm64/boot*.oat: 22549624 (-9KiB, -0.04%)\n   oat/arm/services.odex: 21914128 (-8KiB, -0.04%)\n\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 136144107\nChange-Id: Id36c67b4e735418fb18bcd3269b72b25695fbaa2\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": "4fda4eb799c95be266f52aaf3461a440ea86b841",
      "tree": "54a7e56b5633caf2b868f6028010b488eb1923ce",
      "parents": [
        "3c258f4d7a6492af733a9351ba430d876a3e5ccf"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 05 13:34:46 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 08 11:33:50 2016 +0000"
      },
      "message": "Move code related to debug info generation to its own directory.\n\ndebug/dwarf/ contains helper classes which hide the details\nof the DWARF file format. It acts as independent DWARF library.\n\ndebug/ contains ART-specific code which generates ELF debug\nsections (which includes non-DWARF sections like .symtab).\n\nChange-Id: Id351f604e4e64be2ca395a78324ea02e30481497\n"
    },
    {
      "commit": "91cb54e6caf8b06546c416e7f7467f1c03b3a757",
      "tree": "ec445c2b9ee1f3ad4051162be56c56d244da8cd0",
      "parents": [
        "0e78aedf507512abcb730851025547645cd48c9c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 15 13:47:59 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 22 14:40:41 2016 +0000"
      },
      "message": "Create helper class for DWARF expressions.\n\nThis ensures we generate valid DWARF opcodes and\nit slightly simplifies the debug info writer.\n\nChange-Id: I2ef8a9222c9a129c58f500741acd209b67e2ecff\n"
    },
    {
      "commit": "10ef6941648aad04d54527d4a7a6070bf7065e88",
      "tree": "50fe6b50a3020ec7d25fbd5e4393db1c04452ce7",
      "parents": [
        "c74e69f831608964f89ac7a641fbcc09156eefaa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 22 15:25:54 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 04 14:54:23 2015 +0000"
      },
      "message": "Delay emitting CFI PC adjustments until after Thumb2/Mips fixup.\n\nOn Mips also take into account out-of-order CFI data emitted\nfrom EmitBranches().\n\nChange-Id: I03b0b0b4c2b1ea31a02699ef5fa1c55aa42c23c3\n"
    },
    {
      "commit": "ec7802a102d49ab5c17495118d4fe0bcc7287beb",
      "tree": "08649609604b9c96bc48ca071c48b0af5abb1a3f",
      "parents": [
        "b2e436ffcda1d7a87e7bf9133d8ed878388c73c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 01 20:57:57 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 11:10:18 2015 +0100"
      },
      "message": "Add DCHECKs to ArenaVector and ScopedArenaVector.\n\nImplement dchecked_vector\u003c\u003e template that DCHECK()s element\naccess and insert()/emplace()/erase() positions. Change the\nArenaVector\u003c\u003e and ScopedArenaVector\u003c\u003e aliases to use the new\ntemplate instead of std::vector\u003c\u003e. Remove DCHECK()s that\nhave now become unnecessary from the Optimizing compiler.\n\nChange-Id: Ib8506bd30d223f68f52bd4476c76d9991acacadc\n"
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "7c869b352d122ab0bbf7cb529b45fc0365837c3a",
      "tree": "364077598a96e702ed40ccaae334b8ce84aabdb6",
      "parents": [
        "2f6cdb01f74772c1c521a125776ef57ea3c73d43"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 08:47:47 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Apr 13 21:54:26 2015 +0100"
      },
      "message": "Move the file which defines DWARF enums.\n\nIt was previously part of the runtime since it was needed\nby the linker.  This is no longer the case so we can move\nit to the DWARF utility library.\n\nChange-Id: I1874fad45d27fd9ebbae17dd82d43322190f91ef\n"
    },
    {
      "commit": "c6b4dd8980350aaf250f0185f73e9c42ec17cd57",
      "tree": "ef8d73e37abc04aecb430072a8bc463c73398fee",
      "parents": [
        "dd97393aca1a3ff2abec4dc4f78d7724300971bc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 07 20:32:43 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 09 16:47:50 2015 +0100"
      },
      "message": "Implement CFI for Optimizing.\n\nCFI is necessary for stack unwinding in gdb, lldb, and libunwind.\n\nChange-Id: I1a3480e3a4a99f48bf7e6e63c4e83a80cfee40a2\n"
    },
    {
      "commit": "1109fb3cacc8bb667979780c2b4b12ce5bb64549",
      "tree": "00b38dbb7d7cf173bb376ed0b87d015dc09a6559",
      "parents": [
        "cde8e5da3e774a2494b051043130c0495eca09ef"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 07 20:21:06 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 08 15:08:07 2015 +0100"
      },
      "message": "Implement CFI for Quick.\n\nCFI is necessary for stack unwinding in gdb, lldb, and libunwind.\n\nChange-Id: Ic3b84c9dc91c4bae80e27cda02190f3274e95ae8\n"
    },
    {
      "commit": "15c1975f5fa5ae646ae87b57394bfdae1090a236",
      "tree": "6f43d273a55a01b3e556f2c48e5e0ac13e7057c4",
      "parents": [
        "1ded5beffa4bae6203e1fa03903c6ffa2766bf4c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 31 14:53:55 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 31 15:54:51 2015 +0100"
      },
      "message": "Revert \"Revert \"Add small library for writing of DWARF data.\"\"\n\nUse objdump from prebuilts.\n\nThis reverts commit 1ded5beffa4bae6203e1fa03903c6ffa2766bf4c.\n\nChange-Id: I91f61a91827406930039ccf8691359b1c2636640\n"
    },
    {
      "commit": "1ded5beffa4bae6203e1fa03903c6ffa2766bf4c",
      "tree": "94d7d6016c5a58d6c5f31d8350330c8025baa014",
      "parents": [
        "75c3d61011a06c1253e773c42e53ee6f137dbe53"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 31 14:18:47 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 31 14:18:47 2015 +0000"
      },
      "message": "Revert \"Add small library for writing of DWARF data.\"\n\nobjdump differences on the bots\n\nThis reverts commit 75c3d61011a06c1253e773c42e53ee6f137dbe53.\n\nChange-Id: Ie5947a27b9fe5de9d5f0838a024b5cf646ec701e\n"
    },
    {
      "commit": "75c3d61011a06c1253e773c42e53ee6f137dbe53",
      "tree": "2ebc4f07a5e176dd92340b18a42fbb97280c2c89",
      "parents": [
        "c8924c6ea9e83ba3832dd5551df38ab06f4aaca9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 26 16:33:17 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 31 11:22:37 2015 +0100"
      },
      "message": "Add small library for writing of DWARF data.\n\nChange-Id: Ifa77aec7584bfcdcc05ddb049c160be9b6dda7c5\n"
    }
  ]
}
