)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "91cc06c1814bd1d0fd6635bc3d7632a2bb7b0e7c",
      "tree": "7c57374bd28d245fd0f071ec66d9aad8501a878a",
      "parents": [
        "5d8112029d0e085c5a0099257daa4c7e29c12310"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 07 16:13:58 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 08 15:48:02 2016 +0000"
      },
      "message": "Mark DWARF lines in non-debuggable methods as \"not a statement\".\n\nThis is a hint to the debugger that breakpoints and stepping\nmight not function as intended (since we have limited information).\n\nChange-Id: I23c4a816182cc7548fcd69fbd00112225e7b1710\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": "24868a16c71d9a024101cce3b9ecc4b5ad038d07",
      "tree": "9da04303cf2ba019933e9c2283d597da967c9481",
      "parents": [
        "99e8e0b968e31b3757e329de560886b5aa7d6a13"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 29 18:59:56 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 03 10:17:42 2016 +0000"
      },
      "message": "Share DWARF .debug_abbrev sections.\n\nRestructure the code so that all compilation units share the same\n.debug_abbrev sections.  This deduplicates many of the abbrevs.\n\nChange-Id: I7da07a8c850871786df52674183c16d574684729\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": "c60e1b755c5632dfeb04c333489ede52ee5c945f",
      "tree": "9582a0ffc99e4ad11dcd5d95dd97b09bc6acc5bf",
      "parents": [
        "7b926cdacc2b67241bc9cb5f2d4b04b13ca79d0e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "message": "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS\n\nUse the proper define.\n\nChange-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085\n"
    },
    {
      "commit": "97dabb76c65bcf43225037799e22860384e6d16a",
      "tree": "b1b7003c03cfc4cdaa9d4c9d9e206dfebd82bba6",
      "parents": [
        "e257ee4397e0ca45ff627486ccaeecbf26245c86"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jun 11 08:49:57 2015 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Jun 11 08:49:57 2015 +0100"
      },
      "message": "Fix build breakage in dwarf_test.\n\nDefine a variable only if it\u0027s going to be used.\n\nChange-Id: Id293f79bf986c79fb33daa3242388303c0fb1f08\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": "c2055cf5d764e7f861818121afec9c7d88465af5",
      "tree": "b05a3d31ed3948aff8ad411be7245048d84198b0",
      "parents": [
        "2f6cdb01f74772c1c521a125776ef57ea3c73d43"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Apr 12 14:58:39 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Apr 13 21:40:58 2015 +0100"
      },
      "message": "Add test for x86-64 DWARF register mapping.\n\nThis is the only mapping which is non-trivial.\n\nChange-Id: I59be4b6ffb0ffbbf00ddb72e77e80cfb9e89d9f2\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"
    },
    {
      "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"
    }
  ]
}
