)]}'
{
  "log": [
    {
      "commit": "45aa598cd1773f5eb1705dec13bea059238e054d",
      "tree": "f5a6fd7445a74218547cd6c4e28dc835821c355e",
      "parents": [
        "f2042db1b41cc21cc540c5ad7d353cbe1e3a32df"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 18 02:15:09 2016 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 10:15:26 2017 -0800"
      },
      "message": "Deduplicate stack masks\n\nThe stack masks repeat often enough so that it is worth deduplicating\nthem.\n\nOat size for a large app:\n98143600 -\u003e 96722288 (-1.44%)\n\nBug: 34621054\n\nTest: test-art-host\nChange-Id: If73d51e46066357049d5be2e406ae9a32b7ff1f4\n"
    },
    {
      "commit": "12f1b99775bbf7dd82d0a897587ab6ed0e75ee22",
      "tree": "f8cb3a7334652e59577b7ff97a1805d1bf4ddd94",
      "parents": [
        "d8f6e6430b26bf199f4a52f0624becb7c29f3c19"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 19 18:00:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 27 10:04:05 2017 -0800"
      },
      "message": "Remove alignment bits in between stack maps\n\nSaves 0.65% of boot.oat size, probably similar on apps. Added\nBitMemoryRegion to avoid requiring adding state to StackMap. Added\ntest to memory_region_test.\n\nTest: clean-oat-host \u0026\u0026 test-art-host\n\nBug: 34621054\n\nChange-Id: I40279c59e262bd5e3c6a9135f83e22b5b6900d68\n"
    },
    {
      "commit": "5e7c6a9223ddd11f800ea9b26fa72bece5c7d26c",
      "tree": "3f34f313b7b7a97eddda4ebab1e2f8c38864c3ff",
      "parents": [
        "c51842b8dd2ad57a1b05f31ab20ad01123443c50"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 17 16:38:30 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 23 15:13:10 2017 -0800"
      },
      "message": "Add more code info size dumping to oatdump\n\nHelps break down where oat bytes are being used, example output on\na large app:\n\nOAT FILE STATS:\nDumping cumulative use of 95784720 accounted bytes\nCode                            \u003d 68894196 (72% of total)\nQuickMethodHeader               \u003d  3071080 ( 3% of total)\nCodeInfoEncoding                \u003d  1226080 ( 1% of total)\nCodeInfoLocationCatalog         \u003d  1005716 ( 1% of total)\nCodeInfoDexRegisterMap          \u003d  5813389 ( 6% of total)\nCodeInfoInlineInfo              \u003d  2391251 ( 2% of total)\nCodeInfoStackMap                \u003d 13383008 (14% of total)\n  StackMapNativePc              \u003d  1607888 (12% of stack map)\n  StackMapDexPcEncoding         \u003d  1116724 ( 8% of stack map)\n  StackMapDexRegisterMap        \u003d  1277680 (10% of stack map)\n  StackMapInlineInfo            \u003d  1082720 ( 8% of stack map)\n  StackMapRegisterMaskEncoding  \u003d  5104960 (38% of stack map)\n  StackMapMask                  \u003d  3193034 (24% of stack map)\n  StackMapOther                 \u003d        0 ( 0% of stack map)\n\nTest: test-art-host, oatdump\n\nBug: 34621054\n\nChange-Id: I5daf0f1308d126b6a30928f523c6051585f1491f\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": "5d37c152f21a0807459c6f53bc25e2d84f56d259",
      "tree": "7d8cbce0a55f258150a047def70244f79afc866d",
      "parents": [
        "aa89a4c6fca095904521842c018399f1e3501a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 13:25:19 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 16 22:56:56 2017 +0000"
      },
      "message": "Put inlined ArtMethod pointer in stack maps.\n\nCurrently done for JIT. Can be extended for AOT and inlined boot\nimage methods.\n\nAlso refactor the lookup of a inlined method at runtime to not\nrely on the dex cache, but look at the class loader tables.\n\nbug: 30933338\ntest: test-art-host, test-art-target\nChange-Id: I58bd4d763b82ab8ca3023742835ac388671d1794\n"
    },
    {
      "commit": "61b28a17d9b6e8e998103646e98e4a9772e11927",
      "tree": "438c4a73f72423ddc71e6dca9f082d9e1d533996",
      "parents": [
        "cf0f8560f41467331427418584687830932e66ed"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 21:55:03 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 01 17:01:55 2016 +0100"
      },
      "message": "Use bit-level packing for InlineInfo in stackmaps as well.\n\nUse the same approach as we do for stackmaps to reduce the size.\n\nIt saves 4.0 MB from non-debuggable boot.oat (AOSP).\nIt does not affect debuggable boot.oat.\n\nIt saves 3.6 MB (of 96.6 MB) from /system/framework/arm/ (GOOG).\nIt saves 0.6 MB (of 26.7 MB) from /system/framework/oat/arm/ (GOOG).\n\nField loads from inline-info get around 5% slower.\n(based on the time it takes to load all inline-infos from boot.oat)\n\nChange-Id: I67b0fa5eef74c1fdb013680d0231fd44ea696176\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": "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": "1c1da4398cca9a828dea885ca1be12adf961d3a3",
      "tree": "130af3bb745bc74a9398c2ac482968bf734f9993",
      "parents": [
        "d780c00e554c5b00fc1acf359e4b9c7e761ea0eb"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 11:54:44 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 11:54:44 2015 +0100"
      },
      "message": "Improve documentation of memory layouts in stack_map.h.\n\nAlso shorten NumberOfDexRegisterLocationCatalogEntries to\nNumberOfLocationCatalogEntries.\n\nChange-Id: I55f8ec2960ea67e2eb6871a417bd442d0e2810fb\n"
    },
    {
      "commit": "8f1e08af6172781f91a17fce0a5a4183a9f70aa9",
      "tree": "1481075eefed359fcb675379197290b53159e28e",
      "parents": [
        "404ea410c5c1566909ae741582046b7cae2bd681"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 26 12:06:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 13 13:30:13 2015 +0100"
      },
      "message": "ART: Don\u0027t nest indenters in oatdump.\n\nReduces the time taken by the oatdump_test by ~12s (15%)\non host and ~55s (9%) on N5.\n\nChange-Id: I99bb16ff5f3640389815f1fe54379ca64eac071b\n"
    },
    {
      "commit": "12bdb72221f344ba0d86f338cc0feb49799c37f0",
      "tree": "2e67328d604f9904f779a66c8389bca7aa435347",
      "parents": [
        "088bd0d28acb70302d20f6e19a9db7f0536c09ee"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 09:44:43 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 10:01:29 2015 +0100"
      },
      "message": "More stack map dumping.\n\nChange-Id: I1f734c0c9eabda1cc6adaf32579e4c3be4a45c9a\n"
    },
    {
      "commit": "f677ebfd832c9c614fea5e6735725fec2f7a3f2a",
      "tree": "051b3ba6343bdbca4929d728dd5c0341e4383a08",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:29:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 04 17:25:02 2015 +0100"
      },
      "message": "Cache stack map encoding\n\nOperations on CodeInfo and StackMap objects repeatedly read encoding\ninformation from the MemoryRegion. Since these are 3-bit-loads of\nvalues that never change, caching them can measurably reduce compile\ntimes.\n\nAccording to benchmarks, this patch saves 1-3% on armv7, 2-4% on x86,\nand 0-1% on x64.\n\nChange-Id: I46b197513601325d8bab562cc80100c00ec28a3b\n"
    },
    {
      "commit": "f2650d1f957b158496de8016bc43fb575e81d6bc",
      "tree": "37bf1dff25dbd38f6cfdbaace07a50eb92f8c43d",
      "parents": [
        "0028b9d3b7d73ba0a045d50a0fe2797e51a4e6b6"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 28 14:53:28 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 29 16:39:18 2015 +0100"
      },
      "message": "Show stack maps and Dex register maps in oatdump\u0027s assembly code.\n\nStack maps and Dex register maps are not longer displayed\nin CodeInfo sections, unless `--dump:code_info_stack_maps\u0027\nis passed to oatdump.\n\nChange-Id: Id82adb406d7e56cda27df8e5a8bd328a88b9ee11\n"
    },
    {
      "commit": "0396ed7d3ad30778cb4af19e7086bea0deace9b9",
      "tree": "cab609c648e04f63bcd52dfa9510d4a88a761997",
      "parents": [
        "6c70104dc3ecd66b46f56cae068a14e12021c9f2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 27 15:12:19 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed May 27 15:24:30 2015 +0100"
      },
      "message": "Improve art::CodeInfo dumping.\n\n- Refactor existing dumping code into a set of new routines.\n- Use art::Indenter to properly indent in the output.\n- Add an additional argument to art::CodeInfo::Dump to\n  enable or disable the dumping of stack maps and Dex\n  register maps.\n\nChange-Id: I52814095ff465522302d5d69d416726369ca5258\n"
    },
    {
      "commit": "b1d0f3f7e92fdcc92fe2d4c48cbb1262c005583f",
      "tree": "0e3ce752f82ff5d7f10d37d46bda058ca54d7e40",
      "parents": [
        "119b21a6dfdb09d983a9e56a837fbf5c98e57096"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 14 12:41:51 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 13:00:29 2015 +0100"
      },
      "message": "Support InlineInfo in StackMap.\n\nChange-Id: I9956091775cedc609fdae7dec1433fcb8858a477\n"
    },
    {
      "commit": "896f8f7fe562f6e59119cb32531da9f0a5f13d18",
      "tree": "9f2b61474702a655ab5e793bac44d89612cf1b80",
      "parents": [
        "7411a69982c055692966c685636b6a226f10215e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 30 15:44:25 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 31 15:32:48 2015 +0100"
      },
      "message": "Use variable encoding for StackMap.\n\ndex_pc, native_pc_offset, dex_register_map_offset, inline_info_offset,\nand register_mask can now be encoded in 1, 2, 3, or 4 bytes.\n\nChange-Id: I15f93e8226ce374204d44c5a80a9fd89bda2687c\n"
    },
    {
      "commit": "a552e1c0584b8ab63150510286478c68cdbce13f",
      "tree": "c9c66b3d6bf001491ddd6a59d16d345d5656db8f",
      "parents": [
        "ba6233527e455368bba02efe963dd1e24d971727"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Mar 26 15:01:03 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 31 12:47:33 2015 +0100"
      },
      "message": "Use unique location catalogs to encode Dex register maps.\n\n- For each CodeInfo object (i.e. for each method), compute a\n  variable index size location catalog  of unique Dex\n  register locations.  In Dex register maps, instead of\n  storing the actual location of a (live) Dex register,\n  store the index of the location catalog entry containing\n  that Dex register location.\n- Adjust art::StackMapStream,\n  art::CheckReferenceMapVisitor::CheckOptimizedMethod,\n  art::StackVisitor::GetVRegFromOptimizedCode, and\n  art::StackVisitor::SetVRegFromOptimizedCode.\n- Add LoadBits and StoreBits methods to art::MemoryRegion\n  to load and store a block of adjacent bits in a memory\n  region.\n- Update compiler/optimizing/stack_map_test.cc.\n- Remove the default value for parameter EmptyFn of\n  art::HashMap.  This default value did not seem to make\n  sense, as it would create an \"empty function\" for type Key\n  by default, whereas art::HashMap expects an \"empty\n  function\" for type std::pair\u003cKey, Value\u003e.\n\nChange-Id: Id9e49d7756c253ce41c36630cd832208d06c2e28\n"
    },
    {
      "commit": "004c230b4cfc856690c61faabc41864061813c88",
      "tree": "40d95445eaa2eb248fa639755689c797a5e0c2ae",
      "parents": [
        "735dc87c92bee338d0638b3290c2b93a122429f2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 10:06:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 20 14:55:15 2015 +0000"
      },
      "message": "Compress the StackMaps.\n\nFirst step towards the compression of the StackMap (not\nthe DexRegisterMap). Next step will be to just use what is\nneeded (instead of byte -\u003e word).\n\nChange-Id: I4f81b2d05bf5cc508585e16fbbed1bafbc850e2e\n"
    }
  ]
}
