)]}'
{
  "log": [
    {
      "commit": "8ea4eec9139da904979792a0660e992c3f6318d4",
      "tree": "4ab4cadb0fba2a1489b5491f4dec263cb6b1568c",
      "parents": [
        "deae7db5864fa50c5a1cd6c232a17aeb986b36e1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 13:53:03 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Mark some functions as always-inline\n\nThese functions should be marked correctly to avoid ODR violations.\n\nBug: 32619234\nTest: m\nChange-Id: Ifbdc349b7bee3fa356b175be438d04c6c4eae01f\n"
    },
    {
      "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": "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": "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": "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": "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"
    }
  ]
}
