)]}'
{
  "log": [
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "25e0456b6ea13eba290b63ea88b6b7120ed89413",
      "tree": "212c7433997a9e498ce68136ab511ae366e983e9",
      "parents": [
        "47bce25b3eaf5c0e1d46f0555eaf4676f958a7a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 13:17:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 13:17:58 2016 +0000"
      },
      "message": "Give the JIT its own arena pool to avoid lock contentions.\n\nSharing it with the verifier and the class loader is not ideal,\nespecially at startup time.\n\nbug:27398183\nbug:23128949\nChange-Id: I1b91663a13f6c5b33ad3b4be780d93eb7fe445b4\n"
    },
    {
      "commit": "bc4d218ce2ceef0c4f308d4ff42f7ec1ec43c40e",
      "tree": "a583db9be377183508653607a724dcb8742f4ca2",
      "parents": [
        "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 22 10:03:12 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 26 15:43:14 2016 -0800"
      },
      "message": "ART: Add unstarted-runtime functions\n\nAdd more functions to allow compile-time initialization of\ncode.\n\nBug: 27248115\n\n(cherry picked from commit 0866f4ed6338faa4a193b7e819fc7cd72bd7b0ae)\n\nChange-Id: Iaf8d92deb73547ccd31c0d6dde68da3bc14c3985\n"
    },
    {
      "commit": "a1de9188a05afdecca8cd04ecc4fefbac8b9880f",
      "tree": "a671c8aef814ccf194e5c3950a551f2711516c53",
      "parents": [
        "950d063395c7cecbbe372fd607468018d661a35c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 11:37:38 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 16:01:59 2016 +0000"
      },
      "message": "Optimizing: Reduce memory usage of HInstructions.\n\nPack narrow fields and flags into a single 32-bit field.\n\nChange-Id: Ib2f7abf987caee0339018d21f0d498f8db63542d\n"
    },
    {
      "commit": "ebd486978e005c994aac3aff90b0a4e0927f1b0a",
      "tree": "76cbc8681d806d44636f8286e2bf3b2b9de6dc2c",
      "parents": [
        "1de3bb289ba5e8a249840c634ad5eb108b827d69",
        "1bbdfd73a98b149c31f8a80888c7ee9ab2587630"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 25 15:45:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 25 15:45:58 2016 +0000"
      },
      "message": "Merge \"Verify encoded stack maps in debug builds.\""
    },
    {
      "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": "6406b521bed1a1cc465edc6be083ce57ba0f524e",
      "tree": "2c7382eb15e33470da65238908f67904ca868f97",
      "parents": [
        "a016ba5614054e27eada7f4815df7d4bac7ba8d8",
        "2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 14:07:40 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 23 14:07:40 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\""
    },
    {
      "commit": "2e2db786b8fbaa4dceb37603a4296b0b2aea4e9e",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "3da74687e42de7d33a8e75df9bd64374e650f75e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 23 12:00:03 2016 +0000"
      },
      "message": "Revert \"Revert \"Add profman tool: responsible to process profiles\"\"\n\nThis reverts commit 3da74687e42de7d33a8e75df9bd64374e650f75e.\n\nChange-Id: Id005096bd8063c6c602744d4476d5eb7e0d34e90\n"
    },
    {
      "commit": "e4c77b4d37024c1ed74e72494e69605942fead61",
      "tree": "5f0de5a63585b661ec0e551c6d172a441150569f",
      "parents": [
        "08e992e41e5e234ecc6b38a4ab53d4876fd077b6",
        "ca76a1a0c1737b3e04961ba382c113102fdc00bf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 10:52:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 23 10:52:23 2016 +0000"
      },
      "message": "Merge \"Dex-wide ArenaPool scoping for AOT compilation\""
    },
    {
      "commit": "a5502e31cb558c6e257d1dd1889c073a793e3d9d",
      "tree": "f6b74c93946704d3e1c9a283a4a310fe3a688673",
      "parents": [
        "4a582f864c10fce33fe9ba632aefc5e656280bc2",
        "3da74687e42de7d33a8e75df9bd64374e650f75e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:38:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 22 22:38:28 2016 +0000"
      },
      "message": "Merge \"Revert \"Add profman tool: responsible to process profiles\"\""
    },
    {
      "commit": "3da74687e42de7d33a8e75df9bd64374e650f75e",
      "tree": "f3bf62678200380dc672647af1da136c562f60b3",
      "parents": [
        "6caefd983a800a063b219f1d3ed71b1416cecd70"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 22:37:52 2016 +0000"
      },
      "message": "Revert \"Add profman tool: responsible to process profiles\"\n\nNeeds a profile_assistant_test fix.\n\nBug: 26719109\nBug: 26563023\n\nThis reverts commit 6caefd983a800a063b219f1d3ed71b1416cecd70.\n\nChange-Id: Ibdeb7385737dd7846ed861e0a95f083abb9aa974\n"
    },
    {
      "commit": "b7f9aa85a3e138440f392a9f0921fcaff8761d20",
      "tree": "03228d8b87a22d5127439a5d9632c57527e69301",
      "parents": [
        "32e9299fa6dbb82fc23c7b6eac6834f5081a62b1",
        "6caefd983a800a063b219f1d3ed71b1416cecd70"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 22 15:05:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 22 15:05:03 2016 +0000"
      },
      "message": "Merge \"Add profman tool: responsible to process profiles\""
    },
    {
      "commit": "6caefd983a800a063b219f1d3ed71b1416cecd70",
      "tree": "7fef29d5fcdb997950fd1a2524ae853b4dcfac3d",
      "parents": [
        "c017318a7c5a9142b1fff9f57eb4105b1d397bbd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 01 12:06:18 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Feb 22 13:55:18 2016 +0000"
      },
      "message": "Add profman tool: responsible to process profiles\n\nThis pulls out profile parsing from dex2oat into a separate tool.\nSome additional refactoring:\n- better return codes\n- dex2oat now accepts only one profile file\n\nThis is the first step towards support secondary dex files and\nextracting profiles out of the code_cache directory.\n\nBug: 26719109\nBug: 26563023\n\n(cherry picked from commit d81c289e58f4ced8ec7674fd377c356669f97227)\n\nChange-Id: I34d408faa318e866e1a23d4d04c369131ee5012b\n"
    },
    {
      "commit": "66a55394b0489b30576f90499f24b792a400a2d2",
      "tree": "0ebcacba63101540516ef5c150d0c03d9db9ffe3",
      "parents": [
        "eeb3b0bf5339e24b6f5e22c5a884910000c9bcfb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 19 10:25:39 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 19 10:56:10 2016 -0800"
      },
      "message": "Add VLOG(collector) to reduce log spam\n\nVLOG(gc) is enabled from AndroidRuntime, using it too much produces\nlog spam.\n\nBug: 22858531\n\n(cherry picked from commit a6e1c126299586932ecd3c1133a55a6f8e1107fc)\n\nChange-Id: If60902a8d7855cdabd80208b9b385ce4ba4d9e5f\n"
    },
    {
      "commit": "ca76a1a0c1737b3e04961ba382c113102fdc00bf",
      "tree": "c2a2adce6d3bc78be4b34ed7f7982155b4c5eefc",
      "parents": [
        "99da8cd8818e015b21d1c2af73ac40749698c930"
      ],
      "author": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Tue Feb 02 19:48:52 2016 +0100"
      },
      "committer": {
        "name": "Jean-Philippe Halimi",
        "email": "jean-philippe.halimi@intel.com",
        "time": "Fri Feb 19 13:43:24 2016 +0100"
      },
      "message": "Dex-wide ArenaPool scoping for AOT compilation\n\nThe Arena Pool is a structure that holds memory allocated by the Arena\nAllocator, preventing system allocations and deallocations to occur too often\nduring AOT compilation. Currently, the Arena Pool holds memory it allocates\nduring the whole AOT compilation process. Unfortunately, such a behavior\ngenerates memory usage overhead, which is exacerbated by bigger applications\nsuch as Facebook.\n\nIn this particular app, method size imbalance provokes unnecessary memory\npressure, as one method might require a lot of arena allocations that won\u0027t be\nused in the remaining compilation. Because the compiler memory footprint keeps\nincreasing during AOT compilation, the memory pressure becomes very high.\n\nThe proposed patch is an attempt to find a tradeoff between allocations /\ndeallocations time overhead, and the aforementioned memory pressure overhead\nresulting of the allocations being held by the Arena Pool. The patch adds a\nfeature freeing up all memory allocated in the Arena Pool after each dex file\nis done compiling.\n\nWe have measured no significant AOT compile-time overhead with the patch\n(\u003c0.3%), because the selected dex-file granularity is coarse enough. In the\nmeantime, it provides significant memory footprint improvements. The impact is\nespecially big with Facebook, because this app has a few methods generating\nhuge memory footprint peaks (peak native heap footprint goes down 34%).\n\nChange-Id: I27e867e6a20b8a6c28a82cb83140941a8c2b5847\nSigned-off-by: Jean-Philippe Halimi \u003cjean-philippe.halimi@intel.com\u003e\n"
    },
    {
      "commit": "98e6ce44c700abd9375fe17f0aa31fea1e1e938b",
      "tree": "aa15b4398290918e5eb5227781b5aef5ecff9e0b",
      "parents": [
        "a1f65135cd2315159ac302f904ba0c5ba0d7fd0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 18:42:15 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 09:51:40 2016 +0000"
      },
      "message": "Remove string init map.\n\nPartial revert of the String init change.\n\n- Make Quick bailout in the presence of String allocation.\n- Rely on the compiler for knowing when dex registers alias.\n\nbug:27173201\n\nChange-Id: I0bf58ba3825c71cef110b53f3a0a6f567cb2ef9a\n"
    },
    {
      "commit": "8817760ca9f0590be373f5939cc86941e25d8f18",
      "tree": "73321e6ffbfaf0c3b9ff86d8e875c723177d2f12",
      "parents": [
        "aaf56c4c95331d4dd8ac298e6c234d4d58d28308"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 17 11:04:20 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 17 12:08:58 2016 -0800"
      },
      "message": "Clean up register line\n\nFixed formatting and style. Also added proper null handling for arena\ndeleter.\n\nChange-Id: I6a44cb29ca6ad17b35e18dc6be1d12416f211631\n"
    },
    {
      "commit": "361e04aaa5d3eca9f978a802ee44b1213f31da58",
      "tree": "d7dc0fb40c2fedbb9aad37fd8f9aba48fc4a6a26",
      "parents": [
        "88f38e9b4e9ba0aca3d6fd4823be3a7226c87f33"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 16 14:06:35 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 16 15:02:22 2016 -0800"
      },
      "message": "Add custom arena deleter for RegisterLine\n\nPreviously it protected by using sizeof(RegisterLine) but this was\nnot accurate due to register lines being variable sized.\n\nBug: 27156726\nChange-Id: Ia4b134b85a2e61993d17bd4f0eff60c89c164dc3\n"
    },
    {
      "commit": "4fb3a42ae82859603209f23f2025551398eec6ba",
      "tree": "68543475357c13c744da67deffdc74a00f0e9ab9",
      "parents": [
        "26962cc2a1e773e99c1711bef9b36e199fdc8989"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 15 10:13:11 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 15 17:28:34 2016 +0000"
      },
      "message": "ART: Fix ArenaStack::AllocWithMemoryTool().\n\nMEMORY_TOOL_MAKE_NOACCESS() takes the size of the address\nrange as the second argument, not the end the range.\n\nBug: 27156726\nChange-Id: I05c8224a1d3c619919b203f407fb770c7c49cc9f\n"
    },
    {
      "commit": "24868a16c71d9a024101cce3b9ecc4b5ad038d07",
      "tree": "9da04303cf2ba019933e9c2283d597da967c9481",
      "parents": [
        "99e8e0b968e31b3757e329de560886b5aa7d6a13"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jan 29 18:59:56 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 03 10:17:42 2016 +0000"
      },
      "message": "Share DWARF .debug_abbrev sections.\n\nRestructure the code so that all compilation units share the same\n.debug_abbrev sections.  This deduplicates many of the abbrevs.\n\nChange-Id: I7da07a8c850871786df52674183c16d574684729\n"
    },
    {
      "commit": "fbc31087932a65e036a153afab3049dc5298656a",
      "tree": "c728b9039a71db3be9cae888ad5e1afc31f34a13",
      "parents": [
        "c7f4e3a5aeaa23342b4e03b0d751f60ac5c5815c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 24 11:59:56 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 25 14:22:15 2016 -0800"
      },
      "message": "Revert \"Revert \"Load app images\"\"\n\nThis reverts commit 1bc977cf2f8199311a97f2ba9431a184540e3e9c.\n\nBug: 22858531\n\nChange-Id: Ide00bf3a73a02cba3bb364177204ad1b13f70295\n"
    },
    {
      "commit": "1bc977cf2f8199311a97f2ba9431a184540e3e9c",
      "tree": "580a02752d8e447f6dce7cce01386c7e2a9a87f4",
      "parents": [
        "f7fd970244f143b1abb956e29794c446e4d57f46"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "message": "Revert \"Load app images\"\n\nFails when a method is duplicated (see test 097-duplicate-method)\n\nBug: 22858531\n\nThis reverts commit f7fd970244f143b1abb956e29794c446e4d57f46.\n\nChange-Id: Ib30ae5be00cc568e799290be6b3c8f29cbbe4c20\n"
    },
    {
      "commit": "f7fd970244f143b1abb956e29794c446e4d57f46",
      "tree": "aac1f57ac70747957f609bb46305dfeca87645a1",
      "parents": [
        "95005291d8ebdd1d2ac58ffc5181fef4fbbf2383"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 09 11:16:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 22 15:01:55 2016 -0800"
      },
      "message": "Load app images\n\nSupport in-place patching of the app image based on boot image\nlocation and app oat location. Only loads for art run test so far\nsince we do not automatically generate app images for app installs.\n\nN5 maps launch time (~200 runs):\nBefore: 930ms\nAfter: 878.18ms\nAfter + image class table: 864.57ms\n\nTODO:\nOatdump support.\nStore class loaders as class roots in image.\n\nBug: 22858531\n\nChange-Id: I9cbc645645e62ea2ed1ad8e139e91af7d88514c1\n"
    },
    {
      "commit": "f74388daf23522dd4e9ebe6640030f4fd52c52ea",
      "tree": "fe07a7150fbe132bdc7d78f62dbe039daf3eaae3",
      "parents": [
        "ecfd0df971c538456887866307c007c8b0a25470",
        "877fd963548a3175665bfef25b0d24bc0e5a0135"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 19 19:34:40 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 19 19:34:40 2016 +0000"
      },
      "message": "Merge \"Improve profile processing\""
    },
    {
      "commit": "877fd963548a3175665bfef25b0d24bc0e5a0135",
      "tree": "db4cae18266f7cd9415a362c21d50fef93a8488f",
      "parents": [
        "37a5abcf5e7644ae1fd1a85e865c8a71e38a9af2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 05 14:29:29 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jan 19 11:17:24 2016 -0800"
      },
      "message": "Improve profile processing\n\n- allow file descriptors in addition to file names for profiles\n- fix some minor issues (wrong comparison signs, unhandled errors)\n- added gtests for profile_compilation_info, profile_assistant\nand compiler_driver\n\nBug: 26080105\nChange-Id: I136039fa1f25858399000049e48b01eafae54eb1\n"
    },
    {
      "commit": "5cc349f3dd578e974f78314c50b6a0267c23e591",
      "tree": "7d8bf706fd6aba6f298bfe212f75db0f66e94b81",
      "parents": [
        "a38e418fb2d9b817309c54b54ca85039907c2bbb"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 18 15:04:48 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jan 13 15:39:12 2016 +0000"
      },
      "message": "Report DWARF debug information for JITed code.\n\nChange-Id: Ia5b2133c54386932c76c22774cf3d2ae61e0925f\n"
    },
    {
      "commit": "afeb309e0e4a1c2c35fc86f99c14649fa44c942d",
      "tree": "82bcfd5b57493ef18c93e4187d056490fdcf82db",
      "parents": [
        "f5ef541b3ae782d99687cc3354c5d4094abb261c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jan 12 14:23:14 2016 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jan 12 14:23:14 2016 -0800"
      },
      "message": "Correct value_type for some TrackingAllocators.\n\nThe standard says that the value_type for the allocator of a\nmap/multimap must be std::pair\u003cconst Key, T\u003e. These instances were not\nproperly carrying the const, and the updated version of libc++ has a\nstatic_assert to make sure that map::allocator_type and\nallocator::value_type really do match (as mismatches will tickle\nundefined behavior in libc++).\n\nChange-Id: I7a3a49fccea4ecc4579929d9ddd7872c62b60f5f\n"
    },
    {
      "commit": "4d87df607a0b86cdf4b2c04f61d72a60d8975ce0",
      "tree": "922e882c15633e6c700091c99864868d69822d7d",
      "parents": [
        "97f2ca08c3d9a2b1694419aea07cd64f477c0af2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 07 15:14:19 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 08 15:46:52 2016 -0800"
      },
      "message": "Improve handling of daemon threads after runtime shutdown\n\nThe main issue comes from the fact that user daemon threads are\nallowed to continue running after the runtime has shutdown. They may\nstill have a JNI env pointer. To prevent crashing if they call into\nthe env, we replace the function pointers with functions that sleep\nforever.\n\nThe other issue is that user daemon threads that are blocked in an\nART condition variable may get woken up by another user daemon inside\nof Monitor::Notify or by a spurious wakeup (i.e. SIGQUIT). To deal\nwith this issue, we check the JNI env for shutdown runtime when we\nare woken up from a condition variable wait. This check fixes test\n132 with --host --gdb --interpreter. Previously this test crashed\nsince dlclose was somehow causing a spurious futex wakeup.\n\nTODO: Investigate adding a unit test.\n\nBug: 18577101\nChange-Id: I479b38968ee9fbc4ee4b252ee2528787279972cc\n"
    },
    {
      "commit": "93e8edd3b35637b9abd450e0733bc1a653c700aa",
      "tree": "455eab69e59fe258a37d49f71f0e0bab242be677",
      "parents": [
        "b4a20a9e51b4b523b1f50e4401af38c53cdc161b"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Dec 03 14:11:46 2015 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 30 13:09:23 2015 +0000"
      },
      "message": "Fix bogus logging statement.\n\nWe were always logging an empty string.\n\nChange-Id: I9ebc89ce2df8cb664aaf2640a16dcd85bdfa036e\n"
    },
    {
      "commit": "2994605707219f67af8340ddd9379ce9bd86d74c",
      "tree": "ce7ffb41e639a8b1cc313d74d5dc47e1de6e91f2",
      "parents": [
        "76b90e37dfe6eecc904017be8046dd208d30ab8b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 13:02:14 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 13:35:59 2015 -0800"
      },
      "message": "Fix lock ordering violation\n\nMove ros alloc lock ordering above transaction lock level.\n\nBug: 26292262\n\nChange-Id: I55f75bd86b413ce193d4df890a39a9c459bc2034\n"
    },
    {
      "commit": "ec178ee58447ba23e5954eb824265e9b30f95009",
      "tree": "a53ddba8fcc76291687b4ef26bf8892427c4b729",
      "parents": [
        "14c4e90f67e71430dade7d4f20920e6352be386e",
        "e64300b8488716056775ecbfa2915dd1b4ce7e08"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 18:33:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 17 18:33:57 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Combine direct_methods_ and virtual_methods_ fields of mirror::Class\"\"\""
    },
    {
      "commit": "e64300b8488716056775ecbfa2915dd1b4ce7e08",
      "tree": "be23a7086c1e369527dda5450a9868f2d29c5669",
      "parents": [
        "bc90a0538e56f98b8e138cb622e6b9d834244ad9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 15:02:47 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 16 14:16:31 2015 -0800"
      },
      "message": "Revert \"Revert \"Combine direct_methods_ and virtual_methods_ fields of mirror::Class\"\"\n\nThis reverts commit ae358c1d5cef227b44d6f4971b79e1ab91aa26eb.\n\nBug: 24618811\n\nChange-Id: I8becf9bae3258450b90cfef5e79589db7c535a4d\n"
    },
    {
      "commit": "4741516396e9dbfb3afc2c1d8241a7e4e26a6302",
      "tree": "5b828a40c6a4342e4a3fbe995560df014db8fa81",
      "parents": [
        "7f3b38cc23b638ab84ac01a94e90f0456da3b688",
        "751beff19b36f777d9e3a966d754fd9cfad5d534"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Dec 16 15:21:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 16 15:21:25 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Introduce support for hardware simulators, starting with ARM64\"\"\""
    },
    {
      "commit": "ae358c1d5cef227b44d6f4971b79e1ab91aa26eb",
      "tree": "95c22194af5ea38a4fa5fc8bbe07ba60b6d0a021",
      "parents": [
        "6286a97bea0f584342803a215550038852b24776"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 22:15:26 2015 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 15 22:15:26 2015 +0000"
      },
      "message": "Revert \"Combine direct_methods_ and virtual_methods_ fields of mirror::Class\"\n\nThis reverts commit 6286a97bea0f584342803a215550038852b24776.\n\nChange-Id: I5b00f6d1350e9c587acd4b185367dc815ea707de\n"
    },
    {
      "commit": "6286a97bea0f584342803a215550038852b24776",
      "tree": "3571735bdc691bf30e33abb65a95ada8c71a18b7",
      "parents": [
        "377cb3ba2e1cfe51967e5292268a9aae71ceca8c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 03 17:38:56 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 14 14:27:32 2015 -0800"
      },
      "message": "Combine direct_methods_ and virtual_methods_ fields of mirror::Class\n\nThis makes several parts of the overall runtime simpler and reduces\nthe size of a class object by 32-bits.\n\nBug: 24618811\n\nChange-Id: I36129b52189e26898ea56fa2b7b45652e06af236\n"
    },
    {
      "commit": "49b0f45d5a9023653ab00c355735910aa51ee0ba",
      "tree": "655a013ab75ff1acbeae1e9113b1339f0fd14f2f",
      "parents": [
        "6d0aefdc1f536e093305e29770cf749acb3247e2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 13:49:19 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 19:42:52 2015 +0000"
      },
      "message": "Refactor and clean up OatWriter and Dex2Oat.\n\nThis is in preparation for early writing of dex files\nto oat file.\n\nChange-Id: I31195f3c94eb8ff676c600c60bd35ae531f457b4\n"
    },
    {
      "commit": "976af0a2914f20b65830b1ed9ac8ab45055f35a5",
      "tree": "735352791097844b7a79c120135f498b94be0118",
      "parents": [
        "533ffe5369cdaeb8ab7986b1fefece32351c0366",
        "5096e66d07db8041589518f8c5b0281d859d0817"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 15:43:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 09 15:43:50 2015 +0000"
      },
      "message": "Merge \"ART: Add FdFile::Copy() to copy data from another file.\""
    },
    {
      "commit": "5096e66d07db8041589518f8c5b0281d859d0817",
      "tree": "52a1d28a6286d9054d2559fea8168541612093bd",
      "parents": [
        "88b2b80aed15bb1f931cddd40e44ca525ef10018"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 08 19:25:49 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 09 15:40:31 2015 +0000"
      },
      "message": "ART: Add FdFile::Copy() to copy data from another file.\n\nAlso move utilities for inspecting file magic numbers to\nbase/file_magic.{h,cc} and drop the unused IsOatMagic().\n\nChange-Id: I2cc4dd18a5e8b9738fb386c8057faad3722bdd68\n"
    },
    {
      "commit": "e0d25b156ef12b23afa2a6493ae703ec82e23475",
      "tree": "06924f7e4b7f14db21fe41ec03a6b95eec29efeb",
      "parents": [
        "763fd2d3d131898cad6295a19ae9a30e22ce5f2a",
        "88b2b80aed15bb1f931cddd40e44ca525ef10018"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 08 16:15:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 08 16:15:24 2015 +0000"
      },
      "message": "Merge \"Allow initializing runtime with parsed options.\""
    },
    {
      "commit": "88b2b80aed15bb1f931cddd40e44ca525ef10018",
      "tree": "04b2f9d27863cd469dae8050335f197496f24ff2",
      "parents": [
        "cf6bd55863ded11e0533966657871aca444505a5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 04 14:19:04 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 07 12:38:21 2015 +0000"
      },
      "message": "Allow initializing runtime with parsed options.\n\nNeeded by upcoming refactoring of dex2oat to allow\nearly writing of dex files to the oat file.\n\nChange-Id: Ia13c26132846801522f181f51f64035d625e8416\n"
    },
    {
      "commit": "208a5cb383dd9dcd3461f89b74af5df67dc8d794",
      "tree": "9ed531a445d24a7685e577b1c5822e50dc1c1b1d",
      "parents": [
        "5337bbfbd1cd502bb2842698a6b2a543ab6a6c32"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 02 15:44:07 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 03 16:29:03 2015 -0800"
      },
      "message": "Store class tables in the image\n\nReduces how long it takes to load an application image.\n\nN5 boot.art size\nBefore: 8007680\nAfter: 8122368\n\nAlso reduces boot time by how long AddImageClassesToClassTable\nused to take (~20ms).\n\nChanged class hashes to be uint32_t to fix cross compilation. We need\nserialized hash tables to be valid with different pointer sizes.\n\nBug: 22858531\n\nChange-Id: I463fc83f499ff75f509e80c253a55b9116ee5b89\n"
    },
    {
      "commit": "3a0909248e04b22c3981cbf617bc2502ed5b6380",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "457e874459ae638145cab6d572e34d48480e39d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "message": "Revert \"lambda: Add support for invoke-interface for boxed innate lambdas\"\n\n955-lambda is flaky\n\nBug: 24618608\nBug: 25107649\n\nThis reverts commit 457e874459ae638145cab6d572e34d48480e39d2.\n\nChange-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7\n"
    },
    {
      "commit": "457e874459ae638145cab6d572e34d48480e39d2",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 22 17:37:50 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Nov 20 16:33:06 2015 -0800"
      },
      "message": "lambda: Add support for invoke-interface for boxed innate lambdas\n\nLambda closures created with the \u0027create-lambda\u0027 instruction\n(termed \"innate lambdas\") can be turned into an object with \u0027box-lambda\u0027.\n\nThis CL enables support for those kinds of lambdas to work with\n\u0027invoke-interface\u0027 by generating a proxy class for the lambda.\n\nNote: MIPS32/64 support not included.\n\nBug: 24618608\nBug: 25107649\nChange-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb\n"
    },
    {
      "commit": "04b0526d60de4e9979fc486d2ba655247d211d0b",
      "tree": "f1557aea44abe67f83b74e332fc8d8c28192a3ff",
      "parents": [
        "349baca032735e4a386b74709aa94d17f076cbce"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Nov 09 18:05:48 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 20 16:30:38 2015 +0000"
      },
      "message": "Encode function signatures properly in DWARF.\n\nThe signatures were previously stored as plain string.\nThe proper way in DWARF is to store them as structured tree of tags.\n(for example, DW_TAG_subprogram containing DW_TAG_formal_parameter)\n\nNote that this makes the debug sections smaller since DWARF\nsignatures are actually more efficient than just plain strings.\n\nChange-Id: I6afbce28340570666d8674d07c0e324aad561dd5\n"
    },
    {
      "commit": "0d5a281c671444bfa75d63caf1427a8c0e6e1177",
      "tree": "fd9bbe0f1c581bcc7c05bbfb2643ffe0b1fb014e",
      "parents": [
        "dd4cbcc924c8ba2a578914a4a366996693bdcd74"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 13 10:07:31 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Nov 15 12:16:41 2015 +0000"
      },
      "message": "x86/x86-64 read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow (new) runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: I14cd6107233c326389120336f93955b28ffbb329\n"
    },
    {
      "commit": "fda043241caada72fbf1215ac8c6eb5ad1ad44e7",
      "tree": "cc5a313d2df4bc0e295990b267abe3f06c6d3401",
      "parents": [
        "00bcbcfdc3ba28b4b985d8a8029d677579e902ff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 18:45:50 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 18:47:45 2015 +0000"
      },
      "message": "ART: Add comments to Scoped-/ArenaAllocator.\n\nChange-Id: Iba7350114fb998ac9ee1466ef12f4a5024a18e8e\n"
    },
    {
      "commit": "75001934af9fa3f2538f564bb4073d711809f1ff",
      "tree": "c683f7e8fa0b3561b60668bfcf05b898cb793ac3",
      "parents": [
        "54af9bd45a482376b5fe8d4ac291afb5bc950065"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 10 20:54:22 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 17:53:28 2015 +0000"
      },
      "message": "ART: Fix arena allocation for valgrind.\n\nMove the zero-initialization check after marking the newly\nallocated chunk as defined and check only the allocated\nspace without the red zone. Also mark unallocated space as\ninaccessible instead of just undefined.\n\nChange-Id: I74fc65f5b53acb74cec4e5a0146f41dacf4a1470\n"
    },
    {
      "commit": "751beff19b36f777d9e3a966d754fd9cfad5d534",
      "tree": "450cb7ef8cb9f955a6d689c394bd85bc9eea14f1",
      "parents": [
        "4bbe7807f313bb8e59131812c31bf31513094f8f"
      ],
      "author": {
        "name": "Phil Wang",
        "email": "phil.wang@linaro.org",
        "time": "Fri Aug 28 15:17:15 2015 +0800"
      },
      "committer": {
        "name": "Phil Wang",
        "email": "phil.wang@linaro.org",
        "time": "Fri Nov 06 14:44:20 2015 +0800"
      },
      "message": "Revert \"Revert \"Introduce support for hardware simulators, starting with ARM64\"\"\n\nThis reverts commit 4cd27d64b0bbdde61fa3f6674ceb24221853ac2c.\n\nThis depends on VIXL 1.11.\n\nChange-Id: I402c1fd6bbb218ba80ef8e59af203c9276151059\n"
    },
    {
      "commit": "a190645a005eb5da53ee82e9d3857ba66d99f845",
      "tree": "08885b5b523e8f149419d2145621815422153a05",
      "parents": [
        "2118d3d673f6874a593024308facde336b3302e7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 30 14:21:16 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 30 15:58:15 2015 -0700"
      },
      "message": "Remove extra space at end of line in output.\n\nThe done dumping histograms message in DumpHistogram had an extra\nspace before the \\n, which this CL removes.\n\nChange-Id: I9db3c185cb39fec6cbe78a60699357448bc6e3b0\n"
    },
    {
      "commit": "0f8e0723d67bd75125705b2707c36927beabd886",
      "tree": "09c5364e2bf2b09e4ac8c70470d15607c8a324e0",
      "parents": [
        "525b665cef9d85a6cfe56994561a24e10dac7f0f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 14:52:42 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 15:47:47 2015 -0700"
      },
      "message": "Use HashMap for DexFileVerifier\n\nBefore:\n2.51%  std::map\u003cunsigned int, unsigned short\u003e::insert(...\n0.72%  malloc\n\nAfter:\n0.73%  art::HashSet\u003cstd::__1::pair\u003cunsigned int, unsigned short\u003e::Insert(...\n0.57%  malloc\n\nThe allocation from HashSet is only 0.71% of the remaining 0.57% malloc time.\n0.71% art::DexFileVerifier::CheckIntraSectionIterate(unsigned long, unsigned int, unsigned short)\n\nBug: 10921004\n\nChange-Id: I85c60bf27fb2d9976b944fc15d8401904432dc22\n"
    },
    {
      "commit": "450f012957c2a63dec574fe6435a4f6569822a6b",
      "tree": "32a43b04b00808d00bba7c3e5f950dff403bdb7d",
      "parents": [
        "f230fee8de883ac5bb01b4674755e6c23aeed71c",
        "05ff5a4ad666d9eb583ff343c1cbba886d7621b1"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 26 19:13:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 26 19:13:32 2015 +0000"
      },
      "message": "Merge \"Make dchecked_vector C++11 compatible.\""
    },
    {
      "commit": "f230fee8de883ac5bb01b4674755e6c23aeed71c",
      "tree": "fa878c0fe5fbe349d0e3ce40f021c8b23f0ed906",
      "parents": [
        "ac157b0b4bbdb94c39825223283304dde2496b3a",
        "c482d383593ad5202c9a4d7c2042cdc27d4c7c50"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 18:53:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 26 18:53:09 2015 +0000"
      },
      "message": "Merge \"Add HashSet::Reserve\""
    },
    {
      "commit": "05ff5a4ad666d9eb583ff343c1cbba886d7621b1",
      "tree": "a7a05b44cd2b630d22e7fc7ca02cdd3ae38326b8",
      "parents": [
        "e04f37908bfd72382163c1285853e662373229a2"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 26 11:39:41 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Oct 26 11:50:40 2015 -0700"
      },
      "message": "Make dchecked_vector C++11 compatible.\n\nSince GCC\u0027s C++14 ABI is incorrect, we need to drop GCC users back to\nC++11. Since ART does not unconditionally use clang, it cannot\nunconditionally use C++14 either.\n\nThis constructor for std::vector was added in C++14, so we need to\nimplement it ourselves.\n\nBug: http://b/25022512\nChange-Id: Ib31a312c8c91fe6eccf24d59ef58f2fa8e634e1c\n"
    },
    {
      "commit": "c482d383593ad5202c9a4d7c2042cdc27d4c7c50",
      "tree": "c48cb3bd188fea31fe7b8f923de21096e1cfefa0",
      "parents": [
        "92ca333976cf381de004945f95fa1e347d0a3a0e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 11:20:18 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 11:45:30 2015 -0700"
      },
      "message": "Add HashSet::Reserve\n\nReserves enough room to insert n elements without expanding.\nMotivation is to use this for cases where we know how many elements\nwill be inserted.\n\nChange-Id: I3c51fc7f4601903411fc90b0f1bf270fe9a30919\n"
    },
    {
      "commit": "de40d478930d0889a2aea5cbf58aa63da24e5dfa",
      "tree": "8efcc1c3e3850be151ce6d5046b1a9b3679d023f",
      "parents": [
        "fd948240e02c005380e15155f8e50a175e7cb343"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 15 17:47:48 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 26 08:54:12 2015 -0700"
      },
      "message": "Use arenas for the verifier\n\nImprovements are from using arenas for verifier. The things that\nwere moved into arenas are register lines, reg types, and reg type\ndescriptors.\n\nAlso some minor cleanup. Fixed double space formatting error in\nstring piece.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nBefore:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\ncompile GmsCore 50x on host -j1:\nreal  3m5.510s\nuser  2m48.139s\nsys 0m11.753s\n\n50 random APKs:\nreal  1m18.157s\nuser  1m8.167s\nsys 0m8.071s\n\nRAM (GmsCore):\n(threads: 1) arena alloc\u003d0B java alloc\u003d27MB native alloc\u003d64MB free\u003d792KB\n(threads: 4) arena alloc\u003d0B java alloc\u003d27MB native alloc\u003d64MB free\u003d397KB\nPerf:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nAfter:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\ncompile GmsCore 50x on host -j1:\nreal  2m31.455s\nuser  2m14.784s\nsys 0m10.888s\n\n50 random APKs:\nSpeed up from arena allocating:\nreal  1m12.094s\nuser  1m2.325s\nsys 0m7.872s\n\nSpeed up from areans + CreateFindClassDefIndex + unordered_map for DexFileVerifier.\nreal  1m8.654s\nuser  0m58.955s\nsys 0m7.777s\n\nRAM (GmsCore):\n(threads: 1) arena alloc\u003d1049KB java alloc\u003d27MB native alloc\u003d65MB free\u003d538KB\n(threads: 4) arena alloc\u003d4MB java alloc\u003d27MB native alloc\u003d69MB free\u003d650KB\n\nPerf on host key results:\n_int_malloc: 3.60% -\u003e 1.39%\nmalloc: 1.48% -\u003e 0.65%\n_int_free: 1.59% -\u003e 0.61%\nRegTypeCache::FromClass: 1.47% -\u003e 0.86%\nmalloc_consolidate: 0.89% -\u003e 0.63%\n\nReal speed up is ~22% on GmsCore, ~14% on the set of 60 APKs.\n\nBug: 10921004\n\nChange-Id: If13d4ab4284a176f93a26a412549b6b1149dfb16\n"
    },
    {
      "commit": "784e790503380383326af4a749665a413016e729",
      "tree": "2bd1ffd62dcfeafd6f15a42ec28b4eaf0c1991cf",
      "parents": [
        "b5172e8e8c4a5cfff5a0bdb0a7f1810ee9c7bbd1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 23 17:31:36 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 23 17:33:34 2015 -0700"
      },
      "message": "ART: Support trivially-destructible arrays in ArenaUniquePtr\n\nFor trivially-destructible types of arrays, we do not have to call\nthe destructor on all elements. This is minimal support to tag\nownership of some arena-allocated arrays.\n\nChange-Id: I45ec7ed6bab3842c9447d954e359cb8cf047aee6\n"
    },
    {
      "commit": "7b05e17db15879b486f3299a9a41ac17b87700f4",
      "tree": "cf131b61e127f91c414954cc3ab038aa498a6018",
      "parents": [
        "92ca333976cf381de004945f95fa1e347d0a3a0e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 15 17:47:48 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 23 13:26:55 2015 -0700"
      },
      "message": "Add ArenaUniquePtr\n\nMotivation is to use it for adding arenas in the verifier.\nAlso added arena tags to prevent double free errors.\n\nBug: 10921004\nChange-Id: I545f3374eceb9a6a35e738cb899d1493098fb760\n"
    },
    {
      "commit": "e5d80f83ae53792bc1eebd4e33e4e99f7c031b0c",
      "tree": "cc21ac068a5d02349c5b1aaa8c7f61ae777f6cea",
      "parents": [
        "a815f17cc82f4f238d8bdec1bd5b70fec720541e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 15 17:47:48 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 23 11:21:11 2015 -0700"
      },
      "message": "Move ArenaBitVector into the runtime\n\nMotivation is using arenas in the verifier.\n\nBug: 10921004\nChange-Id: I3c7ed369194b2309a47b12a621e897e0f2f65fcf\n"
    },
    {
      "commit": "8df69d42a9e3ccd9456ff72fac8dbd1999f98755",
      "tree": "b2d7617d4d2e1ae80ab7024b47802dafbaee3b3a",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 15:40:58 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 16:37:46 2015 -0700"
      },
      "message": "Revert \"Revert \"load store elimination.\"\"\n\nThis reverts commit 8030c4100d2586fac39ed4007c61ee91d4ea4f25.\n\nChange-Id: I79558d85484be5f5d04e4a44bea7201fece440f0\n"
    },
    {
      "commit": "e2aa3265594486b4b977453752645cdce3026e82",
      "tree": "9dbc25ecfea85fdbae2db380af3649a1a05941dc",
      "parents": [
        "534a9b68ec5e8dda8f6e0a07bf0fdbaeb0cedbfe"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 20 18:30:03 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 21 08:38:11 2015 -0700"
      },
      "message": "Use binary search for FindDeclaredInstance/StaticField\n\nBefore:\nreal  1m18.157s\nuser  1m8.167s\nsys 0m8.071s\n\nAfter:\nreal  1m12.943s\nuser  1m3.223s\nsys 0m7.881s\n\nPerf results:\nFindDeclaredStaticField: 1.78% -\u003e 0.11%\n__GI___strncmp_ssse3: 2.45% -\u003e 0.87%\n\nBug: 10921004\n\nChange-Id: Ice7d3ce2635d6cd2de5574055375d9e20712d241\n"
    },
    {
      "commit": "3ae313d9bc64eaa0c791452dd972654eae979496",
      "tree": "f3a5eb9404ef18b124063614eb8967b58f239939",
      "parents": [
        "e8939d20602ec88c314d50e201215a264666828a",
        "32cc9ee0cdffecb0ec8d80a7fd55d7dccae3a7ee"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 16 15:47:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 16 15:47:08 2015 +0000"
      },
      "message": "Merge \"Change hash table load factors\""
    },
    {
      "commit": "32cc9ee0cdffecb0ec8d80a7fd55d7dccae3a7ee",
      "tree": "e394d05cb35fd8a89ae4be0d57635d7fee219ede",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 15 09:19:15 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 16 08:46:12 2015 -0700"
      },
      "message": "Change hash table load factors\n\nChanged class table and intern table load factors to query the\nruntime. The runtime returns load factors based on whether or not we\nare a low ram device.\n\nDescriptorEquals time for class linking goes from 10% -\u003e 1.2% for\ncompiling GmsCore with interpret only.\n\nAdded test.\n\nBug: 24917584\n\nChange-Id: Iaaf5d2eab1b0c2d188d299e4bc1852cdb3801173\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "8030c4100d2586fac39ed4007c61ee91d4ea4f25",
      "tree": "9d16c721b449e84aa04681440a79b85d86fa2aa2",
      "parents": [
        "589dac7f0ce078d19aad7e35bb0195c47ddf01d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "message": "Revert \"load store elimination.\"\n\nBreaks libcore tests:\n\n  libcore.java.lang.ref.FinalizeTest#testWatchdogDoesNotFailForObjectsThatAreNearTheDeadline\n  libcore.java.util.ResourceLeakageDetectorTest#testDetectsUnclosedCloseGuard\n  org.apache.harmony.tests.java.lang.ref.ReferenceTest#test_finalizeReferenceInteraction\n\nThis reverts commit 589dac7f0ce078d19aad7e35bb0195c47ddf01d2.\n\nChange-Id: I55115765c10762d5bc152d3425e4622560d8b9f4\n"
    },
    {
      "commit": "589dac7f0ce078d19aad7e35bb0195c47ddf01d2",
      "tree": "5c77fb845997b21ce1aa97b1fa176c64a76e14f1",
      "parents": [
        "d2e0dd179fd2e8c6c820194e187fc5e9164154ff"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 24 11:21:42 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 15 01:36:34 2015 -0700"
      },
      "message": "load store elimination.\n\nThis adds a pass to eliminate some unnecessary heap loads/stores. It\nfirst collects heap locations and then tracks values stored to those heap\nlocations. Alias analysis is done based on offset, type, singleton,\npre-existence, etc.\n\nChange-Id: I11a9d8ef20d1b2f245607eb25118e9aff9be472a\n"
    },
    {
      "commit": "e58991b3b2282b5761f1a6023a16c803e1c4eb45",
      "tree": "5a6fac6c5d3cb6a463463b83b8a34a53b07a8ede",
      "parents": [
        "fb11bab9bc96ff05dcb12f43abf58df256b7c7aa"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 13 07:59:34 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 13 13:17:50 2015 -0700"
      },
      "message": "Revert \"Revert \"Unload oat files\"\"\n\nFixed a race where two threads calling OatFile::Open could both use\ndlopen on the host.\n\nBug: 22720414\n\nThis reverts commit 72da5e7461fec3b1e116050f2e6f233efb9c54f3.\n\nChange-Id: I1636045b724944d2a09417527280784967957095\n"
    },
    {
      "commit": "655e585073ac271cc9afa7c9d6ff5ab4dbe4b72e",
      "tree": "f02b64d048ae4cd7fa51774f220192ddeef42e1e",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 10:38:28 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 13:24:31 2015 +0100"
      },
      "message": "Optimizing: Move GraphChecker memory allocations to arena.\n\nBug: 18120045\nChange-Id: I3934158e6ea4868d9baa1dfcc53b603ca6c521e2\n"
    },
    {
      "commit": "f9c6fc610b27887f832e453a0da1789187293408",
      "tree": "3f45a15327e5bc7cb71e6c238ba75e87ae2e6058",
      "parents": [
        "793e6fbdefb092d1dab50bca5618aed110c7e037"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 07 11:44:05 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 09 12:57:53 2015 -0700"
      },
      "message": "Add OatFileManager\n\nTakes over a large amount of functionality from the class linker.\n\nChanged OatFile to loading the same OatFile multiple times. This is\nrequired for unloading OatFiles and moving dex caches to BSS since\nthese require a different OatFile for each dex cache and class\nloader.\n\nBug: 22720414\n\nChange-Id: I0321096723a294dc72949f21e66da82727b512fc\n"
    },
    {
      "commit": "1f49764f7d62b2f80ce3418234a5036a59b2b762",
      "tree": "7dfe677cdf802ae381484a525129024c44315dcb",
      "parents": [
        "80d3f4f00e2494f0311f04e8379497ec75376d46"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 05 20:34:42 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 09 12:31:35 2015 +0100"
      },
      "message": "ART: Use arena allocator with HashSet/HashMap.\n\nAllow passing ArenaAllocatorAdapter (or any other allocator)\nto HashSet/HashMap and create appropriate Arena- aliases.\nUse the ArenaHashMap in StackMapsStream.\n\nUpdate arena allocator adapters\u0027 construct()/destroy() to\nC++11 std::allocator\u003c\u003e API.\n\nChange-Id: I18544f718f84c6d6580228dd35297daf7f6afb5e\n"
    },
    {
      "commit": "14412079e6eba4d16f40c0bdc5e94812e1c7f5bc",
      "tree": "dda2e1759c10b05de64cd23b434d76d590469618",
      "parents": [
        "526ec078c7e4ace31193d7f49ded661ea0929292",
        "df1ccff0cf571076bed72e37492b000b08a7dd26"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Oct 08 22:25:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 08 22:25:50 2015 +0000"
      },
      "message": "Merge \"Revert \"Disable clang optimization to boot up on arm64.\"\""
    },
    {
      "commit": "df1ccff0cf571076bed72e37492b000b08a7dd26",
      "tree": "e373871d3b56a161eacd7a1d25846c2a39b0ad62",
      "parents": [
        "1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Oct 08 21:00:10 2015 +0000"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Oct 08 21:48:30 2015 +0000"
      },
      "message": "Revert \"Disable clang optimization to boot up on arm64.\"\n\nThis reverts commit 1675f2c5581c7b0b83c8823e2b4eb0ec62b28b7f.\n\nWith latest Android source, now we can boot up without this workaround.\n\nBUG: 19180814\n\nChange-Id: I8a7852573856dbbe10a5f4823f7261b8ecc7490c\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": "7bda3b600d74c9a5746840ebb8534443e486615a",
      "tree": "857e13b3bd5a0435b8f2bf8fc15654df7b21810a",
      "parents": [
        "5928931541e07b4c98e677cfca3088106b2b9e64"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 07 12:44:31 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 07 13:49:42 2015 +0100"
      },
      "message": "Revert \"Quick: Work around large frame sizes for x86_64.\"\n\nInstead, move the MEMORY_TOOL_MAKE_* calls out-of-line.\n\nBug: 24729377\n\nThis reverts commit d4cf1e4fe0624b99df22ed5556dc1d042b32a7e0.\n\nChange-Id: I9bccc8bd4a691a2d018b84de8b95bc68fafad4e1\n"
    },
    {
      "commit": "35ef974da353b13938fb0f3272c03070ad728431",
      "tree": "eebc82d0ab39506f48f2149e312fcd7065dab3f0",
      "parents": [
        "3b6b587934659bc4428557ac174ccce3731fd91a",
        "2a408a3bef330551818f9cec9a7c5aa7a3f1129e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 12:53:41 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 06 12:53:41 2015 +0000"
      },
      "message": "Merge \"ART: Mark deallocated arena memory as inaccessible.\""
    },
    {
      "commit": "dbce0d738e9d7956d2bd73e932a0fdd28f2229b4",
      "tree": "336a92e522c4f20386f65f2a34534f982cf28089",
      "parents": [
        "002117f95896ffa5db74bee808ae61e876b6e8b0"
      ],
      "author": {
        "name": "Chris Larsen",
        "email": "chris.larsen@imgtec.com",
        "time": "Thu Sep 17 13:34:00 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 05 18:12:30 2015 -0700"
      },
      "message": "MIPS64r6 Assembler Tests\n\nAssembler tests for:\n\n- SQRT.fmt    - ABS.fmt     - ROUND.L.fmt - ROUND.W.fmt\n- CEIL.L.fmt  - CEIL.W.fmt  - FLOOR.L.fmt - FLOOR.W.fmt\n- SEL.fmt     - RINT.fmt    - CLASS.fmt   - MIN.fmt\n- MAX.fmt     - cvt.d.l     - BITSWAP     - DBITSWAP\n- DSBH        - DSHD        - WSBH        - ROTR\n- SELEQZ      - SELNEZ      - CLZ         - CLO\n- DCLZ        - DCLO        - SC          - SCD\n- LL          - LLD\n\nThese are the assembler instructions which were added to support\nintrinsic functions on MIPS64. Tests for additional assembler\ninstructions will follow.\n\nSupport added to the testing infrastructure for:\n\n- Assembler instructions which use three registers; previously\n  instructions were limited to one, or two, registers.\n- Immediate values which have their sizes specified by the number of\n  bits required to store them rather than the number of bytes, in both\n  signed and unsigned versions.\n\nChange-Id: I38c07dcbf2539825b25bed13aac05a26fa594b0b\n"
    },
    {
      "commit": "2a408a3bef330551818f9cec9a7c5aa7a3f1129e",
      "tree": "732bf331e38609a75679b101a1e8a6b65dfe576e",
      "parents": [
        "b4fd73139aca48d7319221aeefe8bae93a98c56d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 18 14:11:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 13:41:46 2015 +0100"
      },
      "message": "ART: Mark deallocated arena memory as inaccessible.\n\nMark arena and scoped arena memory freed by allocator\nadapters as inaccessible. This can help catch accesses to\nold storage of a container, for example the old data of an\nArenaVector\u003c\u003e that\u0027s been resized.\n\nTogether with debug-mode enforcement of destruction of all\nscoped arena containers, this provides strong verification\nof their memory usage. However, this does not apply to the\nnormal (non-scoped) arena memory held by arena containers\nas they are typically not destroyed if they are themselves\nlocated in the arena. ArenaBitVector memory, whether in\nnormal or scoped arena, isn\u0027t marked either.\n\nChange-Id: I4d2a80fedf7ceb7d4ce24ee8e7bcd53513171388\n"
    },
    {
      "commit": "5233f93ee336b3581ccdb993ff6342c52fec34b0",
      "tree": "225dc0ab491263ef56362a8d0fe2926266bd5047",
      "parents": [
        "de8a3f4dce1e9ff0e3be16956b06bafc8cd4f397"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 19:01:15 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 19:46:03 2015 +0100"
      },
      "message": "Optimizing: Tag even more arena allocations.\n\nTag previously \"Misc\" arena allocations with more specific\nallocation types. Move some native heap allocations to the\narena in BCE.\n\nBug: 23736311\nChange-Id: If8ef15a8b614dc3314bdfb35caa23862c9d4d25c\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": "2aaa4b5532d30c4e65d8892b556400bb61f9dc8c",
      "tree": "f4259c33171ec8efd945aeedab1e57feb7970f42",
      "parents": [
        "3f4b39dec9ec6b8948ed18b9d65ba49db2465004"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 17 17:03:26 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 25 12:18:02 2015 +0100"
      },
      "message": "Optimizing: Tag more arena allocations.\n\nReplace GrowableArray with ArenaVector and tag arena\nallocations with new allocation types.\n\nAs part of this, make the register allocator a bit more\nefficient, doing bulk insert/erase. Some loops are now\nO(n) instead of O(n^2).\n\nChange-Id: Ifac0871ffb34b121cc0447801a2d07eefd308c14\n"
    },
    {
      "commit": "a2c38644d96cbad4106c0165811d0f670d6cec8f",
      "tree": "4ad15bed693ced09d99bb034175bdfe8cc3bb1c2",
      "parents": [
        "6766eae2d91e894b4ceab9f29cc983900e7bc0c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 17 17:29:01 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 17 18:33:16 2015 -0700"
      },
      "message": "Add lock around interpreter string init reg map.\n\nFixes intermittent test failures. Note that locks can\u0027t be held\nwhile the verifier is generating the map.\n\nChange-Id: Ie38d6bf0d9c5e81d66b8c167fde0e75a0565cea5\n"
    },
    {
      "commit": "76c92ac73eeda2582caee39dd427ca035caf172b",
      "tree": "7d5baae363d7c380476ce8842ad1f43b59d48af5",
      "parents": [
        "a201d5eeb0903408df925a1ed1686a55238a274c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 17 15:39:16 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 17 15:45:39 2015 +0100"
      },
      "message": "Optimizing: Allow storing value objects in containers.\n\nChange-Id: Ic9c6b62e36706e571fd71c18d24d8e76ae2d5c7b\n"
    },
    {
      "commit": "71bf8090663d02869cafafdd530976f7f2a9db7f",
      "tree": "70f910498031be392dd1f851cf38fe68bdc3154c",
      "parents": [
        "4919c34ead9a10d6cbdaba9967952c344b32e5b9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 15 15:33:14 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 16 16:41:01 2015 +0100"
      },
      "message": "Optimizing: Tag arena allocations in SsaBuilder.\n\nReplace GrowableArray with ArenaVector in SsaBuilder and\ntag allocations with a new arena allocation type.\n\nChange-Id: I27312c51d7be9d2ad02a974cce93b365c65c5fc4\n"
    },
    {
      "commit": "fa6b93c4b69e6d7ddfa2a4ed0aff01b0608c5a3a",
      "tree": "3528c88e104dac8e58ae5370ab066b8b1dd0218f",
      "parents": [
        "e295be4a95d7861f6ec179edf6565f58cad747cc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 15 10:15:55 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 16 13:21:33 2015 +0100"
      },
      "message": "Optimizing: Tag arena allocations in HGraph.\n\nReplace GrowableArray with ArenaVector in HGraph and related\nclasses HEnvironment, HLoopInformation, HInvoke and HPhi,\nand tag allocations with new arena allocation types.\n\nChange-Id: I3d79897af405b9a1a5b98bfc372e70fe0b3bc40d\n"
    },
    {
      "commit": "9af47e27674e70e7f82315d39de5bc659c4e1b83",
      "tree": "e1cf3d95c94721cf9e411e544f37105b684d7666",
      "parents": [
        "35717f8cfb6c1de5c89b2f9b990a050b2cbab66f",
        "6058455d486219994921b63a2d774dc9908415a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 14 11:43:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 14 11:43:25 2015 +0000"
      },
      "message": "Merge \"Optimizing: Tag basic block allocations with their source.\""
    },
    {
      "commit": "35717f8cfb6c1de5c89b2f9b990a050b2cbab66f",
      "tree": "468d9275ebb774de9c373aea6387e5c55c4336e6",
      "parents": [
        "b6f7dd330f115fc977d1d5a10122c41c9dd7c210",
        "637ee0b9c10ab7732a7ee7b8335f3fff4ac1549c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 14 10:42:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 14 10:42:01 2015 +0000"
      },
      "message": "Merge \"ART: Add some utilities for working with containers.\""
    },
    {
      "commit": "68cad90bf51337af0a6b3c0522a218ea5e3ecf43",
      "tree": "056a8ae56040f2d88e08d35bde7faf6fbc032a82",
      "parents": [
        "b09f33381174843214de40533366e162a0c6d768"
      ],
      "author": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Sat Sep 12 16:04:42 2015 -0700"
      },
      "committer": {
        "name": "Pirama Arumuga Nainar",
        "email": "pirama@google.com",
        "time": "Sat Sep 12 16:06:02 2015 -0700"
      },
      "message": "Remove unnecessary std::move from variant_map.h\n\nThis triggers Clang\u0027s pessimizing-move warning.\n\nChange-Id: Icb33643f28d1d159a87a17235c4d210209199dac\n"
    },
    {
      "commit": "6058455d486219994921b63a2d774dc9908415a2",
      "tree": "3d205227f3ff54cd3a50bc5c0e7cb3ad6c175b86",
      "parents": [
        "637ee0b9c10ab7732a7ee7b8335f3fff4ac1549c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:35:12 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 08 18:09:49 2015 +0100"
      },
      "message": "Optimizing: Tag basic block allocations with their source.\n\nReplace GrowableArray with ArenaVector in HBasicBlock and,\nto track the source of allocations, assign one new and two\nQuick\u0027s arena allocation types to these vectors. Rename\nkArenaAllocSuccessor to kArenaAllocSuccessors.\n\nBug: 23736311\nChange-Id: Ib52e51698890675bde61f007fe6039338cf1a025\n"
    },
    {
      "commit": "637ee0b9c10ab7732a7ee7b8335f3fff4ac1549c",
      "tree": "21cf63333abcc07ed1e3138ec3c9e690e0abc227",
      "parents": [
        "68ffda887e35f35e978f2f607b7a91e44a5e1969"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 04 12:47:41 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 08 18:09:20 2015 +0100"
      },
      "message": "ART: Add some utilities for working with containers.\n\nAdd utility functions for searching, removing and replacing\nexisting values in a container, to be used with std::vector\n(including the ArenaVector alias) and other containers.\n\nAlso move UniqueCPtr\u003c\u003e and MakeUnique() to base/stl_utils.h\nand clean up related includes.\n\nChange-Id: I1e61762df91c046866591bda167d42bf8b67a692\n"
    },
    {
      "commit": "145acc5361deb769eed998f057bc23abaef6e116",
      "tree": "3d66a0b44e1ac927156eec6e6488de5fd52b982b",
      "parents": [
        "91e11c0c840193c6822e66846020b6647de243d5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:33:25 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:33:25 2015 +0000"
      },
      "message": "Revert \"Optimizing: Tag basic block allocations with their source.\"\n\nReverting so that we can have more discussion about the STL API.\n\nThis reverts commit 91e11c0c840193c6822e66846020b6647de243d5.\n\nChange-Id: I187fe52f2c16b6e7c5c9d49c42921eb6c7063dba\n"
    },
    {
      "commit": "91e11c0c840193c6822e66846020b6647de243d5",
      "tree": "0c5398ef59c464c1848afd0113c74b6aeb75cf42",
      "parents": [
        "f9f6441c665b5ff9004d3ed55014f46d416fb1bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 17:03:22 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:09:37 2015 +0100"
      },
      "message": "Optimizing: Tag basic block allocations with their source.\n\nReplace GrowableArray with ArenaVector in HBasicBlock and,\nto track the source of allocations, assign one new and two\nQuick\u0027s arena allocation types to these vectors. Rename\nkArenaAllocSuccessor to kArenaAllocSuccessors.\n\nBug: 23736311\nChange-Id: I984aef6e615ae2380a532f5c6726af21015f43f5\n"
    },
    {
      "commit": "f9f6441c665b5ff9004d3ed55014f46d416fb1bb",
      "tree": "3d66a0b44e1ac927156eec6e6488de5fd52b982b",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 14:05:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 02 20:16:58 2015 +0100"
      },
      "message": "Optimizing: Tag Arena allocations with their source.\n\nThis adds the ability to track where we allocate memory\nwhen the kArenaAllocatorCountAllocations flag is turned on.\n\nAlso move some allocations from native heap to the Arena\nand remove some unnecessary utilities.\n\nBug: 23736311\nChange-Id: I1aaef3fd405d1de444fe9e618b1ce7ecef07ade3\n"
    },
    {
      "commit": "f92d753fe3c43f7988d031c7c7e2c9a399f18103",
      "tree": "4a73e35ad6d53836282d5c03eb8b466f2023f8d8",
      "parents": [
        "5899810257a6c1bd2b252cfc46c78e2c9bea3c52",
        "673ed3d8aedc5462a47ded827c99f35d46525457"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 20:37:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 31 20:37:43 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Change dex caches to be weak roots\"\"\""
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "cf7792d4789b98e4a44674f1b0a96c5e63349a85",
      "tree": "5f4b2d8129871c6f0972708d395471115c6e24f1",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Aug 27 09:04:18 2015 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Aug 28 15:31:57 2015 -0700"
      },
      "message": "Test HashSet lookup by alternate key type.\n\nThe test case demonstrates and verifies looking up a HashSet element\nby an alternate key type.\n\nChange-Id: I833d572fb6105bf4d7c343ce50de873f27e4311f\n"
    },
    {
      "commit": "81a9087f0df0518c39405b7d18ba5858a6d8b77b",
      "tree": "f4936654805b4d84540bd909095e8bbf69795bfd",
      "parents": [
        "f86a0859684c0f8964da4cbe75d49df8f832e85b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:14 2015 -0700"
      },
      "message": "Revert \"Change dex caches to be weak roots\"\n\nThis reverts commit 3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4.\n"
    },
    {
      "commit": "f86a0859684c0f8964da4cbe75d49df8f832e85b",
      "tree": "0e3d972d5dacb92aab5f362f391adfe4e9424262",
      "parents": [
        "6010fa93a61088aeb1f312c161f2c19de202a772"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:06 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 28 09:07:06 2015 -0700"
      },
      "message": "Revert \"Move mark stack lock up in ordering\"\n\nThis reverts commit deaa1833e930ab8d8e0011b5267fcc2778a49099.\n"
    },
    {
      "commit": "deaa1833e930ab8d8e0011b5267fcc2778a49099",
      "tree": "fc62372083f469c800ccb363a8bee07e1a729401",
      "parents": [
        "c38fd0dc9c2d046555dbca41e3d27afb25f2e206"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 27 15:46:01 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 27 15:46:01 2015 -0700"
      },
      "message": "Move mark stack lock up in ordering\n\nBug: 23589883\nChange-Id: I9cc29b96d2636d092e0cb32a5c52de1afabc4d4e\n"
    },
    {
      "commit": "3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4",
      "tree": "9ae990956db3d2d5970fb15bf264aeeb73e2bfe0",
      "parents": [
        "dcff51a0079c5e3abaf0335f7cb9a3dd44044456"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 14 14:03:10 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 25 18:00:47 2015 -0700"
      },
      "message": "Change dex caches to be weak roots\n\nChanged dex caches to be weak roots. This is necessary for class\nunloading since the resolved types arrays would keep classes live\nwhen they should be unloaded. Currently the dex caches still don\u0027t\nget freed due to the class loader roots.\n\nAlso deleted some unused functionality in image writer.\n\nBug: 22720414\nChange-Id: If22cb3cad7e3baabc8158a77d7f20799faf4c341\n"
    },
    {
      "commit": "151ab8d096be02b04391fd32460a31ee60ae2b0a",
      "tree": "566224aba5d6eb10a2ef5dee01314a21481fc6b3",
      "parents": [
        "5e289b2bca7a0bc67fcf00a1017d70db8b363113"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 14 23:01:49 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 17 13:45:36 2015 -0700"
      },
      "message": "Revert \"Revert \"ART: DCHECK zero case for CLZ/CTZ\"\"\n\nThis reverts commit 4318d91ea4be673d4deba39d33ac4718d77986a7.\n\nFix up the lit\u003d-1 case in the arm32 Quick backend; add test case.\n\nChange-Id: I8d0861133db950090ee959f532ede1448683dfa9\n"
    },
    {
      "commit": "cf36d493124d8048efa0bd6f67d817ce3cd6b725",
      "tree": "fac1336f54ea477ce1afe2e99a04b68db38c7ac8",
      "parents": [
        "1cad8c7c63b600a3da83bf05fb645e08ac8fafc0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 12 19:27:26 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 17 10:04:42 2015 +0100"
      },
      "message": "ART: Compress LengthPrefixedArray on 32-bit targets.\n\nPreviously, the LengthPrefixedArray\u003cArtMethod\u003e on 32-bit\ntargets contained a 64-bit length field followed by the\nArtMethod elements with size only a multiple of 4, not 8.\nConsequently, an odd-length array broke the alignment for\nthe following array which would have the 64-bit length\nplaced at an unaligned address.\n\nTo fix that, we make the length field 32-bit and explicitly\npass the alignment information to the LengthPrefixedArray.\nThis also makes the 32-bit boot image a bit smaller.\nOn Nexus 5, AOSP, ToT, the field section is 11528B smaller\nand the method section is 21036B smaller. 64-bit targets\nshould see the same savings for the field section but no\ndifference for the methods section.\n\nChange-Id: I3e03e7b94129025c8a1c117c27645a34dec516d2\n"
    }
  ],
  "next": "3887c468d731420e929e6ad3acf190d5431e94fc"
}
