)]}'
{
  "log": [
    {
      "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": "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": "0fd295f8663e658de429f85f241a142169477335",
      "tree": "6d675ac1fcf29d8cb54a6f27fc5a55325566d79a",
      "parents": [
        "b9ededb3b5c5422a925bb0e3b4b54ae95bf371fd"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Nov 16 16:39:10 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 25 11:58:06 2015 +0000"
      },
      "message": "Add stack locations to DWARF parameters.\n\nTranslate StackMap to DWARF location attributes so that the\ndebugger knows where to read the run-time value from.\n\nChange-Id: I8b2baf23f37e6e7ff6f76e18077d880f0c1cf57d\n"
    },
    {
      "commit": "04b0526d60de4e9979fc486d2ba655247d211d0b",
      "tree": "f1557aea44abe67f83b74e332fc8d8c28192a3ff",
      "parents": [
        "349baca032735e4a386b74709aa94d17f076cbce"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Nov 09 18:05:48 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 20 16:30:38 2015 +0000"
      },
      "message": "Encode function signatures properly in DWARF.\n\nThe signatures were previously stored as plain string.\nThe proper way in DWARF is to store them as structured tree of tags.\n(for example, DW_TAG_subprogram containing DW_TAG_formal_parameter)\n\nNote that this makes the debug sections smaller since DWARF\nsignatures are actually more efficient than just plain strings.\n\nChange-Id: I6afbce28340570666d8674d07c0e324aad561dd5\n"
    },
    {
      "commit": "b851b49eee0a77720347a4f777c07d4531302655",
      "tree": "7ac29ad35fbd39e7a2dd5c6243ef02336fee4be5",
      "parents": [
        "5f5509a17b04dcacf964eefc169cdfbb3014278b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 11 20:19:38 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 11 21:03:37 2015 +0000"
      },
      "message": "Stream DWARF debug section directly to disk.\n\nChange the structure so that the debug sections are written to\ndisk as we go.  There are still some temporary buffers, however,\nwe no longer hold all of the data in memory before writing it.\nWe can not avoid buffering of some things (e.g. .debug_str).\n\nChange-Id: Id4940cf10ae5b6f3cac7fb8d20197f0304079b92\n"
    },
    {
      "commit": "6d8c8f0344a706df651567387ede683ab3ec1b5f",
      "tree": "2c2fe153db3dd59de6b175b040d1209e2e76728e",
      "parents": [
        "2264f624e41acf09b17c3961bd52966e43f2b58f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 26 10:57:09 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Nov 08 20:17:13 2015 +0000"
      },
      "message": "Rewrite ElfBuilder to make streaming directly to file easier.\n\nThe previous design required knowing all the sections and their\nsizes before even the first byte of the file was written.\n\nThe new design allows sections to be written one by one without\nany knowledge of later sections.  Furthermore, as soon as\nsection is started, its virtual memory address is known,\nwhich removes the need for the various patching passes.\n\nThe new ElfBuilder essentially tries to be a thin wrapper\naround OutputStream which keeps track where the various\nsections start/end and then writes their ELF headers.\n\nChange-Id: I817e7f3b41882e4e4b9b442cfe56e4ef2e26babd\n"
    },
    {
      "commit": "35831e8bfa1c0944d4c978d99c4c5b9577945170",
      "tree": "a347ecaf4265a1713c86d528392e162d5edfaebc",
      "parents": [
        "171b12e8060f63cf900ffc43d6db35125f6b8c83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 11 11:59:18 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 15:13:37 2015 +0000"
      },
      "message": "Reduce memory used by CompiledMethods.\n\nUse LengthPrefixedArray\u003c\u003es instead of SwapVector\u003c\u003es to store\nCompiledMethod data and get rid of the unnecessary members\nof CompiledMethod to reduce dex2oat memory usage. Refactor\nthe deduplication from CompilerDriver to a new class.\n\nUse HashSet\u003c\u003e instead of std::set\u003c\u003e for the DedupeSet\u003c\u003e to\nfurther decrease the memory usage and improve performance.\n\nThis reduces the dex2oat memory usage when compiling boot\nimage on Nexus 5 (with Optimizing, -j1) by ~6.75MiB (5%).\nThis also reduces the compile time by ~2.2% (~1.6% dex2oat\ntime; with Optimizing, without -j).\n\nChange-Id: I974f1f5e58350de2bf487a2bca3907fa05fb80ea\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": "17065880693d1b15ffeb60b9955a2d092839977f",
      "tree": "518f28f4767f3144173df2c52d35c4d5f46c532c",
      "parents": [
        "f16474d08ed51a3ccfaa70360aefdf12ebc79da1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 20 05:01:22 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 20 05:09:22 2015 +0100"
      },
      "message": "Use signed encoding when using relative CFI addresses.\n\nThis is required for gdb to work.\nlibunwind works with either encoding.\n\nBug: 21924613\nChange-Id: I4e4f1cf9c65d48fa885a5993eeeed0253a3f2579\n"
    },
    {
      "commit": "ad5fa8c5b26a325dc2a9521b87188755046c17f3",
      "tree": "1be28a827fe9e186196ad744eaa3438c1bea3f0a",
      "parents": [
        "cfee0507f26375fe048ed35f402e61f904db0095"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 06 18:27:35 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 19 15:36:53 2015 +0100"
      },
      "message": "Support generation of CFI in .debug_frame format.\n\n.debug_frame section is almost identical to .eh_frame section.\nThere are only minor differences in the CIE and FDE headers.\nThe main difference is that .eh_frame is intended to be used\nat runtime for exception handling and is therefore allocated\nwithin the running program whereas .debug_frame is not.\n\nThis makes .debug_frame easier to remove using standard tools.\n\"objcopy --strip-debug\" removes .debug_frame, but not .eh_frame.\n(although objcopy can be still be forced to remove .eh_frame)\n\nSimilarly, we might want to separate the CFI to separate debug\nfile or include it as compressed .gnu_debugdata section.\nIt is more appropriate to use .debug_frame for this purpose.\n\nBug:20556771\nChange-Id: I9d91a333b9fb37523fd6fafccfad89b21d2477af\n"
    },
    {
      "commit": "527c9c71f0c6e2f9943ac028e7c050500699a44b",
      "tree": "09e6794e5b184ce33ca468c972a8ef2faff7f174",
      "parents": [
        "e7bee3b7d307508243f4a00b5cf8a8867fcaaff5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 17 21:14:10 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 21 19:47:42 2015 +0100"
      },
      "message": "Generate .eh_frame_hdr section and PT_GNU_EH_FRAME segment.\n\nFixes issue 20125400 - ART: Need .eh_frame_hdr and PT_GNU_EH_FRAME\nfor libunwind.\n\n.eh_frame_hdr serves two purposes. Firstly, it can optionally contain\nbinary search table for fast eh_frame lookup. This is important for\nC++ exception handling, but we do not need it so we omit it.\nSecondly, it contains a relative .eh_frame pointer which makes it\neasier for run-time code to locate the .eh_frame section.\nlibunwind seems to rely on this relative pointer.\n\nBug: 20125400\nChange-Id: I7c1e3f68d914f70781404c508395831a3296a7da\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": "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": "b536247b1ce5de640eec81dddac47802cd074363",
      "tree": "22568fd953bfc92deb3378c3d5b31fb04b9948cc",
      "parents": [
        "8b3c1b6526ff6b44dd724826b8e9e6d0a2067f6e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 08 19:37:39 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 09 23:55:05 2015 +0100"
      },
      "message": "Extend the DWARF library to support .debug_info section.\n\nChange-Id: I9916abd8db227e7a73a3311294e675be5222a709\n"
    }
  ]
}
