)]}'
{
  "log": [
    {
      "commit": "eb7c144a6aff7da673ba53d501c46f00311d4d7f",
      "tree": "feec33dd2e711800305477b092970500991a3993",
      "parents": [
        "98ae42010a6e6a0e4c5bcc4d6a357805eef3f4ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 31 13:17:42 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 13 13:09:37 2015 -0700"
      },
      "message": "Add initial default method support to Art\n\nThis commit starts the process of adding default methods and their\nassociated pieces to ART.\n\nThis adds full support for calling default methods using\ninvoke-interface and invoke-virtual on objects implementing the\ninterfaces. Verifier is changed to allow this when the runtime is\nstarted with -Xexperimental:default-methods.\n\nThis also adds support for defining and calling static methods on\ninterface classes with invoke-static.\n\nDirectly calling overridden default methods using invoke-super is not\nyet supported.\n\nThis adds 5 new run-tests for this functionality.\n\nBug: 24618811\n\nChange-Id: I35ca800d99d3329348b277789b70ceeeba6e7f03\n"
    },
    {
      "commit": "439ffb8d4fa25b4ac7518a3bd5cbc3f3769ead48",
      "tree": "1c4957e89dcd48ac197d06c43e5ee0d9a77d5b5e",
      "parents": [
        "5021883b95d2637f9cc6b4f2c5cf305730e864df",
        "ee3cf0731d0ef0787bc2947c8e3ca432b513956b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 12:47:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 12 12:47:06 2015 +0000"
      },
      "message": "Merge \"Intrinsify System.arraycopy.\""
    },
    {
      "commit": "ee3cf0731d0ef0787bc2947c8e3ca432b513956b",
      "tree": "4146f2c830bdbacdad941e06a0f5979350fe05ad",
      "parents": [
        "5928931541e07b4c98e677cfca3088106b2b9e64"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 06 11:45:02 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 12:16:40 2015 +0100"
      },
      "message": "Intrinsify System.arraycopy.\n\nCurrently on x64, will do the other architectures in\ndifferent changes.\n\nChange-Id: I15fbbadb450dd21787809759a8b14b21b1e42624\n"
    },
    {
      "commit": "4bf9012582f5f9cd16fe68fa8585848016caecc6",
      "tree": "5872f2740a84de72e8f90b80382251684686ca73",
      "parents": [
        "359f77c44dafef7ebed027180422ee75eef1467c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 19:07:04 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 19:07:04 2015 +0100"
      },
      "message": "ART: Do not include endian.h on Mac.\n\nChange-Id: I1bb28bd49bd1847c45e93bf2b06c643be6e09926\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": "d4cf1e4fe0624b99df22ed5556dc1d042b32a7e0",
      "tree": "d4ffdff0fcea7e28c5b4b4f76199e55d44305cdd",
      "parents": [
        "d6ace609ef3c5d37ea4d980a2aaa3a9c31943d3b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 07 12:03:29 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 07 12:03:29 2015 +0100"
      },
      "message": "Quick: Work around large frame sizes for x86_64.\n\nBug: 24729377\nChange-Id: Id608aabad60fb7f1a1450a02444bddfb0eb008a6\n"
    },
    {
      "commit": "edbff6f51abc2bfb43be78b9a1beaa382c498a1f",
      "tree": "7b455a2d3480b9fad72596e8408d4b7b8703c388",
      "parents": [
        "acd7088735d8299c90c1e480be146c71adcd8d08",
        "a661d7d12ce5736cab1fe1d3b3d559e37b902b5b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 16:03:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 02 16:03:24 2015 +0000"
      },
      "message": "Merge \"ART: Use an iterative way in DoDFSPreOrderSSARename()\""
    },
    {
      "commit": "e460d1df1f789c7c8bb97024a8efbd713ac175e9",
      "tree": "3511036fb18828dd0ee140d33a8bcd0535ebeab6",
      "parents": [
        "25217af2a7cae96b32ba566aaf697288f3374c99"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 29 04:52:17 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 02:25:18 2015 +0100"
      },
      "message": "Revert \"Revert \"Support unresolved fields in optimizing\"\n\nThe CL also changes the calling convetion for 64bit static field set\nto use kArg2 instead of kArg1. This allows optimizing to keep\nthe asumptions:\n- arm pairs are always of form (even_reg, odd_reg)\n- ecx_edx is not used as a register on x86.\n\nThis reverts commit e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1.\n\nChange-Id: I93159917565824084abc96775f31be1a4249f2f3\n"
    },
    {
      "commit": "a661d7d12ce5736cab1fe1d3b3d559e37b902b5b",
      "tree": "4e5a12e3dd31c4fdcbb5c0944a6e7f7e2495c5d1",
      "parents": [
        "f6860a5f12a8fe974b8f25e67a19a71bf0378d62"
      ],
      "author": {
        "name": "Chao-ying Fu",
        "email": "chao-ying.fu@intel.com",
        "time": "Wed Aug 12 17:52:35 2015 -0700"
      },
      "committer": {
        "name": "Chao-ying Fu",
        "email": "chao-ying.fu@intel.com",
        "time": "Tue Sep 29 10:04:42 2015 -0700"
      },
      "message": "ART: Use an iterative way in DoDFSPreOrderSSARename()\n\nThis patch changes the recursion to an iterative implementation.\nIt tries to solve a stack overflow issue when installing\nFacebook on some devices.  The recursion reaches more than 2600\nlevels when compiling\n\"java.util.Map com.facebook.graphql.model.GraphQLNodeDeserializer.a()\".\n\nChange-Id: Ibe74359526e10fe6afa833e3bb46b6138aaf5435\nSigned-off-by: Chao-ying Fu \u003cchao-ying.fu@intel.com\u003e\n"
    },
    {
      "commit": "97a87ec836ff8f480af1166d05b92dad1c5daadd",
      "tree": "82a4bba2f2b4d6e430c018caf15594f7a6c2d5e9",
      "parents": [
        "6a9984e62c08bcd78c8e49dd40b1f0f9d53513b7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 11:25:48 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 11:27:54 2015 +0100"
      },
      "message": "Quick: Avoid shifting -1 left (undefined behavior).\n\nC++11 clarifies that shifting left a negative value is\nundefined behavior. Fix legacy code that shifted -1 left.\n\nBug: 24489455\nChange-Id: Iaf4f26c7cde175f039b6a2cad12af6f0b1624fba\n"
    },
    {
      "commit": "6918bf13eb855b3aa8ccdddda2d27ae8c60cec56",
      "tree": "907f504a4d004ac1e44b73c3984e365e889407e8",
      "parents": [
        "446ca43e8f876dcc1ee90fcf432d6392c44a3f60"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sun Sep 27 19:19:06 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sun Sep 27 19:19:23 2015 -0700"
      },
      "message": "Revert \"Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\"\n\nThis reverts commit 7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4.\n\nChange-Id: If806ce5c6c5e96fdb2c3761dee096f74e7e5b001\n"
    },
    {
      "commit": "7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4",
      "tree": "eb54c557467f1401c4bd5729fa2b9e8ae91e8ffd",
      "parents": [
        "b72123440d8541362ebdb131436f9dbdda5fd329"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:40 2015 +0000"
      },
      "message": "Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\n\nTest fails.\n\nThis reverts commit b72123440d8541362ebdb131436f9dbdda5fd329.\n\nChange-Id: Ic9ed92f8c826d8465eb36b746dc44af05caf041c\n"
    },
    {
      "commit": "b72123440d8541362ebdb131436f9dbdda5fd329",
      "tree": "41e3d21496a270edc06879f084a504a39af9469b",
      "parents": [
        "9f3b8d38de615efef6d2536817f19ad2ccaa313a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 14:22:08 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 15:53:00 2015 -0700"
      },
      "message": "lambda: Experimental support for capture-variable and liberate-variable\n\nSupports capturing/liberating any primitive variables.\nNo support for capturing objects/lambdas yet since they would both\nneed GC changes to track roots through closures.\n\nChange-Id: Ibfb68bfe4c579dbf93823aac4c0e6ac8f6360c5d\n"
    },
    {
      "commit": "87000a948524cba7538ccc5438f6a9ecbd4e347e",
      "tree": "3cf06ec6a939c31540ed5d7028aa0c0838329cc2",
      "parents": [
        "b505997b2176bd29a108cb6c33d06d4ef29ba001"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Aug 24 15:34:44 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 15 15:02:18 2015 +0100"
      },
      "message": "Add option to append to the cfg dump.\n\nThis makes life easier when verifying tests with unresolved classes\n(which call dex2oat at rutime).\n\nChange-Id: I7985b2b7c0f343462e03a26b8395297c810b1d95\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": "2d06e08d25bbf8eff1de945736a60810009e59ad",
      "tree": "27c10f4fc30a85947ac0e3189b115035107a7ff0",
      "parents": [
        "e2cb7f297dfeb1a6e19c3b8d45b742427054fa56",
        "501fd635a557645ab05f893c56e1f358e21bab82"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 11 17:50:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 11 17:50:01 2015 +0000"
      },
      "message": "Merge \"ART: Fix Quick-style LR vs PC core spill mask bug\""
    },
    {
      "commit": "9ee23f4273efed8d6378f6ad8e63c65e30a17139",
      "tree": "3b1bfb8a6260a57ccb2f025fcdc457464714701e",
      "parents": [
        "62ba40149be3d1c65e4db1f455822a585149d32f"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Thu Jul 23 10:44:35 2015 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Sep 11 09:51:58 2015 +0100"
      },
      "message": "ARM/ARM64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight\n\nChange-Id: I2a07c279756ee804fb7c129416bdc4a3962e93ed\n"
    },
    {
      "commit": "501fd635a557645ab05f893c56e1f358e21bab82",
      "tree": "828ad27a68033d78fb858dcf031c36a627659165",
      "parents": [
        "010c7fd437932e0132fc4b44de6274480573ff30"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 10 16:11:06 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 10 17:01:22 2015 -0700"
      },
      "message": "ART: Fix Quick-style LR vs PC core spill mask bug\n\nIt\u0027s always been a bug that Quick marked PC as spilled instead of\nLR. The root cause was a mutation of the spill mask at frame exit,\nwhen LR is being restored into PC to return. A local should have\nbeen used to keep the actual spill mask safe and sound.\n\nThis has only worked because nobody ever uses LR, even after long\njumps for exception dispatch. However, single-frame deoptimization\nneeds this to work, and I\u0027d rather fix this than being forced to\nhave machine-specific fixups.\n\nAlso fix in optimizing, and bump the oat version.\n\nChange-Id: Ib032a533408bf464097fc96dcbfc5b6a68bf59a1\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": "957fb8930766ae422568e7b1b816159a9e9bc18c",
      "tree": "849a611f978656f1c85182402e1ef2c8ca50c5e6",
      "parents": [
        "68ffda887e35f35e978f2f607b7a91e44a5e1969",
        "05792b98980741111b4d0a24d68cff2a8e070a3a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 04 10:34:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 04 10:34:04 2015 +0000"
      },
      "message": "Merge \"ART: Move DexCache arrays to native.\""
    },
    {
      "commit": "897ce64153e4758663e464fb5fb339f9a7b496c8",
      "tree": "5685e4df884ac806e2b5cdfeabed4420015548c4",
      "parents": [
        "0526f5af91cc6b986e0b439577de0b93f9e5354c",
        "736b560f2d2c89b63dc895888c671b5519afa4c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 22:11:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 03 22:11:02 2015 +0000"
      },
      "message": "Merge \"Reduce how often we call FindDexCache\""
    },
    {
      "commit": "736b560f2d2c89b63dc895888c671b5519afa4c8",
      "tree": "d5aee7ac36f458a5f6e6d75fceb19f8963a71db5",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 14:54:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 13:27:19 2015 -0700"
      },
      "message": "Reduce how often we call FindDexCache\n\nBefore host boot.oat -j4 optimizing compile:\nreal  1m17.792s\nuser  3m26.140s\nsys 0m8.340s\n\nAfter:\nreal  1m12.324s\nuser  3m22.718s\nsys 0m8.320s\n\nChange-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\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": "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": "0760a81257fa427646c309500d603194009265ef",
      "tree": "9754389d2d488f41459c76d4568dd40dd41955ae",
      "parents": [
        "7d6c95a7e5d431fd1b9ad49823535073325c699a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 26 17:12:51 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 26 19:08:03 2015 -0700"
      },
      "message": "ART: Propagate verifier failure types to the compilers\n\nAdd a bit-set encoding of seen failure types to the verifier and\nmake it available. Store this in VerifiedMethod, so that compilers\ncan inspect it and make choices based on failures. Rewrite the\ncurrent punting of runtime-throw errors to be at the compiler-driver\nlevel.\n\nBug: 23502994\nChange-Id: I1cfc7cbdf2aec1f14ba18f0169e432ba4ae16883\n"
    },
    {
      "commit": "ff73498a5539d87424a964265e43765e788aec44",
      "tree": "3f8a525ef91d2f12e4b2a71c04fc8147a12c12bd",
      "parents": [
        "9dc601eb65da0cd5f53172699dacd6e5dd38ab44"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Mon Aug 24 12:58:55 2015 +0000"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Aug 25 17:17:22 2015 +0200"
      },
      "message": "Revert \"Revert \"[MIPS] Use hard float calling convention for managed code\"\"\n\nThis reverts commit 7fee84c087e0f903e7d43bef180df047db1c8051.\n\nFixed issue with temporary registers on Mips32r6.\n\nChange-Id: I93018927e6a6036cff2d55e6cda66d3212a4316b\n"
    },
    {
      "commit": "7fee84c087e0f903e7d43bef180df047db1c8051",
      "tree": "c35065aeef23f857563eacd82e55ae47d8ceb67c",
      "parents": [
        "a29449dcf57c57fe0876f51367985477317cc557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 21 18:39:26 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 21 18:39:26 2015 +0000"
      },
      "message": "Revert \"[MIPS] Use hard float calling convention for managed code\"\n\nMipsMir2Lir::LockCallTemps() is broken for secondary architecture on aosp_mips64-eng.\n\nThis reverts commit a29449dcf57c57fe0876f51367985477317cc557.\n\nChange-Id: I480ea7569d73aea7894fc0a6dd804b1135286a37\n"
    },
    {
      "commit": "a29449dcf57c57fe0876f51367985477317cc557",
      "tree": "3b077e6f286bfdb48f211e0d0672ff301c5b7006",
      "parents": [
        "28de0f652e32e112edab0e5e7dc779943ae488d5"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Jul 22 11:08:57 2015 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Fri Aug 21 14:40:30 2015 +0200"
      },
      "message": "[MIPS] Use hard float calling convention for managed code\n\nNote that this isn\u0027t o32 ABI. Same set of registers is used for\narguments ($a0-$a3 and $f12-$f15), but we don\u0027t skip registers\nand fp arguments are never passed via core registers.\n\nChange-Id: Ifb883ff6e15758b539137898b49ac2f8ee075f49\n"
    },
    {
      "commit": "581550137ee3a068a14224870e71aeee924a0646",
      "tree": "f62dd0d07c66a8ce4d7d994ee0e9c27bd8014bb1",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:49:41 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:54:36 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\n\nFixed kCallArtMethod to use correct callee location for\nkRecursive. This combination is used when compiling with\ndebuggable flag set.\n\nThis reverts commit b2c431e80e92eb6437788cc544cee6c88c3156df.\n\nChange-Id: Idee0f2a794199ebdf24892c60f8a5dcf057db01c\n"
    },
    {
      "commit": "d9c4d2e9a9bc01fd82a895091126406081fafb1f",
      "tree": "094657600e206c365e365634fab6d4758a3073f4",
      "parents": [
        "464581adaf895d14f73db3d768729f0c9c6f5366",
        "b2c431e80e92eb6437788cc544cee6c88c3156df"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:46:09 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 12:46:09 2015 +0000"
      },
      "message": "Merge \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\""
    },
    {
      "commit": "b2c431e80e92eb6437788cc544cee6c88c3156df",
      "tree": "6c0ac5f843845e4b09829eb0fd9f1b3013cf4494",
      "parents": [
        "9b688a095afbae21112df5d495487ac5231b12d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "message": "Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\n\nReverting due to failing ndebug tests.\n\nThis reverts commit 9b688a095afbae21112df5d495487ac5231b12d0.\n\nChange-Id: Ie4f69da6609df3b7c8443412b6cf7f5c43c2c5d9\n"
    },
    {
      "commit": "464581adaf895d14f73db3d768729f0c9c6f5366",
      "tree": "0a839dc0e7add5f1f6f473baa261fe3296a47105",
      "parents": [
        "5a4f0032d797cef0bd110ed03b4342862cd27fc8",
        "9b688a095afbae21112df5d495487ac5231b12d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 11:27:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 11:27:57 2015 +0000"
      },
      "message": "Merge \"Optimizing: Better invoke-static/-direct dispatch.\""
    },
    {
      "commit": "9b688a095afbae21112df5d495487ac5231b12d0",
      "tree": "e5e881d4d124803e66f1e90c1e0a0e4c90d22e13",
      "parents": [
        "009c34cba875885d9540696f33255a9b355d6e15"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 06 14:12:42 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:23:37 2015 +0100"
      },
      "message": "Optimizing: Better invoke-static/-direct dispatch.\n\nAdd framework for different types of loading ArtMethod*\nand code pointer retrieval. Implement invoke-static and\ninvoke-direct calls the same way as Quick. Document the\ndispatch kinds in HInvokeStaticOrDirect\u0027s new enumerations\nMethodLoadKind and CodePtrLocation.\n\nPC-relative loads from dex cache arrays are used only for\nx86-64 and arm64. The implementation for other architectures\nwill be done in separate CLs.\n\nChange-Id: I468ca4d422dbd14748e1ba6b45289f0d31734d94\n"
    },
    {
      "commit": "f71ad9ede9ae322a897e8fe407208dc35c5dee65",
      "tree": "5dee2185faeebe5f4107fec6835f1013b4e7548d",
      "parents": [
        "add6cfac914f48136e71a05f72123154d7d2d44b",
        "50fa993d67f8a20322c27c1a77e7efcf826531fc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 21:43:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 18 21:43:44 2015 +0000"
      },
      "message": "Merge \"Svelter libart-compiler\""
    },
    {
      "commit": "50fa993d67f8a20322c27c1a77e7efcf826531fc",
      "tree": "76d6b73a9d8a8ef2709aef6c01778af6a0d4ada1",
      "parents": [
        "4500fcbe682d666a24c2e8f6e0cb90cfb35d3fa3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 10 15:30:07 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 18 11:21:05 2015 -0700"
      },
      "message": "Svelter libart-compiler\n\nAdded new environment variable ART_{TARGET,HOST}_CODEGEN_ARCHS which\nmay be set to \u0027all\u0027, \u0027svelte\u0027 or a space separated list of architectures.\n\nWhen compiled with ART_{TARGET,HOST}_CODEGEN_ARCHS\u003d\u0027all\u0027 (the default\nvalue) dex2oat will be able to generate output for all supported\narchitectures.\n\nWhen compiled with ART_TARGET_CODEGEN_ARCHS\u003d\u0027svelte\u0027\nonly the architectures of the TARGET will be included. When\nART_HOST_CODEGEN_ARCHS\u003d\u0027svelte\u0027 all architectures the target includes\nand the host architectures will be included on the host dex2oat.\n\nIf a list of architectures is given only those will be included.\n\nChange-Id: I87f4ad0131ab1b37544d8799e947ce4733b6daec\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": "7c2af0d873b7033adccf8fa7adf259166c53d369",
      "tree": "ec1a3cffa19b1131abcdd3e64541a14e9bcc4b86",
      "parents": [
        "1d4219ee25dfb228cc72f353d97be69584fc0722",
        "3887c468d731420e929e6ad3acf190d5431e94fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 11:00:54 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 13 11:00:54 2015 +0000"
      },
      "message": "Merge \"Remove unnecessary `explicit` qualifiers on constructors.\""
    },
    {
      "commit": "7da072feb160079734331e994ea52760cb2a3243",
      "tree": "9616f6983d1d9e0ba4447bdbdc2cb7805c737240",
      "parents": [
        "a83cf577d770f389f941b7798c8ea19d55a2e037"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 12 20:30:17 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 12 22:02:02 2015 -0700"
      },
      "message": "Structure for String.Equals intrinsic\n\nAdded structure for implementing String.Equals intrinsics. There is no\nfunctional change at this point- the intrinsic is marked as unimplemented\nfor all instruction sets and compilers.\n\nBug: 21481923\nChange-Id: Ic2a1e22a113ff6091581126f12e926478c011340\n"
    },
    {
      "commit": "3887c468d731420e929e6ad3acf190d5431e94fc",
      "tree": "67dacb849e722e33e118b97714a48e467c06cbd5",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "message": "Remove unnecessary `explicit` qualifiers on constructors.\n\nChange-Id: Id12e392ad50f66a6e2251a68662b7959315dc567\n"
    },
    {
      "commit": "548a3ce2625bc1da12034411036e5a94da183696",
      "tree": "2dcaf8a25f77494a427549e6eae608c7dd649bce",
      "parents": [
        "4500fcbe682d666a24c2e8f6e0cb90cfb35d3fa3",
        "fc8156a3df88e259c892d50bf23f7c4f11531844"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 11 22:34:21 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 11 22:34:21 2015 +0000"
      },
      "message": "Merge \"[MIPS] Avoid using odd numbered fp registers\""
    },
    {
      "commit": "2f2f17399f6bdfc5ec94a875152c31ef79620520",
      "tree": "baee66b77018f41f22e0ca8942de9cba40681d60",
      "parents": [
        "f24576a7233ec708d49badb239cd7336c2b0f07e"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Aug 10 12:59:02 2015 +0600"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 11 14:14:57 2015 +0100"
      },
      "message": "ART: Fix Quick\u0027s DCE+GVN\n\nDCE_GVN does not take into account the following case:\n  mov a, b\n  ...\n  mov c, b\nwhen optimization tries to replace a with c it must ensure that\nfor all uses of a there is no new definition of c before use.\nOtherwise that use will incorrectly substituted with new c instead\nof original b.\n\nBug: 23102860\nChange-Id: I48ee0bd4386419b0f9c814c21b3537a392518cd1\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "fc8156a3df88e259c892d50bf23f7c4f11531844",
      "tree": "8ba44158665d3aefae342084d32fa2a0252e3d41",
      "parents": [
        "6df1d46a5d0d4d8f90ee94921657f5bd1420301e"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Jul 28 14:26:12 2015 +0200"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sat Aug 08 19:53:04 2015 +0000"
      },
      "message": "[MIPS] Avoid using odd numbered fp registers\n\nDon\u0027t use odd numbered fp registers for single precision data on\nMIPS32r6 (64-bit FPU).\n\nBug: 23050326\nChange-Id: I35cc19df091149773411e2336b01c170929376bc\n"
    },
    {
      "commit": "067f1ed7816cf4eb5d6258ca31b387ddb2073ab7",
      "tree": "2f1cff344eea6d7792e375f43578bf73095e02d4",
      "parents": [
        "4b2e98fc8c257a27a95fecbc859fcc617e2fa827"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 08:29:13 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 16:40:25 2015 -0700"
      },
      "message": "ART: Remove TODO in BitVector\n\nRefactor the BitVector constructor: split it up to remove the\npossibility to provide contradicting parameters, and add a custom\ncopying constructor.\n\nChange-Id: Ie943f279baa007db578aea0f2f33fa93311612ee\n"
    },
    {
      "commit": "5eb0d38dabda4d17a315c557f07f457308d28fa7",
      "tree": "16c28cf7d8c1f27ae1daf813b8cfbc29aa0ff193",
      "parents": [
        "46e0f460aa233a4a0ac161bfafde164357fe2b26"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 23 01:19:26 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 05 11:32:52 2015 -0700"
      },
      "message": "ART: Wire up DexToDexCompiler without extern\n\nThe extern declaration actually had the wrong signature, a parameter\nwas missing, and we never noticed.\n\nRemove the function field and extern. Add a header for the compiler.\nUse the header file.\n\nChange-Id: Ia4d4dd86211da6045709a45c7bf8430471d1b62b\n"
    },
    {
      "commit": "611d3395e9efc0ab8dbfa4a197fa022fbd8c7204",
      "tree": "9a0a3b6750caae13b963b244719e03b8cfb49c44",
      "parents": [
        "0c9c5bbdd6976c21602b92d9b455e6fe5d769fb0"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Jul 10 11:42:06 2015 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Tue Aug 04 09:02:56 2015 +0100"
      },
      "message": "ARM/ARM64: Implement numberOfLeadingZeros intrinsic.\n\nChange-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b\n"
    },
    {
      "commit": "aabdf8ad2e8d3de953dff5c7591e7b3df4d4f60b",
      "tree": "f6edd510ed29e28343d40930953ac60962f18175",
      "parents": [
        "8ab7bd6c8b10ad58758c33a1dc9326212bd200e9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 03 14:54:45 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 03 14:54:45 2015 +0000"
      },
      "message": "Revert \"Optimizing String.Equals as an intrinsic (x86)\"\n\nReverted as it breaks the compilation of boot.{oat,art} on x86 (although this CL may not be the culprit, as the issue seems to come from Optimizing\u0027s register allocator).\n\nThis reverts commit 8ab7bd6c8b10ad58758c33a1dc9326212bd200e9.\n\nChange-Id: If7c8b6258d1e690f4d2a06bcc82c92563ac6cdef\n"
    },
    {
      "commit": "8ab7bd6c8b10ad58758c33a1dc9326212bd200e9",
      "tree": "14b01d701a3bce6fd86d8e968f29cb51ad56caf2",
      "parents": [
        "8433bb8a3120d064de97a692d98341d9bc29a985"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Mon Jul 27 10:25:10 2015 -0700"
      },
      "committer": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Fri Jul 31 15:51:35 2015 -0700"
      },
      "message": "Optimizing String.Equals as an intrinsic (x86)\n\nThe third implementation of String.Equals.  I added an intrinsic\nin x86 which is similar to the original java implementation of\nString.equals: an instanceof check, null check, length check, and\nreference equality check followed by a loop comparing strings\ncharacter by character.\n\nInteresting Benchmarking Values:\n\nOptimizing Compiler on Nexus Player\n\tIntrinsic 15-30 Character Strings: 177 ns\n\tOriginal 15-30 Character Strings: 275 ns\n\tIntrinsic Null Argument: 59 ns\n\tOriginal Null Argument: 137 ns\n\tIntrinsic 100-1000 Character Strings: 1812 ns\n\tOriginal 100-1000 Character Strings: 6334 ns\n\nBug: 21481923\nChange-Id: Ia386e19b9dbfe0dac688b20ec93d8f90f67af47e\n"
    },
    {
      "commit": "c60e1b755c5632dfeb04c333489ede52ee5c945f",
      "tree": "9582a0ffc99e4ad11dcd5d95dd97b09bc6acc5bf",
      "parents": [
        "7b926cdacc2b67241bc9cb5f2d4b04b13ca79d0e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 30 08:57:50 2015 -0700"
      },
      "message": "ART: Use __ANDROID__ instead of HAVE_ANDROID_OS\n\nUse the proper define.\n\nChange-Id: I71e291ac25f5d5f0187ac9b6ef2d6872f19e6085\n"
    },
    {
      "commit": "0941b9d48a9a8c6d80a1af7a0d0fc9f80fe2b9a1",
      "tree": "418f5cea093113235c96a624d584c39b5c95cec1",
      "parents": [
        "ec74835a7e4f2660250a2f3f9508cbbe5269e49a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 18:59:13 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 29 18:59:13 2015 +0100"
      },
      "message": "Fix gtests.\n\nChange-Id: I19fd46ed96b4f620209533c96faa18d1077b004b\n"
    },
    {
      "commit": "f7efc9ef90c38212f8c4fbece99080f784a53181",
      "tree": "69543b9e11746fe1e390651a972c1045864ad549",
      "parents": [
        "bea4eb4b29aa1030aa1919dfedaa95aea2599b7a",
        "d29e8487ff1774b6eb5f0e18d854415c1ee8f6b0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 23 16:53:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 23 16:53:02 2015 +0000"
      },
      "message": "Merge \"ART: Fix Quick/Optimizing suspend check assumption mismatch.\""
    },
    {
      "commit": "d29e8487ff1774b6eb5f0e18d854415c1ee8f6b0",
      "tree": "827ee7fedc275eb6801fcf200a36c06159e9f829",
      "parents": [
        "e6e38ce021ef5e0d326d76172307c000e0e6fab3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 22 17:50:37 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 23 17:07:47 2015 +0100"
      },
      "message": "ART: Fix Quick/Optimizing suspend check assumption mismatch.\n\nQuick\u0027s SuspendCheckElimination (SCE) expects that every\nmethod contains a suspend check and it eliminates suspend\nchecks in loops containing an invoke. Optimizing eliminates\nthe suspend check from leaf methods, so the combination of\na Quick-compiled loop calling an Optimizing-compiled leaf\nmethod can lead to missing suspend checks and potentially\nleading to ANRs.\n\nEnable Quick\u0027s kLeafOptimization flag to remove suspend\nchecks from leaf methods and disable Quick\u0027s SCE. This\naligns the suspend check placement for the two backends\nand avoids the broken combination.\n\nCurrently, all methods containing a try-catch are compiled\nwith Quick, so it\u0027s relatively easy to create a regression\ntest. However, this test will not be valid when Optimizing\nstarts supporting try-catch.\n\nBug: 22657404\nChange-Id: I3bc40bf3f5c1e7d18704d1547b139e939950b770\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "cced6ad152cf8ec13f38f2210c1b8445919232d3",
      "tree": "ed38799e9dcddb859158e013d1c5d840903789f6",
      "parents": [
        "530f31858cfe019e48b5f0b2ecea2ad528e6f6c6",
        "14d90579f013b374638b599361970557ed4b3f09"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 13:55:28 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 16 13:55:29 2015 +0000"
      },
      "message": "Merge \"Use (D)CHECK_ALIGNED more.\""
    },
    {
      "commit": "8f861e399c96abd8f1bc7c8c585d53b0904f371a",
      "tree": "2d90dc52596975669a45fc8271edea2ce3bd8b57",
      "parents": [
        "fec9d09bf7d2d54048b1df8e3c24a210e58dbc84",
        "b016c6dd3c30b04104a0a43dc294ce93e5f63874"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 16 12:39:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 16 12:39:05 2015 +0000"
      },
      "message": "Merge \"ART: DCE should know that array-length can throw NPE\""
    },
    {
      "commit": "b016c6dd3c30b04104a0a43dc294ce93e5f63874",
      "tree": "bee1f9c28f402033882906d3210b0bcd5af3a25f",
      "parents": [
        "76ca82063ac62488fefb0b12d40026f4ebb2e198"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Jul 14 19:04:48 2015 +0600"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 16 13:36:36 2015 +0100"
      },
      "message": "ART: DCE should know that array-length can throw NPE\n\narray-length can throw NPE so it should be taking into account.\n\nBug: 22521944\nChange-Id: I6f961560ccbbf81f57f1c597828f2ee18e2c3054\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "14d90579f013b374638b599361970557ed4b3f09",
      "tree": "fe8f9f7b527e73c20078557eefd74615c2cfc7f8",
      "parents": [
        "5c03f3698f5e2e0d762e2e15ec00310b6cdab4fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "message": "Use (D)CHECK_ALIGNED more.\n\nChange-Id: I9d740f6a88d01e028d4ddc3e4e62b0a73ea050af\n"
    },
    {
      "commit": "c04c800e7bda94abfadc8c2d30f58c50b261b612",
      "tree": "c4096b86bde3b8be56be21bf1a72b7a04f227430",
      "parents": [
        "f68c8545382925062da2b87169ca2b5314f0b431"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 14 11:37:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 15 10:44:34 2015 +0100"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Make dex2dex return a CompiledMethod after quickening.\"\"\"\"\n\nThis reverts commit ed6195a514e3253576af27ea9ba13038509d29ac.\n\nChange-Id: Icb58854301e8982147cdebe3edf2e0d9e0a63a56\n"
    },
    {
      "commit": "ed6195a514e3253576af27ea9ba13038509d29ac",
      "tree": "79a2bbbab8cb36523056539d374d5d79e7e5ee4a",
      "parents": [
        "f075879649686e59b7a9065c5a061dbfdcdfbecc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 17:02:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 17:02:30 2015 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Make dex2dex return a CompiledMethod after quickening.\"\"\"\n\nBreaks again in some configurations I don\u0027t fully understand yet.\n\nThis reverts commit f075879649686e59b7a9065c5a061dbfdcdfbecc.\n\nChange-Id: I0ac5533825e40b06462ee69b2740e4a96fb5c582\n"
    },
    {
      "commit": "f075879649686e59b7a9065c5a061dbfdcdfbecc",
      "tree": "4ecc8cec0a8c96e1115195041530c7fc5ca6a7ec",
      "parents": [
        "f185fb365e9faf58428762bace96d7729ea5bdbc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 11:56:00 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 14:53:03 2015 +0100"
      },
      "message": "Revert \"Revert \"Make dex2dex return a CompiledMethod after quickening.\"\"\n\nThis reverts commit 327c5ed30a1f016ef3e1bb26ea7b4abd34eb63b9.\n\nChange-Id: I0dc5d92e5d1ef98830fbd3c40ec59a93f9e0422d\n"
    },
    {
      "commit": "327c5ed30a1f016ef3e1bb26ea7b4abd34eb63b9",
      "tree": "55d58d66f154edade95e909a6badf3bb43f75be9",
      "parents": [
        "6920703c8eae0d90528ea09945e742582b6f8198"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 11:53:56 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 11:53:56 2015 +0000"
      },
      "message": "Revert \"Make dex2dex return a CompiledMethod after quickening.\"\n\nBuild failures on arm/arm64.\n\nThis reverts commit 6920703c8eae0d90528ea09945e742582b6f8198.\n\nChange-Id: I0dd5426610150937dac6e4d9dd9aa759bdf7fca4\n"
    },
    {
      "commit": "6920703c8eae0d90528ea09945e742582b6f8198",
      "tree": "31ed78caffdabf67cadaa07b1f5418f191a1d10e",
      "parents": [
        "7b3d3bc1a4ea7546e4743e90e695f4fc7ecadf3a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 09 18:15:19 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 10 18:05:19 2015 +0100"
      },
      "message": "Make dex2dex return a CompiledMethod after quickening.\n\nThis is the starting piece of pushing more verification and\ndex2dex data into an .oat file, to lower the dependency on verification\nresults at runtime.\n\nChange-Id: I8e1b49a0207714bc5b84d1f606806718c5c7fb69\n"
    },
    {
      "commit": "c7d5ae363bc43ebba0f21c6ee4a2164dfbb209a9",
      "tree": "d10797d5af9685a8d8f5e998e0273df10a5921d6",
      "parents": [
        "7d5e4d056d6b8f54b2a7b054136e53ecbf97d314",
        "575422fa5be7389bdaff5e2d25dd87b1d2d4de85"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 08 15:50:00 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 08 15:50:01 2015 +0000"
      },
      "message": "Merge \"ART: Release inputs in Long.reverse intrinsic in x86\""
    },
    {
      "commit": "575422fa5be7389bdaff5e2d25dd87b1d2d4de85",
      "tree": "227c8b864224b2abdb612aa126616d6b453d5b10",
      "parents": [
        "ee35ff809616324cbada38cbc0610eb09da09b35"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 07 13:25:58 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 08 15:49:33 2015 +0000"
      },
      "message": "ART: Release inputs in Long.reverse intrinsic in x86\n\nIn the worst case we are using two temps each for input and output.\nThen we do not have a temp left over for the swap operations. The\ninput is dead, however, after the first swap. So try to release it\n(a no-op if it isn\u0027t actually a temp).\n\nBug: 22324327\nChange-Id: I1fc50159afdad14160e34abeaf4670958171d6b2\n"
    },
    {
      "commit": "185a5586c8b796e770e9b4b7ac2befa8ccdaca7e",
      "tree": "6f3c7dbc5a15fb025ab99665366bf6e53f19d644",
      "parents": [
        "e7ea17b726ab415a0dc98c0a3901497bbcf3a4c3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 06 14:00:39 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 07 09:16:16 2015 -0700"
      },
      "message": "ART: Fix opsize in LoadArgDirect\n\nIf the destination register is a reference, use kReference for the\nop size.\n\nBug: 22244733\nChange-Id: Idf52f2ee4c65b5dc41cb66257d95281dc6f32255\n"
    },
    {
      "commit": "22bb5a2ebc1e2724179faf4660b2735dcb185f21",
      "tree": "74b5bec56238a9f4ee3ee9e52d2fd6da4ee2a806",
      "parents": [
        "b447598f6900f05f0b1940a0731ee374c57c3100"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Thu Jul 02 16:42:08 2015 -0700"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 03 13:27:29 2015 +0100"
      },
      "message": "Add implicit null pointer and stack overflow checks for Mips.\n\nBug: 21555893\nChange-Id: I2a995be128a5603d08753c14956dd8c8240ac63c\n"
    },
    {
      "commit": "4d02711ea578dbb789abb30cbaf12f9926e13d81",
      "tree": "29c802afff6e73c06021c44e6b2ec9d8340c75e9",
      "parents": [
        "312f1bfcfd8f655e635c941dda147377d8bff814"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 01 15:41:14 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 01 16:31:41 2015 +0100"
      },
      "message": "Implement heap poisoning in ART\u0027s Optimizing compiler.\n\n- Instrument ARM, ARM64, x86 and x86-64 code generators.\n- Note: To turn heap poisoning on in Optimizing, set the\n  environment variable `ART_HEAP_POISONING\u0027 to \"true\"\n  before compiling ART.\n\nBug: 12687968\nChange-Id: Ib3120b38cf805a8a50207a314b9ccc90c8d93740\n"
    },
    {
      "commit": "2b252dc15995a708aead33aab6d307205d860a88",
      "tree": "6bc853b650f428b636f25594a6917d42cba1f86a",
      "parents": [
        "396021047892e5976051e9cb86ee38943a9102d3",
        "5e6926cf67b50bcab56dc244e09b6f8f608d4ca2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 01 05:17:24 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 01 05:17:24 2015 +0000"
      },
      "message": "Merge \"Quick: Fix a DCHECK to take type conflicts into account.\""
    },
    {
      "commit": "5e6926cf67b50bcab56dc244e09b6f8f608d4ca2",
      "tree": "4457f4f7e0703dea95167e3ddf25c23c5f7109a4",
      "parents": [
        "9a83f59365443eead29a318fe28916df9412a720"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Sat Jun 27 13:44:06 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Sat Jun 27 13:56:45 2015 +0100"
      },
      "message": "Quick: Fix a DCHECK to take type conflicts into account.\n\nBug: 21865466\nChange-Id: I010c7058b5a58bea1ec61af5bd6a12c2eb8de1b4\n"
    },
    {
      "commit": "f7e7327d7a873d21aaae01471f46a4d64d65433b",
      "tree": "8a83b7a15db89cec69c833a1e6d3e209e765051c",
      "parents": [
        "9a83f59365443eead29a318fe28916df9412a720"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Sat Jun 27 13:32:11 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Sat Jun 27 13:34:27 2015 +0100"
      },
      "message": "Quick: Disable GVN, DCE and LVN for type conflicts.\n\nBug: 22136903\nChange-Id: I657d4b5e623696e1264c2c6c9ad4e7fd466d759c\n"
    },
    {
      "commit": "c83329952b4a313e747c8835a73699e2cae5a6e2",
      "tree": "47492c44ee5ecb09c628bb0c7850d56db5ef62b2",
      "parents": [
        "f3274f8514636e7f52171a2e6b018017b34784e5"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jun 25 15:53:45 2015 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jun 25 16:05:35 2015 -0700"
      },
      "message": "ART: Fix kEverything compiler filter\n\nPreviously the kEverything filter failed to compile class\ninitializers. Now it will.\n\nBug: 19576257\nChange-Id: I189d2b5b379aee112c4e95f8d3e6c32abab6ed41\n"
    },
    {
      "commit": "4824c27988c8eeb302791624bb3ce1d557b0db6c",
      "tree": "c14f74d9cc4c93cab04bee5c723e420a87db9cb3",
      "parents": [
        "22c4edd865bfdea29e80a789cef70e8e51d2a3a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 24 15:53:03 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 24 17:01:08 2015 +0100"
      },
      "message": "Use a flag from the verifier to know if we should compile.\n\nOnly used for the lack of bottom type in the aget-object case\nfor now. Could be used for more.\n\nbug:21865466\n\nChange-Id: I64c2c84dfa1c0d259631e65e5f44b94e4139e6a7\n"
    },
    {
      "commit": "87dc1b09cee6e972fbe3ad48ba8b5ae68d37085f",
      "tree": "e266a61a68204d6f60a214267719e18b797f2ec2",
      "parents": [
        "b5061a821d96cb1af7ba24d21a4d2d59f7f16c7c",
        "41f9cc28f2c9edd3903ba6ca1c75b022445552ad"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 23 11:00:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 23 11:00:19 2015 +0000"
      },
      "message": "Merge \"ART: Compiler generated GC map should take care of temp registers.\""
    },
    {
      "commit": "ec3a4e7cdc4f268b40d923227c125429f4ee4884",
      "tree": "d9bc031c772d062c2168c4fd7e8f5d8c4a64093c",
      "parents": [
        "11dc78c8d36b4a65f4d955bc4303cc8279f1151e",
        "2ee54e249ad21c74f29a161e248bebe7d22fddf1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 21:15:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 22 21:15:02 2015 +0000"
      },
      "message": "Merge \"runtime: Partially implement box-lambda and unbox-lambda experimental opcodes\""
    },
    {
      "commit": "2ee54e249ad21c74f29a161e248bebe7d22fddf1",
      "tree": "125465dd7a6d23f83ecbf2d3454f21471868422c",
      "parents": [
        "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 10:05:11 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 14:13:30 2015 -0700"
      },
      "message": "runtime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\nThese opcodes are not yet fully specified, and *will* change before they become shippable.\nDo not write production code against experimental opcodes.\n\n--\n\nImplement partial interpreter support for new dex instructions box/unbox-lambda.\n* box-lambda will take a closure and convert it into an Object\n* unbox-lambda will take an Object and convert it to a closure\n\n(Currently does not implement object identity or variable capture).\n\nAll new opcodes are disabled by default, use runtime option -Xexperimental-lambdas to enable them.\n\nChange-Id: I3c15ccf8a26ccecd1d35808a8c1b4149220f6019\n"
    },
    {
      "commit": "f8da196097d1b33121a73abcaf443d173ceab8eb",
      "tree": "8823d13a8db63e65e06a4b35b61295efcff75f47",
      "parents": [
        "d5ff8c584b230da350f4ebfffec1d245c09bf26b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 19 13:55:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 19 15:19:56 2015 -0700"
      },
      "message": "Fix GC map generation edge case\n\nPreviously we checked the number of bits, but then rounded up to a\nbyte boundary. If ref_bitmap_bits was 65535, it would pass the check\nbut not actually fit in the 13 bits for ref_bitmap_bytes since we\nrounded up to 8192 bytes.\n\n(cherry picked from commit 1626b919005df42ccc90ebe68fc57b7c56d44029)\n\nRegression test infeasible due to smali limitations.\n\nBug: 21888453\nChange-Id: If4b769431f27ecca14fe7852d017bcde01b3e146\n"
    },
    {
      "commit": "dde9827f75d1e1e9cd4b7e6b54086aec54f29b5f",
      "tree": "06efa56d932dfdaab5ae27b020cdb7e292558dfe",
      "parents": [
        "e102f1937ca14df87594469430d2e6e0ebe0f357"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 17 16:04:26 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Jun 19 11:03:50 2015 -0700"
      },
      "message": "Fix case where block has no predecessor for StringChange.\n\nRemoves part that checks for throwing half of instruction. It\u0027s no\nlonger necessary. Also adds regression test.\n\nBug: 21902684\n\n(cherry-picked from commit 3e91a44bc9063f7f69b5415e3cf162991f73283f)\n\nChange-Id: I8d7308ff227816fb475341c2b74ed84d5695a2f5\n"
    },
    {
      "commit": "e4bb626ff09e409c9482e515716de7cd595ea466",
      "tree": "e01c42443ab5b6de7cd0f52bbb509824cf970bd3",
      "parents": [
        "87a135e8699119c9ef99b0221acf481d7d6501d4",
        "8958f7f8702327e713264d0538ab5dec586f3738"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 16:39:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 19 16:39:30 2015 +0000"
      },
      "message": "Merge \"Quick: Handle total high/low register overlap on arm/mips.\""
    },
    {
      "commit": "8958f7f8702327e713264d0538ab5dec586f3738",
      "tree": "4734d488a200ae240d368b07a6dc335044d55108",
      "parents": [
        "97d207c3beba0a4ed6402e882c5909c5ac5bde6d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 14:56:38 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 15:14:58 2015 +0100"
      },
      "message": "Quick: Handle total high/low register overlap on arm/mips.\n\nOpRegCopyWide() in arm and mips backends didn\u0027t handle the\ntotal register overlap when the registers holding the source\nand destination pairs are the same but in reverse order.\n\nBug: 21897012\nChange-Id: Ia1f0005cbf5cc1c2d30899575dea21b3efa20ae6\n"
    },
    {
      "commit": "f11c420c448baffac6a70ac0884d481ab347e257",
      "tree": "dc7c7c03810c21351d2411e5c01bc0be8299ddd6",
      "parents": [
        "d8d7b90ca57e8e3762951bb419b6f2645bb414c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 12:58:22 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 15:01:42 2015 +0100"
      },
      "message": "Quick: Fix optimizations for empty if blocks.\n\nIf a block ending with if-eqz or if-nez has the same \"taken\"\nand \"fallthrough\", we cannot assume that the value has been\nchecked against zero in one of the succesors. This affects\nthe null check elimination pass as well as GVN. Refactor all\nthose checks to a single function in BasicBlock and check\nthat the \"taken\" and \"falthrough\" are different when needed.\n\nBug: 21614284\nChange-Id: I8c6ac23e96cdaf5984786a555ebbd28110f095cb\n"
    },
    {
      "commit": "247e97746016b49183b52f4c386bedf7cd53e590",
      "tree": "758c0a7c60c2099fb6a8cf2d4ea68ffc8c9459ac",
      "parents": [
        "2b696ab55e817b583d7b3b3ffd39e48c38db6989",
        "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 19:56:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 18 19:56:58 2015 +0000"
      },
      "message": "Merge \"interpreter: Add experimental lambda opcodes for invoke/create-lambda\""
    },
    {
      "commit": "2d1a0a408fd148f7b2a2d670e6942ec3d920f875",
      "tree": "1bb97d1ae32fbf5ce91fbfc71491b6c1eca6c69e",
      "parents": [
        "3d266a96750db6969f24bcdb8025c06745e5a449"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 18 17:40:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 18 19:15:13 2015 +0100"
      },
      "message": "Quick: Don\u0027t expect move-exception in every catch block.\n\nThe dalvik bytecode doesn\u0027t require a move-exception in\na catch handler that ignores the exception.\n\nBug: 21873167\nChange-Id: I3b49218a8c7ff021141387bd929bb2ae798f8509\n"
    },
    {
      "commit": "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f",
      "tree": "63bb3bbed85b0add42c7fdc714cd611424d8af2e",
      "parents": [
        "c449e8b79aaaf156ce055524c41474cc1200ed5a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Jun 10 15:55:30 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 10:22:27 2015 -0700"
      },
      "message": "interpreter: Add experimental lambda opcodes for invoke/create-lambda\n\nThese opcodes are not yet fully specified, and *will* change before they become shippable.\nDo not write production code against experimental opcodes.\n\n--\n\nImplement partial interpreter support for new dex instructions invoke/create-lambda, and a\nnew opcode format 25x.\n\n* Does not verify, in fact verification will soft fail when we see those opcodes.\n* Compilers will punt to interpreter since they don\u0027t support new opcodes.\n* As there is no way to capture/liberate variables yet, the \"closure\" is just\n  an ArtMethod for the time being.\n\nAll new opcodes are disabled by default, use runtime option -Xexperimental-lambdas to enable them.\n\nFor example:\n  dalvikvm ... -Xexperimental-lambdas ...\n  dex2oat --runtime-arg -Xexperimental-lambdas ...\n\nChange-Id: I6c996ca32a9b54ec45ec21d7a959b84dfb8a24eb\n"
    },
    {
      "commit": "511d408909b7fe9be3c95e032cc7f426f4a01e6e",
      "tree": "c44784c64d7c28479b749e4451a732a8d6a5d412",
      "parents": [
        "b66fda7c7e2e3c24e2a146c3f9d904b1828346a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 17 22:00:09 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 18 11:53:14 2015 +0100"
      },
      "message": "Quick: Fix marking unused registers in DCE.\n\nBug: 21702651\nChange-Id: Idca17b465152e0c61704fc49761c7ba89caf5b20\n"
    },
    {
      "commit": "41f9cc28f2c9edd3903ba6ca1c75b022445552ad",
      "tree": "92e485e7bbf4e43ef4e40fd2824610074888a8ce",
      "parents": [
        "c4977a58b1feca22a83fd5239aa266c7ce16ab87"
      ],
      "author": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue Jun 16 17:57:37 2015 +0600"
      },
      "committer": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Wed Jun 17 16:28:57 2015 +0600"
      },
      "message": "ART: Compiler generated GC map should take care of temp registers.\n\nIf the compiler use a temp register as a reference it should be\nadded to generated GC map along with other SSA regs.\n\nChange-Id: I3c79896dcd72228c9cf2bbbe737642d9ffb7684d\nSigned-off-by: Pavel Vyssotski \u003cpavel.n.vyssotski@intel.com\u003e\n"
    },
    {
      "commit": "c449e8b79aaaf156ce055524c41474cc1200ed5a",
      "tree": "8e36a6ce3a1172891760e8dbc12cd73916c7264c",
      "parents": [
        "26b97f87dcd86934f8b75e018c80bb4e8d501b03"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Jun 10 15:56:42 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 11 11:13:30 2015 -0700"
      },
      "message": "runtime: Minor cleanup and extra comments around interpreter\n\nChange-Id: I24c0b261de8cf737babd9d01bf679482d48c8bc9\n"
    },
    {
      "commit": "67c8c942e9dfcabd548351db75e6d3b8b5165afa",
      "tree": "4af6e0cc9637e93cd9e3f64fc241094ce9b06657",
      "parents": [
        "8c4cce0abe6cfa8f4157cfa42b18474d9536c159"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 08 16:39:02 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 08 18:39:27 2015 +0100"
      },
      "message": "Quick: Fix LoopRepeatingTopologicalSortIterator.\n\nAlways push the loop head on the loop head stack. This fixes\na bug where we failed to return to an unnatural loop head to\nrecalculate its GVN data.\n\nBug: 17410955\nChange-Id: I3a2c3225e5d16268c3f56f7f90228759c7da37a9\n"
    },
    {
      "commit": "5b3ee56cd63ee9e3c70c0412d044b81ab9c94513",
      "tree": "b57f056c5e4ad18ba7c89034bbbb51b90820e648",
      "parents": [
        "122addc3962207badd364b00a75a58639e76b10c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 14 16:02:41 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 02 17:37:40 2015 +0100"
      },
      "message": "Delegate long-to-float type conversions to the runtime on ARM.\n\nOn ARM, translate long-to-float type conversions (from both\nQuick and Optimizing) as calls to the runtime routine\nart_l2f, instead of generating ad hoc code, so as to improve\nthe precision of the conversions.\n\nBug: 20413424\nChange-Id: I8c414ee1c6f4ff1f32ee78f75734cfd3cf579f71\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "8363c772581bf00ebcdc2e38391b4bfae51beb75",
      "tree": "c66a6da00fac8432293a6328eebee78995b53406",
      "parents": [
        "b4e2fbbed28c3bcdb8fd0fee5a201ba78e1edf28"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 28 16:12:43 2015 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 28 17:50:28 2015 +0100"
      },
      "message": "Add --generate-debug-info flag and remove the other two flags.\n\nReplace the flags --include-debug-symbols and --include-cfi\nwith single flag called --generate-debug-info (with alias -g).\n\nThe name \"symbol\" was not ideal, since depending on context it\nmay be interpreted as \"ELF symbols\", or \"debugging information\".\n\nThis CL also means that we have only the options to include\neither all debugging information or none.  This should be fine,\nsince we can use standard tools to strip anything we do not want.\n\nChange-Id: I721fded56d755d7eed0ef36aa84e841a1f5747f8\n"
    },
    {
      "commit": "dc31313c4577bb4c00d90774159c84e738ed348d",
      "tree": "5f850028ebc8843cdcaf56c5fc122bd660937603",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f",
        "80afd02024d20e60b197d3adfbb43cc303cf29e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "message": "Merge \"ART: Clean up arm64 kNumberOfXRegisters usage.\""
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "9bd88b0933a372e6a7b64b850868e6a7998567e2",
      "tree": "bcd275674c1234842b757ea8e100c4030f9ac6fe",
      "parents": [
        "01cb410f4ad23135671d821ba36c269f8c82affa"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@linaro.org",
        "time": "Wed Apr 22 16:24:46 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri May 22 12:01:07 2015 +0100"
      },
      "message": "ARM64: Move xSELF from x18 to x19.\n\nThis patch moves xSELF to callee saved x19 and removes support for\nETR (external thread register), previously used across native calls.\n\nChange-Id: Icee07fbb9292425947f7de33d10a0ddf98c7899b\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@linaro.org\u003e\n"
    },
    {
      "commit": "9cacef6e811940c2f21e7e54055379a2c43f0d06",
      "tree": "1aed02fa9e3cbfb05e9915f7906eb160204ce2f8",
      "parents": [
        "c3912c8a2db109a15603554fd456f56cd0a69ad0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 14 11:47:39 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 14 17:43:09 2015 +0100"
      },
      "message": "Quick: Fix marking high words in DCE.\n\nThis CL properly fixes the high word marking and reverts\n    https://android-review.googlesource.com/150352\nwhich was just covering up the underlying issue. A unit test\nfor the encountered issue is provided, though it does not\nexpose the deficiency in the cover-up CL.\n\nBug: 20640451\nChange-Id: Ia19a1134610e271ebbab5679ac0bd0cb0223d462\n"
    },
    {
      "commit": "ade58e14582c6ab81978e9cfcbbf5e54cc23fe18",
      "tree": "90bb13f12dbb97f31915906110b2b643a6ba532e",
      "parents": [
        "f0d765ec914649f7157d701669c772bd0c190830"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 22:27:21 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 22:27:21 2015 +0100"
      },
      "message": "Quick: Fix DCE, clear high word flag in RemoveChange().\n\nBug: 20640451\nChange-Id: Ibab707ff8e60816b9871c3f4096c0bbbf535cbe8\n"
    },
    {
      "commit": "83d46ef1eaa8fdecadfdb9564d80e50b42646c37",
      "tree": "c009b65e982a72c78cbfe6b203c3e942275c8531",
      "parents": [
        "f3962119654ac1f02e7ec891e1526ca8045542aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 18:27:20 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 18:37:17 2015 +0100"
      },
      "message": "Quick: Fix DCE to mark wide register overlaps correctly.\n\nPreviously we missed some cases of overlap with registers\ncoming from previous blocks.\n\nBug: 20640451\nChange-Id: I4b32a7aaea2dea1b0b9560ae3459a4d903683f20\n"
    },
    {
      "commit": "7b4de07fffc6dbbbd986bb21b212fa0c4a2aec58",
      "tree": "b68863ab991928ac808aa39782c18b46a28482cd",
      "parents": [
        "b5784d4703d8f99921d69b6b97542f2fbcac3a51",
        "f60715c2c0a2398822a143ffb6b75507bffca703"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 07 17:21:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 07 17:21:52 2015 +0000"
      },
      "message": "Merge \"Quick: Fix DCE to rename SSA regs for degenerate Phis.\""
    }
  ],
  "next": "e299f167c9559401548eab71678d4b779e46c2fb"
}
