)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "197160d47f34238cb5e7444fa4c2de300db8e2c6",
      "tree": "4c07b9e97e8ffaffb274d03b63701780baf0b72f",
      "parents": [
        "ef0119a0f329906ba1e8cbd8e53ce5a759fd4f99"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Mar 07 17:33:57 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 10 10:11:31 2016 +0000"
      },
      "message": "Refactor MethodDebugInfo (input of DWARF writer).\n\nDo not pass CompiledMethod pointer through since it is only available\nduring AOT compile but not during JIT compile or at runtime. Creating\nmock CompiledMethod just pass data is proving increasingly tricky, so\ncopy the fields that we need to MethodDebugInfo instead.\n\nChange-Id: I820297b41e769fcac488c0ff2d2ea0492bb13ed8\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": "5d8112029d0e085c5a0099257daa4c7e29c12310",
      "tree": "b98a1b83095ebd34feb3140e6910ec7e830bce0a",
      "parents": [
        "8a8c84114b16b8971bc2d3c5c7e0e31470d1a68b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 08 13:21:22 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 08 13:46:37 2016 +0000"
      },
      "message": "Propagate InstructionSetFeatures to ElfBuilder.\n\nThis is subset of CL171665 and it separates it into two.\nIt will be needed to generate .MIPS.abiflags ELF section.\n\nChange-Id: I5557e7cb98d0fa1dc57c85cf6161e119c6d50a1a\n"
    },
    {
      "commit": "2ed15b61105b0f8ce811c32725bb9a1b6142c3a7",
      "tree": "3247194c8562f47137e45ebfd6c5f7a9a9d7f426",
      "parents": [
        "a48224f32797b234f07d78fbbede5edbb212ceab"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 04 11:34:46 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 04 15:47:57 2016 +0000"
      },
      "message": "Cache DexRegisterMaps when writing native debug info.\n\nI might make the function more expensive in the future so I want\nto make sure it gets called only the minimum number of times.\n\nChange-Id: I1d09ecf1db7b54d28aaa11a152226d469f514fe7\n"
    },
    {
      "commit": "7dc11782ff0a5dffcd8108f256f8975f0b3e8076",
      "tree": "c3f6463fb378775d9b348f8fcfccfcdb410cfcc2",
      "parents": [
        "99da8cd8818e015b21d1c2af73ac40749698c930"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 13:23:56 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 14:07:27 2016 +0000"
      },
      "message": "Implement \u003c\u003c operator for DexRegisterLocation::Kind.\n\nThis makes it comparable in DCHECK_EQ and similar methods.\n\nChange-Id: I6b5b237be89325850ae6860d011fd6741189ab01\n"
    },
    {
      "commit": "3ce0bfa17450cedc341d1a159204f1d8245baa02",
      "tree": "37880639cf4d3b91528c11c55c4fbafc718cc166",
      "parents": [
        "936d5dc60fa3f4dadf3654db04d2b361dc0b745c",
        "b396c735e0de984ab0dcbeed06765c75a75e8352"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 17 15:34:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 15:34:16 2016 +0000"
      },
      "message": "Merge \"Add simple deduplication for .debug_ranges.\""
    },
    {
      "commit": "db65d7453ce559dd01cf73df8832833c33949a80",
      "tree": "39abea1f66cb4adfe14f4c3955d802a19a4e6b31",
      "parents": [
        "01298eec8f988ce0f98651f89723ed4f0061b43e",
        "99b87ebbe287ddadf530b217b11a38226bca4367"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 16 11:37:37 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 16 11:37:37 2016 +0000"
      },
      "message": "Merge \"Change how DWARF detects end of prologue.\""
    },
    {
      "commit": "99b87ebbe287ddadf530b217b11a38226bca4367",
      "tree": "b676c33721afe390f7147388505b2da9d278c506",
      "parents": [
        "96bbc8fcac2d408e0afdcae933653198fb8bbe92"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 09 18:16:35 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 16 11:30:03 2016 +0000"
      },
      "message": "Change how DWARF detects end of prologue.\n\nInstead of ignoring stack map without dex register maps altogether,\nexplicitly calculate end of prologue as first stack map which has\ndex register maps. This gives us more line number mappings.\n\nChange-Id: I643cf0f9daf9762d894fbc94f5ff981ef6c0583b\n"
    },
    {
      "commit": "b396c735e0de984ab0dcbeed06765c75a75e8352",
      "tree": "44614c8af25bff48d7a466da05777e7435978b10",
      "parents": [
        "96bbc8fcac2d408e0afdcae933653198fb8bbe92"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 10 14:35:34 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 16 11:14:34 2016 +0000"
      },
      "message": "Add simple deduplication for .debug_ranges.\n\nVariables with same scope can usually share .debug_ranges entries.\n\nChange-Id: I855f456782afdcc8ac5f622365d62ba8950a5c95\n"
    },
    {
      "commit": "bfd26cdd6f8273618a3a3137ada579b03f96ae82",
      "tree": "d1ea754461ecad9f6f2062b426f2fd625fee4a0d",
      "parents": [
        "96bbc8fcac2d408e0afdcae933653198fb8bbe92"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 10 13:57:09 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 10 14:37:39 2016 +0000"
      },
      "message": "Fill some gaps in .debug_loc.\n\nUse best-effort guess when the location is unknown.  This is only\nrelevant for PCs in the middle of the statement where the debugger\nshould not usually stop in the first place.\n\nThe main motivation is to reduce the size .debug_loc since the\nbest-effort guesses allow us to merge consecutive entries.\n\nChange-Id: I94bfd01363404e72a2c953309e59020b1a6a4764\n"
    },
    {
      "commit": "c5bfa97c47d656b76f297af8abcd5f7502987399",
      "tree": "84da9d0f39096d8b857760a0848c0231aff0ed6d",
      "parents": [
        "a0f2bc5b09cdaf8a8ff5cec3c40a9f18885e8796"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 05 15:49:10 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 08 12:47:07 2016 +0000"
      },
      "message": "Split elf_writer_debug.cc to several files.\n\nRefactoring only. The file has grown significantly over time,\nand it is time to split it so it can be better managed.\n\nChange-Id: Idce0231718add722292f4701df353d5baf31de5f\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"
    }
  ]
}
