)]}'
{
  "log": [
    {
      "commit": "e43aa3f55fd01ce0887059b309a41b6441521e7c",
      "tree": "7ba4ef9adfbb77e6baa1891c3fabd783fb03d580",
      "parents": [
        "808d8cc8114e0c5ee3116639fe9d31be5a70403a"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Mon Nov 01 09:02:09 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 01 10:45:06 2021 +0000"
      },
      "message": "Revert^2 \"Inline across dex files for bootclaspath\u0027s methods\"\n\nThis reverts commit 8cb989f1019c4fa30845bf2deb5bc996ed4e8966, so we\nare re-enabling commit d690f8ae8f8e2675bc52089a83ac18c749f8e6d2.\n\nReason for revert: Failing test was fixed here\nhttps://android-review.googlesource.com/c/platform/art/+/1873567\n\nBug: 154012332\nTest: ART tests\nChange-Id: If159b29583e35abcfe753f30483f83990208b1b9\n"
    },
    {
      "commit": "8cb989f1019c4fa30845bf2deb5bc996ed4e8966",
      "tree": "fa793ebd540cad757df2fbf8e91a00e1c111f024",
      "parents": [
        "3693b2ae3bac182f1e483738bae2cd80cad5dc3d"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Wed Oct 27 09:16:37 2021 +0000"
      },
      "committer": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Oct 29 13:06:57 2021 +0000"
      },
      "message": "Revert \"Inline across dex files for bootclaspath\u0027s methods\"\n\nThis reverts commit d690f8ae8f8e2675bc52089a83ac18c749f8e6d2.\n\nReason for revert: Test breakage related to VarHandles e.g.\nhttps://ci.chromium.org/ui/p/art/builders/ci/angler-armv7-ndebug/2409/overview\n\nChange-Id: I0d3537cd0907866c628478fad1d77aff4ee65113\n"
    },
    {
      "commit": "d690f8ae8f8e2675bc52089a83ac18c749f8e6d2",
      "tree": "dac10b65d901cad87d6dbb7b48453f6da214a76f",
      "parents": [
        "e91a954ee350cbc0b311f342c90697191e1ae495"
      ],
      "author": {
        "name": "Santiago Aboy Solanes",
        "email": "solanes@google.com",
        "time": "Fri Oct 01 09:26:56 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 26 13:51:31 2021 +0000"
      },
      "message": "Inline across dex files for bootclaspath\u0027s methods\n\nWe can relax a bit the restriction for not inlining across dexfiles when\nwe are AoT compiling and we need an environment. There\u0027s an added new\nrestriction related to BSS entries. We could potentially inline across\ndex files for those cases too but are left to be solved in follow-up\nCLs.\n\nBug: 154012332\nTest: ART tests\nChange-Id: I5122b26c79b3e30d2643c0ccc05d595a0047953e\n"
    },
    {
      "commit": "17b4d2b14fd26088bca195b5d7c48f26b8b545d8",
      "tree": "bd2f741127dbb63e04aee99e5f65a2960f63f2be",
      "parents": [
        "39d529f45bad3ecf2bd6b376a049fde6cb0c21b4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 02 18:14:31 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 05 12:03:30 2021 +0000"
      },
      "message": "Add code size to CodeInfo.\n\nThis is in preparation of removing it from OatQuickMethodHeader.\n\nBug: 123510633\nTest: m test-art-host-gtest\nTest: ./art/test.py -b -r --host\nChange-Id: I5c5adb4c040e329b81c1393aa1b80ee017729c8a\n"
    },
    {
      "commit": "a59af8aeaad8fe7d68d8f8de63eab9cf85b6ab31",
      "tree": "83195c74b135731cc4555254763a8f449691c1b0",
      "parents": [
        "5c8cc64b5f1580faf510f27527e7e22987174963"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 17:42:32 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:32:09 2019 +0000"
      },
      "message": "JIT baseline: trigger optimized compilation on hotness threshold.\n\n- Add a new hotness count in the ProfilingInfo to not conflict with\ninterpreter hotness which may use it for OSR.\n- Add a baseline flag in the OatQuickMethodHeader to identify baseline\ncompiled methods.\n- Add a -Xusetieredjit flag to experiment and test.\n\nBug: 119800099\nTest: test.py with Xusetieredjit to true\n\nChange-Id: I8512853f869f1312e3edc60bf64413dee9143c52\n"
    },
    {
      "commit": "0a51605ddd81635135463dab08b6f7c21b58ffb0",
      "tree": "820f338333010f4d6e4b543ffea47e9ff7d2dd3f",
      "parents": [
        "e2727154f25e0db9a5bb92af494d8e47b181dfcf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 13:00:44 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 13:00:44 2019 +0000"
      },
      "message": "Revert \"Make compiler/optimizing/ symbols hidden.\"\n\nThis reverts commit e2727154f25e0db9a5bb92af494d8e47b181dfcf.\n\nReason for revert: Breaks ASAN tests (ODR violation).\nBug: 142365358\n\nChange-Id: I38103d74a1297256c81d90872b6902ff1e9ef7a4\n"
    },
    {
      "commit": "e2727154f25e0db9a5bb92af494d8e47b181dfcf",
      "tree": "0ddc6eec3ad9508d7eb1f2b941786dd0ed7d2cd8",
      "parents": [
        "c78860b91ae07eed92f86876e7a03132adea6fcd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 10 10:46:42 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 08:22:00 2019 +0000"
      },
      "message": "Make compiler/optimizing/ symbols hidden.\n\nMake symbols in compiler/optimizing hidden by a namespace\nattribute. The unit intrinsic_objects.{h,cc} is excluded as\nit is needed by dex2oat.\n\nAs the symbols are no longer exported, gtests are now linked\nwith the static version of the libartd-compiler library.\n\nlibart-compiler.so size:\n  - before:\n    arm: 2396152\n    arm64: 3345280\n  - after:\n    arm: 2016176 (-371KiB, -15.9%)\n    arm64: 2874480 (-460KiB, -14.1%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 142365358\nChange-Id: I1fb04a33351f53f00b389a1642e81a68e40912a8\n"
    },
    {
      "commit": "2808be84a8f86542450670acdb5e6b55498ff5f0",
      "tree": "f41b63e3109a6a6a9bd534f32b8d92f20eb9ef35",
      "parents": [
        "460f05480379d5c75555d06c4938bc990ce6ff83"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Dec 20 19:15:11 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 15 09:30:36 2019 +0000"
      },
      "message": "ART: Introduce stackmap with no DexRegInfo.\n\nSome of safepoints don\u0027t need to have DexRegisterMap info;\nthis will decrease the stackmap size.\n\n.oat file size reduction:\n - boot.oat:           -233 kb (-5.4%)\n - boot-framework.oat: -704 kb (-4.9%)\n\nTest: 461-get-reference-vreg, 466-get-live-vreg.\nTest: 543-env-long-ref, 616-cha*.\nTest: test-art-target, +gc-stress.\n\nChange-Id: Idbad355770e30a30dcf14127642e03ee666878b8\n"
    },
    {
      "commit": "0d4567f26701abae84b02389c379843c1dc851a8",
      "tree": "f665e6d5db5af79a4afa3b97cd7cdb7a2069da3f",
      "parents": [
        "cc08c50948d8b2a93b53a327717c7b2a146ac754"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 22:45:40 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 30 18:04:44 2019 +0000"
      },
      "message": "Stack maps: Refactor constructors.\n\nCreate dedicated static methods instead of passing flags.\nThis creates dedicated methods for the purpose and merges\nconstructor and decoding into single optimized method.\n\nThis speeds up CodeInfo by 10%, and maps startup by 0.1%.\n\nTest: ./art/test.py -b --host\nChange-Id: Ic7d43e22bca0be9fb13bc2c7544ebfdf46798cfe\n"
    },
    {
      "commit": "6c4ec5c1555aaeddd254750c15554a3c47bfc722",
      "tree": "d0ef0588f0e625bfeb0f9b86305f45b6fd37260a",
      "parents": [
        "349845ae9c820484973959e1f3d366099d2fa0c2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 20 07:23:19 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 20 11:16:38 2019 +0000"
      },
      "message": "Revert^2 \"Stack maps: Interleave consecutive varints.\"\n\nReorder the layout of consecutive varints.  Store all the \u0027headers\u0027\nwhich define the varint size first and then store any large values.\n\nThe size is unchanged, but it makes the reading from memory faster.\n\nThis speeds up CodeInfo by 10%, and maps startup by 0.1%.\nChange in size is negligible (the bits mostly just move).\n\nThis reverts commit 1b2a49b7aba39ed6663a69dfdf63d0df069f0d42.\n\nTest: test.py -b --host --64 --optimizing\nChange-Id: Ica7b42180ef2bae637445c0ce44fd3833ec0ecfc\n"
    },
    {
      "commit": "1b2a49b7aba39ed6663a69dfdf63d0df069f0d42",
      "tree": "15a22f6390135758cb9eeaa1ef816f4634cc70f9",
      "parents": [
        "a2b34561a7faca95d0a4f8194ad155798e238e37"
      ],
      "author": {
        "name": "Raylin Hsu",
        "email": "raylinhsu@google.com",
        "time": "Thu Jun 20 01:41:31 2019 +0000"
      },
      "committer": {
        "name": "Raylin Hsu",
        "email": "raylinhsu@google.com",
        "time": "Thu Jun 20 01:43:54 2019 +0000"
      },
      "message": "Revert \"Stack maps: Interleave consecutive varints.\"\n\nThis reverts commit a2b34561a7faca95d0a4f8194ad155798e238e37.\n\nReason for revert: \u003cINSERT REASONING HERE\u003e\n\nChange-Id: Ie5b220e429e101bb5fa2606665a9c8cb64308ad3\n\nBug: 135638469\n"
    },
    {
      "commit": "a2b34561a7faca95d0a4f8194ad155798e238e37",
      "tree": "2da4501b3fdd20e3d227869a4ce44eab03b79434",
      "parents": [
        "34087c1047b79b7ec83eb2f45cf4f70524e0f6f5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 16 21:53:51 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 19 18:24:04 2019 +0000"
      },
      "message": "Stack maps: Interleave consecutive varints.\n\nReorder the layout of consecutive varints.  Store all the \u0027headers\u0027\nwhich define the varint size first and then store any large values.\nThe size is unchanged, but it makes the reading from memory faster.\n\nThis speeds up CodeInfo by 10%, and maps startup by 0.1%.\nChange in size is negligible (the bits mostly just move).\n\nTest: test.py -b --host --64 --optimizing\nChange-Id: I16f702389d4ba94a407b1586cae5f82b8ef60e7b\n"
    },
    {
      "commit": "697c47a7ffd4489c4bc4edc229c8123309526286",
      "tree": "04cf832df533fd529cc598ecff9be8c2763d61b8",
      "parents": [
        "8ac3dc5ec31569630a99caed2a69f64d84a6c0b6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 16 21:53:07 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 18 11:35:05 2019 +0000"
      },
      "message": "Stack maps: Handle special cases using flags.\n\nKeep the BitTable decoder simple (1+NumColumns varints).\nMove special case handling up to CodeInfo (empty/dedup).\n\nThis speeds up CodeInfo by 5%, and maps startup by 0.05%.\nChange in size is negligible (the bits mostly just move).\n\nTest: test.py -b --host --64 --optimizing\nChange-Id: Ib6abe52f04384de9ffd7cfba04a3124b62f713ff\n"
    },
    {
      "commit": "e42a4b95eed312e6f7019645f4c66b2d77254433",
      "tree": "dd150dd4651180c5fbba3a4fd90f8ca8a3f14e9d",
      "parents": [
        "67ba872df798271d2960be27c7f1e813259feabc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 26 00:10:25 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 26 23:47:47 2019 +0000"
      },
      "message": "Optimize stack maps: add fast path for no inline info.\n\nConsumers of CodeInfo can skip significant chunks of work\nif they can quickly determine that method has no inlining.\n\nStore this fact as a flag bit at the start of code info.\nThis changes binary format and adds \u003c0.1% to oat size.\n\nI added the extra flag field as the simplest solution for now,\nalthough I would like to use it for more things in the future.\n(e.g. store the special cases of empty/deduped tables in it)\n\nThis improves app startup by 0.4% (maps,speed).\nPMD on golem seems to gets around 15% faster.\n\nBug: 133257467\nTest: ./art/test.py -b --host --64\nChange-Id: Ia498a31bafc74b51cc95b8c70cf1da4b0e3d894e\n"
    },
    {
      "commit": "67ba872df798271d2960be27c7f1e813259feabc",
      "tree": "93bb6a90a1e1810799faa0ab1e0d672ce041c0ed",
      "parents": [
        "436f6c1e53b735ace36fbfe48c337ece07d76e62"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 23 15:32:18 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat May 25 10:30:57 2019 +0000"
      },
      "message": "Optimize stack map decoding.\n\nWe usually read several consecutive varints.\nAdd helper method optimized for that use case\n(ideally reading 8 varints from single load).\n\nThis improves app startup by 0.4% (maps,speed).\nPMD on golem seems to get around 5% faster.\nCodeInfo::Decode on its own is 25% faster.\n\nBug: 133257467\nTest: ./art/test.py -b --host --64\nChange-Id: Iaf7e8469ed6397b1d1d4102e409b5731f7229557\n"
    },
    {
      "commit": "bf5f0f3f1eea2e712e7269ff1e1f9b1bcc4cbaee",
      "tree": "030ef55b56ede3dbf42b6b5f19c59bfc0583636f",
      "parents": [
        "7e057ec0e023910f6bc42bc552a8463343cf346f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 05 15:41:50 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 06 14:21:51 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Add code size to CodeInfo\"\"\n\nThis reverts commit e1412dacbf1d2a809bd1fca658cc8cb8f61f8ee6.\n\nBug: 123510633\nBug: 127305289\n\nReason for revert: b/127305289\n\nChange-Id: I54557b05a44777f1fa2c15bde4fa648980f42eed\n"
    },
    {
      "commit": "b1b2ca97651b1993e0a00a4543209419afbc6e64",
      "tree": "64e58ebe9d4c77f1adf401bb4d9066c720a0c29c",
      "parents": [
        "37678283d1be77007e61bb0e811008aa89a27d14"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 05 09:23:37 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 05 11:36:19 2019 +0000"
      },
      "message": "Revert \"Don\u0027t pack code size in CodeInfo.\"\n\nThis reverts commit e35ac04a1a9a22b1c4386b27f3a30cd840aa17b1.\n\nBug: 123510633\nBug: 127305289\n\nReason for revert: b/127305289\n\nChange-Id: I18c2d9291411b31641333c14c47da8c4fdf317f7\n"
    },
    {
      "commit": "e35ac04a1a9a22b1c4386b27f3a30cd840aa17b1",
      "tree": "951fc00e6ef2a8576c9f6c0a6d7601cd93283199",
      "parents": [
        "8834699a05deb680a36dd3075afb85aee9208f37"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 25 18:11:53 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 27 23:20:07 2019 +0000"
      },
      "message": "Don\u0027t pack code size in CodeInfo.\n\nThe unpacking is tricky for host tooling as we need to propagate ISA.\n\nThis adds 0.05% to oat file size.\n\nBug: 123510633\nChange-Id: I5618db5e5dbe83d8a2bb89aef61cb0b10e336f40\n"
    },
    {
      "commit": "e1412dacbf1d2a809bd1fca658cc8cb8f61f8ee6",
      "tree": "bb3f56ecefe08b66f7a330a02caef0b089a0c2af",
      "parents": [
        "8f20a23a35fa6fbe4dcb4ff70268a24dc7fb2a24"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 13 17:27:17 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 14 09:43:00 2019 +0000"
      },
      "message": "Revert^2 \"Add code size to CodeInfo\"\n\nThis temporarily adds 0.25% to oat file size.\nThe space will be reclaimed back in follow-up CL.\n\nThis reverts commit 8f20a23a35fa6fbe4dcb4ff70268a24dc7fb2a24.\n\nReason for revert: Reland as-is after CL/903819\n\nBug: 123510633\nTest: DCHECK compare the two stored code sizes.\nChange-Id: Ia3ab31c208948f4996188764fcdcba13d9977d19\n"
    },
    {
      "commit": "8f20a23a35fa6fbe4dcb4ff70268a24dc7fb2a24",
      "tree": "84dc682b40f38d0377639befe6f3d43e5655a43c",
      "parents": [
        "68efa7b1128486e08ae60cd27181645b27bbd2e4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 19:42:54 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 19:42:54 2019 +0000"
      },
      "message": "Revert \"Add code size to CodeInfo\"\n\nThis reverts commit 68efa7b1128486e08ae60cd27181645b27bbd2e4.\n\nReason for revert: Breaks tests\n\nChange-Id: I28fb143990f58e0d5f0b106bea9d9a159f19297e\n"
    },
    {
      "commit": "68efa7b1128486e08ae60cd27181645b27bbd2e4",
      "tree": "bb3f56ecefe08b66f7a330a02caef0b089a0c2af",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 28 18:59:23 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 11 13:23:53 2019 +0000"
      },
      "message": "Add code size to CodeInfo\n\nThis temporarily adds 0.25% to oat file size.\nThe space will be reclaimed back in follow-up CL.\n\nBug: 123510633\nTest: DCHECK compare the two stored code sizes.\nChange-Id: I15340824ca637fd075a4cef87771b06cb96bb9f4\n"
    },
    {
      "commit": "0c3aa31b7151c3b67aa0dff1ae2b8718eeb905c7",
      "tree": "b7153d8f452ba686cc88052079aafae3f838d34e",
      "parents": [
        "971a80e5aa36955d9fee6b479a5cbd554f50ca08"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 14:52:32 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 10 12:40:01 2018 +0100"
      },
      "message": "Move varint encoding/decoding to BitMemoryReader/Writer.\n\nTest: test-art-host-gtest-bit_memory_region_test\nChange-Id: I0f7d7dfc9efe9df0e3e746b1741c46f06a0bd3b4\n"
    },
    {
      "commit": "a2d29a3a772f17014197e829aa8cb41026f88f05",
      "tree": "5fea3c3e18db733655c55fdd91175f9870b4ad35",
      "parents": [
        "8e7ddc234ecbde21b0e6755cf66bcad858a817d2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 11:06:38 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 16:00:00 2018 +0100"
      },
      "message": "Add stack map fast path for GC.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ia04a07b560fcce2fb955d66d1924ee224dec420d\n"
    },
    {
      "commit": "e7a9194558379ee24fde82fcaeaee29542df1520",
      "tree": "30f3c43f2d64f159503bb8c3442aa39cc6cb612e",
      "parents": [
        "f50419eee7290542db07bff23c4f65e693ba037f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 17:23:53 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 12:48:49 2018 +0100"
      },
      "message": "Simplify StackMapStream encoding.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ife021d03e4e486043ec609f9af8673ace7bde497\n"
    },
    {
      "commit": "3aaaa21055ab73562b8da7968ac4fa5fe9d44695",
      "tree": "a3118eee8f5cc9c661e1480f2ce73691c3786f8a",
      "parents": [
        "605339045d347074b9149c0185fe2ca7fafe470d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 30 16:46:53 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Aug 02 11:31:44 2018 +0100"
      },
      "message": "Encode frame info using varints.\n\nThis saves 0.3% of oat file size.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I85003946a9579f03cb1ed2b5e9b2c62b3efe6734\n"
    },
    {
      "commit": "8cd54547cec8a4537db5682c2da8be22843b1310",
      "tree": "fb1158993bab2e027984cedab59b402c051a45a7",
      "parents": [
        "91f0fdb4372d3f2bcfcd9db67afcbe7ee1901048"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 14:49:40 2018 +0100"
      },
      "message": "Move MethodInfo to CodeInfo.\n\nThere is no need to treat it specially any more,\nbecause of the de-duplication at BitTable level.\n\nThis saves 0.6% of oat file size.\n\nTest: test-art-host-gtest\nChange-Id: Ife7927d736243879a41d6f325d49ebf6930a63f6\n"
    },
    {
      "commit": "b73323c50d10d3850d2d8719a481f4f430fc51ce",
      "tree": "b5c2eb181dd398229fb7b7e852923efd247e5710",
      "parents": [
        "ca182f2c81e7102d3ccd1c4ec5c96e602ad343fe"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 12:41:36 2018 +0100"
      },
      "message": "Deduplicate stackmaps at BitTable level.\n\nMake it possible to share BitTables between CodeInfos.\n\nThis saves 1% of .oat file size.\n\nTest: test-art-host-gtest\nChange-Id: I14172cba6b65e734b94f8c232f24eeee1fc67113\n"
    },
    {
      "commit": "6ee06e97cef5ee92944deaeba0da4d10c4c33a2a",
      "tree": "77d69c85d37864b4d3ee970be4b7fd1246adee7b",
      "parents": [
        "f5dcd31d89282b6c9324fdc960e6e7e2281c16f1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 25 21:45:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 26 11:45:54 2018 +0100"
      },
      "message": "Decode only the needed tables from CodeInfo.\n\nMost use cases need only the first two bit tables from CodeInfo.\nAdd flag to the decode method so that only those two are loaded.\nWe only touched the table header but that still made difference.\n\nThis speeds up pmd by over 10%.\n\nTest: test-art-host-gtest\nChange-Id: I7740081bf18205dd69864503b5bcec7de5e1a901\n"
    },
    {
      "commit": "c945e0d410ca8d4e9ba09272e8727a3192f1e449",
      "tree": "b010aeed33bb66bbaf9af355f21dfad2f9232dea",
      "parents": [
        "d93e374e273dd45f5d829399da1d4201bf46057e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 17:26:45 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:23:48 2018 +0100"
      },
      "message": "Remove ArtMethod\u0027s declaring class state checks.\n\nThis check was not very useful because the Class is already\nin a state to pass the check when we\u0027re constructing the\nArtMethod and it can never revert to an earlier state, so\nthe check is essentially a weak protection against GC bugs.\nBesides not being very useful, the check had the ability to\ninvalidate ObjPtr\u003c\u003e cookies (when called in non-runnable\nstate), making it difficult to fully ObjPtr\u003c\u003e-ify the code.\n\nAlso remove a lot of kReadBarrierOption template parameters\nwhich were needed specifically for this check. This removes\nunnecessary maintence burden as shown by past bugs dealing\nwith carefully adding those parameters where necessary.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 74373650\nBug: 31113334\nChange-Id: I87f2999fc4e7c27b5c2307139269b4b5f6649d16\n"
    },
    {
      "commit": "2c76257e4bfcd6f522b0cd3487ba7d9900043243",
      "tree": "ab1098cffcb3e13087e770d26fef9f4d6f06a550",
      "parents": [
        "0b4a439f808f4602c7b97364e49c5546f5100d51"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 10:09:11 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 13 16:32:11 2018 +0100"
      },
      "message": "Remove unused InvokeInfo from stack maps and the runtime.\n\nTest: test-art-host-gtest\nChange-Id: I5ce28973042f9241e72ceb52fc5db472ca571563\n"
    },
    {
      "commit": "93bd3619de4616040d672a4ed3825976bed4bfce",
      "tree": "2ab3424374ed3d316053ed8e9ec2d4b95ea2ef4d",
      "parents": [
        "f07d5617770c37d87447c8bddf105eb0469ab093"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 02 19:30:18 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 14:23:12 2018 +0100"
      },
      "message": "Use iterators to access stack map data.\n\nTry to simplify the code using the recently added iterators.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0b9f54df01749ee6ec3a67cfb07ba636a2489c89\n"
    },
    {
      "commit": "a38e6cf2aaf4fd3d92b05c0a7a146fb5525ea72d",
      "tree": "377c74c834776b9942bb7c2853e44447dac27f83",
      "parents": [
        "f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 26 18:13:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 10:15:32 2018 +0100"
      },
      "message": "Remove explicit size from CodeInfo.\n\nIt was mostly there since it was necessary to create the\nbound-checked MemoryRegion for loading.\n\nThe new BitMemoryReader interface is much easier to\ntweak to avoid needing to know the size ahead of time.\n\nKeep the CHECK that the loader reads the expected number\nof bytes, but move it to FillInCodeInfo.\n\nThis saves 0.2% of .oat file size.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I92ee936e9fd004da61b90841aff9c9f2029fcfbf\n"
    },
    {
      "commit": "f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4",
      "tree": "ac3b776ae3c20fc957949d06dd878ef3ffa6ffb5",
      "parents": [
        "cca7cb9ffa56d8ab8fd0c5997c8bfd965d7426c1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 26 16:51:15 2018 +0100"
      },
      "message": "Add method frame info to CodeInfo.\n\nThe stored information will be used in follow-up CLs.\n\nThis temporarily increases .oat file size by 0.7%.\n\nTest: test-art-host-gtest\nChange-Id: Ie7d898b06398ae44287bb1e8153861ab112a216c\n"
    },
    {
      "commit": "078d7ba2c20d7778f8988e89a70d47e07372cc5a",
      "tree": "5f9340183de479241e8c043a0996aadc41583b5a",
      "parents": [
        "0b4e5a3a1275a4aa6955a0576ab9d57eedd5bdd2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 21 15:36:48 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 22 13:24:28 2018 +0100"
      },
      "message": "Implement BitMemory{Reader,Writer}\n\nTwo simple classes which replace the need to pass\nthe (BitMemoryRegion, bit_offset) tuple everywhere.\n\nThe slightly simplifies the code and it also makes\nit possible to optimize those classes in the future.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I4806c805149a07e1a11b76405ca27960a0012c69\n"
    },
    {
      "commit": "0b4e5a3a1275a4aa6955a0576ab9d57eedd5bdd2",
      "tree": "da1f910ee6c4d38a535c59eca934c394d6fc7363",
      "parents": [
        "c046a45aabc2a244ea2595692feb97238b568701"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jun 11 16:25:29 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 21 13:45:25 2018 +0100"
      },
      "message": "Binary search stack maps by native pc.\n\nTest: test.py --host -r -b -t 018 -t 510\nChange-Id: I07042e8dfd82adcd24fdfe1a1970a7ccdc09ce46\n"
    },
    {
      "commit": "cf7833edafa2dbf31ec7d29b51874dba6a92ae36",
      "tree": "47b80e86d17768fe2ca0744fe4a5ebff9f1449a6",
      "parents": [
        "45b12e704e158f29877c78bd9a8406db7e361537"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 16:45:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 17:14:45 2018 +0100"
      },
      "message": "Template BitTable based on the accessors.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I96c04e21864009b64cb3177a0e9f0f8782a9b10b\n"
    },
    {
      "commit": "45b12e704e158f29877c78bd9a8406db7e361537",
      "tree": "1bfc21d88a173b4a751a37a223a39d7c12976f95",
      "parents": [
        "c9633c80c2125814a8a7459079c1931a5c201011",
        "e1402125e8363b49e176c6072893d1c110a05d2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "message": "Merge \"Move some helper methods to DexRegisterLocation.\""
    },
    {
      "commit": "f325e28656b51167f29496e87926b805240052c4",
      "tree": "b37117db0fa312c567fddb8d6a06df6dd0b9c052",
      "parents": [
        "50fac06c51864f293c61ff9d0983b82698cf6dac"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 15:02:32 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:41:55 2018 +0100"
      },
      "message": "Remove POD helper classes for BitTableBuilder.\n\nInstead of declaring the classes explicitly and then casting,\ncreate generic BitTableBuilder::Entry class for that purpose.\nThis removes the need to keep the POD helper classes in sync.\n\nTest: test-art-host-gtest-stack_map_test\nTest: test-art-host-gtest-bit_table_test\nChange-Id: I4c632313bafd3a4bc823648436a5310b6f2a1d13\n"
    },
    {
      "commit": "e1402125e8363b49e176c6072893d1c110a05d2f",
      "tree": "44ec055be78cdcb8086a598cbf791f8c4627e157",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:20:45 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:31:44 2018 +0100"
      },
      "message": "Move some helper methods to DexRegisterLocation.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0abab008159db023d531df69214cd3bb8c0639bd\n"
    },
    {
      "commit": "50fac06c51864f293c61ff9d0983b82698cf6dac",
      "tree": "7f7d09fa8aeacf4b5a255085af02970347a54cd0",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:55:35 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 19:03:09 2018 +0100"
      },
      "message": "Add Kind column to stack maps.\n\nAdd \u0027Kind\u0027 column to stack maps which marks special stack map types,\nand use it at run-time to add extra sanity checks.\n\nIt will also allow us to binary search the stack maps.\n\nThe column increases .oat file by 0.2%.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I2a9143afa0e32bb06174604ca81a64c41fed232f\n"
    },
    {
      "commit": "6de8833fb64e59301eada4005ed04da995796170",
      "tree": "9f5b731ae1c0428cf5dcae4105936a7a165a43c9",
      "parents": [
        "d97e0828958fd14a962e37af2865bc2e628547ce"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:11 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 07 12:00:18 2018 +0100"
      },
      "message": "Delta-compress register maps in stack maps.\n\nThe register maps tend to be similar from stack map to stack map,\nso instead of encoding them again, store only the modified ones.\n\nThe dex register bitmap stores the delta now - if register has\nbeen modified since the previous stack map, the bit will be set.\n\nThe decoding logic scans backwards through stack maps until it\neventfully finds the most recent value of each register.\n\nThis CL saves ~2.5% of .oat file size (~10% of stackmap size).\n\nDue to the scan, this makes dex register decoding slower by factor\nof 2.5, but that still beats the old algorithm before refactoring.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Id5217a329eb757954e0c9447f38b05ec34118f84\n"
    },
    {
      "commit": "d97e0828958fd14a962e37af2865bc2e628547ce",
      "tree": "bcb4ef65fee75cd64c222a2e3bfb44da6b60ebd5",
      "parents": [
        "6e69e52a12883386f91d014324bebee867ca7877"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:24 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 06 13:14:04 2018 +0100"
      },
      "message": "Reduce code repetition in stack maps with macros.\n\nSimplifies the code somewhat.  It also makes it possible\nto get column names as strings for the debugging code.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I1a2e146e7a4372c0752693313e1b881cb4a818bc\n"
    },
    {
      "commit": "6e69e52a12883386f91d014324bebee867ca7877",
      "tree": "7d1850f0a59e4ea2d013d6d479cd616b66922970",
      "parents": [
        "6eb4d5e4bc2ce068004c1d7c85dbfff0c5efd11d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:14 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 05 16:50:38 2018 +0100"
      },
      "message": "Remove depth argument from InlineInfo accessors in stack maps.\n\nThe InlineInfo class actually represented a list of inlining\ninformation for a given stack map, and the depth argument was\nused everywhere to select to desired element from the list.\nThis was verbose and inconsistent with the other classes.\n\nChange the InlineInfo class to represent a single inlining,\nand select the desired depth when getting it from CodeInfo.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I35b73e6704854f0203f51d4dbdbed5b1d1cd5a3b\n"
    },
    {
      "commit": "6eb4d5e4bc2ce068004c1d7c85dbfff0c5efd11d",
      "tree": "e2d8a213a4996d94988af748175d3eb5b7694f33",
      "parents": [
        "0366f3251c3078a0161d178e3b0afd5efc4c84c0"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:20 2018 +0100"
      },
      "message": "De-duplicate inline info in stack maps.\n\nThis saves 0.3% of .oat file size.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ic7d5addf04fb9b7a2f29a7d1d99ea93b39388fd2\n"
    },
    {
      "commit": "049d68181e4862271acc027bcb0b4cf5bcc122b6",
      "tree": "0073869bb1870fd31b2d81119bdc60eba456dc5a",
      "parents": [
        "71ec1cc0665cdb9d39f4fd284d68962020417a53"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 18 14:46:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 01 13:26:48 2018 +0100"
      },
      "message": "Rewrite stackmap verification code.\n\nThe new version is more complicated but it gives much higher\nconfidence about the correctness of the stackmap encoding.\n\nThe old version was comparing the internal builder entries to the\ndecoded information, which verified the bit-level manipulations,\nbut it did not verify that we created the internal state correctly.\n\nThe new version directly compares the parameters passed to the\nStackMapStream and the decoded values. This way, it really tests\nthe whole system. It uses lambda captures to record the parameters.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib92819cc35ce0d790128392d303f6feabd7d9c74\n"
    },
    {
      "commit": "71ec1cc0665cdb9d39f4fd284d68962020417a53",
      "tree": "8d19b11ab3e04213c46b1b12ae94dbf54b305bfb",
      "parents": [
        "03f16e4de1e3289414888fe0a5104205a781bd2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 18 15:57:25 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 01 13:26:46 2018 +0100"
      },
      "message": "Rewrite dex register map encoding in stackmaps.\n\nSimplify code by encoding dex register maps using BitTables.\nThe overall design is unchanged (bitmask+indices+catalogue).\n\nThis CL saves ~0.4% of .oat file size.\n\nThe dex register map decoding is factor of 3 faster now\n(based on the time to verify the register maps on Arm).\nThis is not too surprising as the old version was O(n^2).\n\nIt also reduces compiler arena memory usage by 11% since the\nBitTableBuilder is more memory efficient, we store less\nintermediate data, and we deduplicate most data on the fly.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib703a5ddf7f581280522d589e4a2bfebe53c26a9\n"
    },
    {
      "commit": "21d45b4f4ef3661ac33d622aaac5dd6d2ce7deb8",
      "tree": "121e046a949025bca4d766fdfdc5ea58e4ea4a10",
      "parents": [
        "d02b23f7ee9664213216a82bfdcb0ee83824de04"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 06:35:05 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Simplify DexRegisterMap API.\n\nStore some of the needed decoding state explicitly to avoid passing it\naround all the time. The DexRegisterMap class is rewritten in next CL.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ie268dff2a1c1da2e08f0e6799ae51c30e11f350b\n"
    },
    {
      "commit": "d02b23f7ee9664213216a82bfdcb0ee83824de04",
      "tree": "254b794533a6821c2ed2df31fab807abf7d508a4",
      "parents": [
        "08231f6cb3095a7dbde29299a7da5413a5f992e4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 23:27:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Remove the CodeOffset helper class.\n\nI need to reduce the StackMapEntry to a POD type so that it\ncan be used in BitTableBuilder.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I5f9ad7fdc9c9405f22669a11aea14f925ef06ef7\n"
    },
    {
      "commit": "4b59d107f91601c4e0095d7a9db40970d4ed6956",
      "tree": "b120add4870b86cefc308ec3a0100851cfc1a4c0",
      "parents": [
        "da4ff8bfcf03d6186b7d21c7bd8b90248f7b2f96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 21:46:10 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 14:32:44 2018 +0100"
      },
      "message": "Revert^2 \"Optimize register mask and stack mask in stack maps.\"\n\nThis reverts commit 8b20b5c1f5b454b2f8b8bff492c88724b5002600.\n\nReason for revert: Retry submit unmodified after fixing the test.\n\nUse BitTable to store the masks as well and move the\ndeduplication responsibility to the BitTable builders.\n\nDon\u0027t generate entries for masks which are all zeros.\nThis saves 0.2% of .oat file size on both Arm64 and Arm.\n\nEncode registers as (value+shift) due to tailing zeros.\nThis saves 1.0% of .oat file size on Arm64 and 0.2% on Arm.\n\nTest: test-art-target-gtest-exception_test\nTest: test-art-host-gtest-bit_table_test\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib643776dbec3f051cc29cd13ff39e453fab5fae9\n"
    },
    {
      "commit": "8b20b5c1f5b454b2f8b8bff492c88724b5002600",
      "tree": "51bea8ddfff23b1f6b0323eaeacf42e6f6199015",
      "parents": [
        "ffaf87a429766ed80e6afee5bebea93db539620b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 15:32:55 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 15:32:55 2018 +0000"
      },
      "message": "Revert \"Optimize register mask and stack mask in stack maps.\"\n\nThis reverts commit ffaf87a429766ed80e6afee5bebea93db539620b.\n\nReason for revert: Breaks exception_test32 on target\nfor CMS and heap poisoning configs.\n\nChange-Id: I127c17f693e28211a799f73a50e73105edee7e4c\n"
    },
    {
      "commit": "ffaf87a429766ed80e6afee5bebea93db539620b",
      "tree": "d79637f4b6a564facf4b837c3ff125bb3755594e",
      "parents": [
        "5513c2b68a08109a5bfd811c7b2c8bbc66244e8e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 23 14:44:39 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 28 08:45:37 2018 +0100"
      },
      "message": "Optimize register mask and stack mask in stack maps.\n\nUse BitTable to store the masks as well and move the\ndeduplication responsibility to the BitTable builders.\n\nDon\u0027t generate entries for masks which are all zeros.\nThis saves 0.2% of .oat file size on both Arm64 and Arm.\n\nEncode registers as (value+shift) due to tailing zeros.\nThis saves 1.0% of .oat file size on Arm64 and 0.2% on Arm.\n\nTest: test-art-host-gtest\nChange-Id: I636b7edd49e10e8afc9f2aa385b5980f7ee0e1f1\n"
    },
    {
      "commit": "dd966bc5b30aac068ee25d8f9bdb18a53904e312",
      "tree": "d8cc9a393e2e6a86fa5b92b0497706c2d5639dfc",
      "parents": [
        "64e8175b611df79b617892435a26fb2db67bfa85"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 24 13:55:52 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 25 16:17:09 2018 +0100"
      },
      "message": "Change the BitTableBuilder API to be POD based.\n\nThe compiler has two copies of all stack map intermediate data\nin memory at the same time at the moment.\n\nChange the BitTableBuilder so that it will be able to store\nthe intermediate data directly (e.g. StackMapEntry), and thus\nwe can save the space, and can avoid the copying code complexity.\n\nIt will also make it possible to deduplicate data as we go,\nthus saving further memory and code complexity.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I660fddf0629422ae0d2588333854d8fdf1e1bd0f\n"
    },
    {
      "commit": "052f8ca1776ed7deb4f036498edd69eb6a1b942f",
      "tree": "ae993f1a634b258e124df12663a1d24859917b05",
      "parents": [
        "1c515f0b9d621869a2e67ce5e0f5532d0f2f323a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 26 15:42:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 20:28:41 2018 +0100"
      },
      "message": "Rewrite stackmap encoding code.\n\nRemove most of the code related to handling of bit encodings.\nThe design is still same; the encodings are just more implicit.\nMost of the complexity is replaced with a single BitTable class,\nwhich is a generic purpose table of tightly bit-packed integers.\nIt has its own header which stores the bit-encoding of columns,\nand that removes the need to handle the encodings explicitly.\n\nOther classes, like StackMap, are accessors into the BitTable,\nwith named getter methods for the individual columns.\n\nThis CL saves ~1% of .oat file size (~4% of stackmap size).\n\nTest: test-art-host-gtest\nChange-Id: I7e92683753b0cc376300e3b23d892feac3670890\n"
    },
    {
      "commit": "68fefacc54b9d918a5b17b99ac7e72421d1b1f94",
      "tree": "39cccda109a63153ca363e592b5570b46e6dece9",
      "parents": [
        "b2683cb0ae69c9a8a0ba654f50fa743a9117171c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 10 17:49:33 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 09:28:22 2018 +0000"
      },
      "message": "Move and rewrite bit loading/storing methods.\n\nMove bit loading/storing methods to BitMemoryRegion and rewrite them.\n\nEnforce natural alignment of the data pointer in BitMemoryRegion.\nThis probably would not be reasonable in MemoryRegion, but it is\nfine here since the BitMemoryRegion already has extra bit offset.\nThe alignment makes it possible to simplify and optimize the methods.\n\nThis makes the stackmap reading code 33% faster.\n(measured by the time needed to verify all stackmap fields on ARM).\n\nTest: m -j40 test-art-host-gtest\nChange-Id: I00be8052969a6056b262df4cd2066ffd86043196\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "92f7f3ce3b01f7c7df1c15b81c900e087248093f",
      "tree": "37647ac824e450f80d752539cabbe631ba795c75",
      "parents": [
        "5dcb0d2cabe9d67987a6a7477fb124cef92abefb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 11:38:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 15 14:29:52 2017 +0000"
      },
      "message": "Use intrinsic codegen for compiling intrinsic methods.\n\nWhen compiling an intrinsic method, generate a graph that\ninvokes the same method and try to compile it. If the call\nis actually intrinsified (or simplified to other HIR) and\nyields a leaf method, use the result of this compilation\nattempt, otherwise compile the actual code or JNI stub.\n\nNote that CodeGenerator::CreateThrowingSlowPathLocations()\nactually marks the locations as kNoCall if the throw is not\nin a catch block, thus considering some throwing methods\n(for example, String.charAt()) as leaf methods.\n\nWe would ideally want to use the intrinsic codegen for all\nintrinsics that do not generate a slow-path call to the\ndefault implementation. Relying on the leaf method is\nsuboptimal as we\u0027re missing out on methods that do other\ntypes of calls, for example runtime calls. This shall be\nfixed in a subsequent CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 67717501\nChange-Id: I640fda7c22d4ff494b5ff77ebec3b7f5f75af652\n"
    },
    {
      "commit": "174b2e27ebf933b80f4e8b64b4b024ab4306aaac",
      "tree": "968cdd8d7fd68571115db77cc288807c3b257911",
      "parents": [
        "6783118d2ad9d759f0617b1219a9e29a10a569f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 12 13:34:49 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 17 11:12:08 2017 +0100"
      },
      "message": "Use ScopedArenaAllocator for code generation.\n\nReuse the memory previously allocated on the ArenaStack by\noptimization passes.\n\nThis CL handles only the architecture-independent codegen\nand slow paths, architecture-dependent codegen allocations\nshall be moved to the ScopedArenaAllocator in a follow-up.\n\nMemory needed to compile the two most expensive methods for\naosp_angler-userdebug boot image:\n  BatteryStats.dumpCheckinLocked() : 19.6MiB -\u003e 18.5MiB (-1189KiB)\n  BatteryStats.dumpLocked(): 39.3MiB -\u003e 37.0MiB (-2379KiB)\n\nAlso move definitions of functions that use bit_vector-inl.h\nfrom bit_vector.h also to bit_vector-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 64312607\nChange-Id: I84688c3a5a95bf90f56bd3a150bc31fedc95f29c\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\n"
    },
    {
      "commit": "9c57113ab1469a65cea2c0ec48dae2fdce9a8f19",
      "tree": "d8c9e1808631812cc16b2b438e73cea0c490017e",
      "parents": [
        "30e015c442c8033390c30d2f293604723c29bc75"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 22 11:59:57 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 22 12:40:40 2017 +0000"
      },
      "message": "Move StackMapStream deduplication maps to arena.\n\nMeasured compilation of a big app using heap track:\n  bytes allocated in total (ignoring deallocations): 4.14GB -\u003e 3.98GB\n  calls to allocation functions: 21662554 -\u003e 1016606\n\nTest: testrunner.py --host\nBug: 34053922\nChange-Id: I0b1c4b5273daa2bc35e039df246bafad417b9b2b\n"
    },
    {
      "commit": "d776ff08e07494327716f0d2ea1a774b2ebfbca9",
      "tree": "cedf874dd494d881adc572a10a9d14bca852add6",
      "parents": [
        "3fb852a88d2a8ffaa87089752f4b1d5f9d6ce3c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 17 09:32:18 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 15 14:46:15 2017 -0800"
      },
      "message": "Add invoke infos to stack maps\n\nInvoke info records the invoke type and dex method index for invokes\nthat may reach artQuickResolutionTrampoline. Having this information\nrecorded allows the runtime to avoid reading the dex code and pulling\nin extra pages.\n\nCode size increase for a large app:\n93886360 -\u003e 95811480 (2.05% increase)\n\n1/2 of the code size increase is from making less stack maps deduped.\nI suspect there is less deduping because of the invoke info method\nindex.\n\nMerged disabled until we measure the RAM savings.\n\nTest: test-art-host, N6P boots\n\nBug: 34109702\n\nChange-Id: I6c5e4a60675a1d7c76dee0561a12909e4ab6d5d9\n"
    },
    {
      "commit": "3228908337fdfe851223f8ae374538de25cb5ad1",
      "tree": "8aeb504fe0ae10e1970201b0b326c3f82cfdc1ff",
      "parents": [
        "7a2a3407a8c0832a4683e103c8d9a7f0ddcb8d51"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 09 15:57:37 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 15:37:04 2017 -0800"
      },
      "message": "Deduplicate register maps for both inline and normal stack maps\n\nBefore it only deduplicated the normal stack map dex register maps.\nCode size for a large app: 93341616 -\u003e 92678040 (-0.7%)\n\nAdded test.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I4fab4e40915bfa12cb978edbb3cbc19e2cf00954\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": "fbdfa6d7485534eedbd3fb32cf572529ebddb63c",
      "tree": "4835ed17e31443c3e220a2eaff8d88c6c16b9cd0",
      "parents": [
        "8781fe65fe41d971173bb2d05afe0dc00b5c08ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:43:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 06 08:26:48 2017 +0000"
      },
      "message": "Revert \"Revert \"Inline across dex files for JIT.\"\"\n\nbug:30933338\n\nThis reverts commit d16da8bd8106452eea82408748dc6b3fd64bcb80.\n\nChange-Id: I6a30354d6d00442cb1a542af063c7769865e369d\n"
    },
    {
      "commit": "90b936ddda63139ff46a6755c3b83ad6e4ab4ac5",
      "tree": "c7ce2c3004eecc16ab41ed7cde105c3019638d4b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 31 08:58:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 10:03:52 2017 -0800"
      },
      "message": "ART: Refactor verify_object.h\n\nMove the actual VerifyObject check into a new cc file, as we\ncommonly don\u0027t enable the check at all. This allows to cut the\n-inl include from almost all current users.\n\nThis also exposes missing -inl includes. Also fix up some of our old\nmess where .h defined functions require -inl.h defined functions.\n\nTest: m\n\nChange-Id: I3dd821bbe2015564a29bf1ed9be00f7a7276ad61\n"
    },
    {
      "commit": "d90cd5c435743379e592464f5443d7e86a102d01",
      "tree": "daeb59237c9c51609f0ebab500467a840559d90d",
      "parents": [
        "3f50d3cda19792d3ac0137e59300b43c542e7dca",
        "d16da8bd8106452eea82408748dc6b3fd64bcb80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:36:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 03 10:36:09 2017 +0000"
      },
      "message": "Merge \"Revert \"Inline across dex files for JIT.\"\""
    },
    {
      "commit": "d16da8bd8106452eea82408748dc6b3fd64bcb80",
      "tree": "027c5bfdea98ec8726436e695b5eb4d9572bbaf5",
      "parents": [
        "f290c01c61f8a2979efa74ffcd2f54c5e426a3d0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:35:47 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:35:47 2017 +0000"
      },
      "message": "Revert \"Inline across dex files for JIT.\"\n\nBroke hikey build.\n\nbug:30933338\n\nThis reverts commit f290c01c61f8a2979efa74ffcd2f54c5e426a3d0.\n\nChange-Id: I3363d703c54d0f9b69197a29395cc08f60c8b2ac\n"
    },
    {
      "commit": "3f50d3cda19792d3ac0137e59300b43c542e7dca",
      "tree": "43bbe84313ac903182e5e521b854d05a0f5f4f0b",
      "parents": [
        "05dfc65a594abe0aeac44bf8b82e381e25eb61d9",
        "f290c01c61f8a2979efa74ffcd2f54c5e426a3d0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 09:04:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 03 09:04:50 2017 +0000"
      },
      "message": "Merge \"Inline across dex files for JIT.\""
    },
    {
      "commit": "f290c01c61f8a2979efa74ffcd2f54c5e426a3d0",
      "tree": "73c3f221a0d0299f8a595fe3e4b60aff2b632b27",
      "parents": [
        "de09f06e243f9548e58feec79b0cd249065a5f28"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 27 23:09:22 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 02 15:48:23 2017 +0000"
      },
      "message": "Inline across dex files for JIT.\n\nbug:30933338\ntest: ART_TEST_JIT\u003dtrue test-art-host test-art-target\n\nChange-Id: I4ac708d70d90c2db4139d99a75bf4665a810c206\n"
    },
    {
      "commit": "1a20b6801f2432a42b906f0de01e7e9586526aec",
      "tree": "ae3faaf42a2b560601fc024ae16898a5dfa42261",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 14:25:16 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 12:46:43 2017 -0800"
      },
      "message": "Deduplicate register masks\n\nData is commonly shared between different stack maps. The register\nmasks are stored after the stack masks.\n\nOat size for a large app:\n96722288 -\u003e 94485872 (-2.31%)\n\nAverage oat size reduction according to golem -3.193%.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I5eacf668992e866d11ddba0c01675038a16cdfb4\n"
    },
    {
      "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": "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": "87f3fcbd0db352157fc59148e94647ef21b73bce",
      "tree": "5bdeabb246f5de86704333b3fcbccc6e9146d246",
      "parents": [
        "b94b5706f0b8e2e1c7e1db22274f9f4bae0c4b5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 28 15:52:11 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 15:17:38 2016 +0100"
      },
      "message": "Replace String.charAt() with HIR.\n\nReplace String.charAt() with HArrayLength, HBoundsCheck and\nHArrayGet. This allows GVN on the HArrayLength and BCE on\nthe HBoundsCheck as well as using the infrastructure for\nHArrayGet, i.e. better handling of constant indexes than\nthe old intrinsic and using the HArm64IntermediateAddress.\n\nBug: 28330359\nChange-Id: I32bf1da7eeafe82537a60416abf6ac412baa80dc\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": "f6a35de9eeefb20f6446f1b4815b4dcb0161d09c",
      "tree": "cf484acbd6889b92a7fe3e8615611129088c3894",
      "parents": [
        "459898dc4470559ba1e1d578bc52a914d1f573f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 21 12:01:50 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 21 16:50:08 2016 +0000"
      },
      "message": "Optimizing: Fix register allocator validation memory usage.\n\nAlso attribute ArenaBitVector allocations to appropriate\npasses. This was used to track down the source of the\nexcessive memory alloactions.\n\nBug: 27690481\n\nChange-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100\n"
    },
    {
      "commit": "1bbdfd73a98b149c31f8a80888c7ee9ab2587630",
      "tree": "f23816b520fd4b2a9b47642ac16bf37c5cec512f",
      "parents": [
        "7dc11782ff0a5dffcd8108f256f8975f0b3e8076"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 24 16:39:26 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 14:40:21 2016 +0000"
      },
      "message": "Verify encoded stack maps in debug builds.\n\nRead all stack map data back after we write it and DCHECK the content.\n\nChange-Id: Ia679594ac9e5805f6d4c56686030af153b45ea8b\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": "012fc4e9d9b66b3ffb7838b0e29dadbb4863ee69",
      "tree": "abba308e56a3d81e5c3fceebc95fb37a0ffe9c7c",
      "parents": [
        "5ee288c9dd99614e3a238f5efceeec6456e3499d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 15:58:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 17:14:17 2016 +0000"
      },
      "message": "Don\u0027t encode a DexRegisterMap if there is no live register.\n\nChange-Id: I76a291e6a0ac37f0590d16c7f5b866115588bc55\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": "b5c469357f8faf8fbaa05bc41d56903b300d0cd1",
      "tree": "0e4a19ed7962522ba90eef8d1ae828b180c65ea2",
      "parents": [
        "154746b84b407cfd166b45e039b62e6a06dc3f39"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 06 17:09:49 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 06 17:09:49 2015 +0100"
      },
      "message": "Assert we don\u0027t store an invalid dex_pc in the stack maps.\n\nChange-Id: Ie106486bd4a6d975c9a3d03d02dc48d97d83c3d8\n"
    },
    {
      "commit": "225b6464a58ebe11c156144653f11a1c6607f4eb",
      "tree": "3f1c6067c3841c892edaa1a60a61af9c559cb4e4",
      "parents": [
        "6a9984e62c08bcd78c8e49dd40b1f0f9d53513b7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 12:17:40 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 10:49:35 2015 +0100"
      },
      "message": "Optimizing: Tag arena allocations in code generators.\n\nAnd completely remove the deprecated GrowableArray.\n\nReplace GrowableArray with ArenaVector in code generators\nand related classes and tag arena allocations.\n\nLabel arrays use direct allocations from ArenaAllocator\nbecause Label is non-copyable and non-movable and as such\ncannot be really held in a container. The GrowableArray\nnever actually constructed them, instead relying on the\nzero-initialized storage from the arena allocator to be\ncorrect. We now actually construct the labels.\n\nAlso avoid StackMapStream::ComputeDexRegisterMapSize() being\npassed null references, even though unused.\n\nChange-Id: I26a46fdd406b23a3969300a67739d55528df8bf4\n"
    },
    {
      "commit": "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "659562aaf133c41b8d90ec9216c07646f0f14362"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\n\nThe original CL triggered b/24084144 which has been fixed\nby Ib72e12a018437c404e82f7ad414554c66a4c6f8c.\n\nThis reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362.\n\nChange-Id: Id8980436172457d0fcb276349c4405f7c4110a55\n"
    },
    {
      "commit": "659562aaf133c41b8d90ec9216c07646f0f14362",
      "tree": "be1beae390262bf2f5a17bfa44de93081a849d07",
      "parents": [
        "b022fa1300e6d78639b3b910af0cf85c43df44bb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "message": "Revert \"ART: Register allocation and runtime support for try/catch\"\n\nBreaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate.\n\nThis reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb.\n\nChange-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f\n"
    },
    {
      "commit": "b022fa1300e6d78639b3b910af0cf85c43df44bb",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "e481c006e8b055a31d9c7cff27f4145e57e3c113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:47:48 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 20:42:58 2015 +0100"
      },
      "message": "ART: Register allocation and runtime support for try/catch\n\nThis patch completes a series of CLs that add support for try/catch\nin the Optimizing compiler. With it, Optimizing can compile all\nmethods containing try/catch, provided they don\u0027t contain catch loops.\nFuture work will focus on improving performance of the generated code.\n\nSsaLivenessAnalysis was updated to propagate liveness information of\ninstructions live at catch blocks, and to keep location information on\ninstructions which may be caught by catch phis.\n\nRegisterAllocator was extended to spill values used after catch, and\nto allocate spill slots for catch phis. Catch phis generated for the\nsame vreg share a spill slot as the raw value must be the same.\n\nLocation builders and slow paths were updated to reflect the fact that\nthrowing an exception may not lead to escaping the method.\n\nInstruction code generators are forbidden from using of implicit null\nchecks in try blocks as live registers need to be saved before handing\nover to the runtime.\n\nCodeGenerator emits a stack map for each catch block, storing locations\nof catch phis. CodeInfo and StackMapStream recognize this new type of\nstack map and store them separate from other stack maps to avoid dex_pc\nconflicts.\n\nAfter having found the target catch block to deliver an exception to,\nQuickExceptionHandler looks up the dex register maps at the throwing\ninstruction and the catch block and copies the values over to their\nrespective locations.\n\nThe runtime-support approach was selected because it allows for the\nbest performance in the normal control-flow path, since no propagation\nof catch phi values is necessary until the exception is thrown. In\naddition, it also greatly simplifies the register allocation phase.\n\nConstantHoisting was removed from LICMTest because it instantiated\n(now abstract) HConstant and was bogus anyway (constants are always in\nthe entry block).\n\nChange-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e\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": "bd8c725e465cc7f44062745a6f2b73248f5159ed",
      "tree": "76ab28cf259def4dccec529df217fd760f27d2aa",
      "parents": [
        "6a1c92f1e4a455d802ab0d0ac47504cdd7c12f0f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 12 10:06:32 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 12 10:28:34 2015 +0100"
      },
      "message": "Optimizing: Remove PcInfo, use the StackMapStream instead.\n\nChange-Id: I474f3a89f6c7ee5c7accd21791b1c1e311104158\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": "6530baf76ef7a62f2d76a6735ad461d7d59cf0e4",
      "tree": "663de5d35062e3e6d6c953a2b2da967b8464fb2c",
      "parents": [
        "ce63cf656bb5b25051d580a58086f4bf15fb878b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 15:22:58 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 15:22:58 2015 +0100"
      },
      "message": "Move the catalog after the stack maps.\n\nFetching a stack map should be cheap, and therefore we should\nnot compute the size of the catalog.\n\nChange-Id: Iff6accb7832bdfa6d209a0928d6088b8b57c1aa4\n"
    },
    {
      "commit": "b176d7c6c8c01a50317f837a78de5da57ee84fb2",
      "tree": "81ec0c16267c527bdc64923b374be915206e6af9",
      "parents": [
        "713c59e813daa92da3f1678add6c4c7e16dcff11"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 18:48:31 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 21 12:10:00 2015 +0100"
      },
      "message": "Also encode the InvokeType in an InlineInfo.\n\nThis will be needed to recover the call stack.\n\nChange-Id: I2fe10785eb1167939c8cce1862b2d7f4066e16ec\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": "4f46ac5179967dda5966f2dcecf2cf08977951ef",
      "tree": "4c9ea50d9a135767c6e9a4abcf9b9c401a033414",
      "parents": [
        "4ceed922d44b68c3fa7cbe670014c9e2e003b92b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 18:47:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 19:58:22 2015 +0100"
      },
      "message": "Cleanup and improve stack map stream\n\n- transform AddStackMapEntry into BeginStackMapEntry/EndStackMapEntry.\nThis allows for nicer code and less assumptions when searching for equal\ndex register maps.\n- store the components sizes and their start positions as fields to\navoid re-computation.\n- store the current stack map entry as a field to avoid the copy\nsemantic when updating its value in the stack maps array.\n- remove redundant methods and fix visibility for the remaining ones.\n\nChange-Id: Ica2d2969d7e15993bdbf8bc41d9df083cddafd24\n"
    },
    {
      "commit": "c416d3359179b0ec6152104db8240f4d11c54bc7",
      "tree": "82bdb3eb5bb3ebeba82647f8c8a3e3786bebe1b0",
      "parents": [
        "edad8add1f1216850cb3f179ba6f57b0d885b016"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 16:01:43 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 23 16:03:05 2015 +0100"
      },
      "message": "Move stack map stream implementation to its own cc file.\n\nIt\u0027s big enough now to separate the implementation from the header.\n\nIt also enables faster compilation time for experiments.\n\nChange-Id: Ica0c72994d5e461c62c32628010f46f9e5c46b57\n"
    }
  ]
}
