)]}'
{
  "log": [
    {
      "commit": "f2f1c9dab95892ec2983f57185c2bb0fbce80f80",
      "tree": "163613230c2afb656f9ee2b232253d76624e3bf8",
      "parents": [
        "8a31bb939f2ab1fe3f745ade40408ac07267208a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 15 15:35:46 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 15 09:19:22 2017 -0700"
      },
      "message": "Revert \"Revert \"Refactor annotation code for obsolete methods.\"\"\n\nThe number of InterruptedExceptions created during runtime shutdown is\nsometimes inconsistent so we will filter those out of the test results.\n\nThis reverts commit 65e0775010121498a37fa26c64fcc5bb17a6c1b5.\n\nReason for revert: Fixed issue with test flakes\n\nBug: 31455788\nTest: stress --cpu 60; while ./test/run-test --host 980; do; done\n\nChange-Id: Idf53ea11ceec1f48c433da468b31092bf230de57\n"
    },
    {
      "commit": "65e0775010121498a37fa26c64fcc5bb17a6c1b5",
      "tree": "5849c59b4e2de57fa8156149597f4a921a2f04d9",
      "parents": [
        "5378b64af97f9ae06082c697a6b13d2b98e02abb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 06:56:35 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 15 06:58:57 2017 +0000"
      },
      "message": "Revert \"Refactor annotation code for obsolete methods.\"\n\nTest has flakes.\nBug: 31455788\n\nThis reverts commit 672a0b75c91af44749b1e946684e6a65a884d778.\n\nChange-Id: If00ecbd31abe204bcaf8341eceb674e07c0ac8f2\n"
    },
    {
      "commit": "672a0b75c91af44749b1e946684e6a65a884d778",
      "tree": "7ae1c2fd5b9e2e7d155d9427848000d381e138d0",
      "parents": [
        "01ea2aa05d6889b4ec08679606d3cdf36b302a8f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Mar 10 13:09:57 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 14 10:18:12 2017 -0700"
      },
      "message": "Refactor annotation code for obsolete methods.\n\nReading annotations on obsolete ArtMethod* objects would cause\nproblems due to reading from the wrong dex file. We refactored that\ncode so now it always uses the correct dex file when reading\nannotations. This was rarely a problem since obsolete ArtMethods are\nonly ever exposed to the runtime itself which rarely reads\nannotations.\n\nWe also add a test for redefining Object.class. This is one of the\nsmall number of classes where the runtime will read it\u0027s annotations\noff of obsolete methods.\n\nBug: 31455788\nTest: ./test/testrunner/testrunner.py --host -j40\nChange-Id: I5f1c58464b89a7a9198a7b26b015b102a7dc9c2f\n"
    },
    {
      "commit": "fe35fe172a7d3469ebf1dae9cca7e1ac8aefcba7",
      "tree": "3bf964f7786227f8104eeba08fe2e1768109a764",
      "parents": [
        "a0637543dc82dfd54feda7c80da017bd39b1d2d5",
        "fa4333dcb481e564f54726b4e6f8153612df835e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 22:11:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 22:11:35 2017 +0000"
      },
      "message": "Merge \"ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\""
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "6def7024f36c39ea79b522c8c68cb253355dda8f",
      "tree": "9cca19acfe065dbc5e0d763d65d0c56a2b0387f4",
      "parents": [
        "aff5505d85612621bd112d9af1ba4cc31a4619d1",
        "eee0bd448ec057d3f224895ddb868786758eeb5b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 19:11:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 19:11:28 2017 +0000"
      },
      "message": "Merge \"Revert^6 \"Make class redefinition work with native methods on stack.\"\""
    },
    {
      "commit": "eee0bd448ec057d3f224895ddb868786758eeb5b",
      "tree": "32283e1b1ccb97bced2999a364cf21361c8d07ac",
      "parents": [
        "02b2349b1cd2a78e86b1a7542f8330e6c3aaeb35"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 14 15:31:45 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 14 09:28:19 2017 -0800"
      },
      "message": "Revert^6 \"Make class redefinition work with native methods on stack.\"\n\nWe were incorrectly trying to obtain the profiling information of a\nnative method.\n\nThis reverts commit 02b2349b1cd2a78e86b1a7542f8330e6c3aaeb35.\n\nReason for revert: Fixed test failure with jit configurations\n\nTest: ART_TEST_JIT\u003dtrue mma -j40 test-art-host\n\nChange-Id: Ic7112104aec64e597d2df80db5dc2a505d2cc2dd\n"
    },
    {
      "commit": "86bbe456772f02baf01410e7e670a92e8edfd3ce",
      "tree": "df306dd32b83b0118800a9a94b29ace645951415",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f",
        "02b2349b1cd2a78e86b1a7542f8330e6c3aaeb35"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 14 10:50:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 10:50:51 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert^4 \"Make class redefinition work with native methods on stack.\"\"\""
    },
    {
      "commit": "02b2349b1cd2a78e86b1a7542f8330e6c3aaeb35",
      "tree": "f5981b3ef21e41a4df6edc203615f15f23e93ad5",
      "parents": [
        "724f77e2fed038d57a3d08fdcf656d703e3473ea"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 14 10:49:09 2017 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 14 10:49:09 2017 +0000"
      },
      "message": "Revert \"Revert^4 \"Make class redefinition work with native methods on stack.\"\"\n\nART run-test 945-obsolete-native is failing in automated\ntesting.\n\nThis reverts commit 724f77e2fed038d57a3d08fdcf656d703e3473ea.\n\nChange-Id: I4eceb45765826ca442ee8f4800b2bed51f98e662\n"
    },
    {
      "commit": "25057337dcad41253bc129b3b6f578314c6dd12e",
      "tree": "fea786ae218301ab2292e1d424f7f5506ed70055",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7",
        "724f77e2fed038d57a3d08fdcf656d703e3473ea"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 02:41:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 02:41:58 2017 +0000"
      },
      "message": "Merge \"Revert^4 \"Make class redefinition work with native methods on stack.\"\""
    },
    {
      "commit": "724f77e2fed038d57a3d08fdcf656d703e3473ea",
      "tree": "a9ce49e4e345defa257df168f354710159a818ff",
      "parents": [
        "38c20d4a694eea44a1bd3af32a6a99512c139358"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Feb 11 00:43:10 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 13 16:52:07 2017 -0800"
      },
      "message": "Revert^4 \"Make class redefinition work with native methods on stack.\"\n\nWe had a problem where there was a brief period of time where the dex\nfile for an obsolete method could not be obtained. This meant that not\nall functions of ArtMethod could safely be called, causing some\nproblems.\n\nThis reverts commit 38c20d4a694eea44a1bd3af32a6a99512c139358.\n\nReason for revert: Fixed issues with interp-ac and relocate-npatchoat\n\nTest: ART_TEST_RUN_TEST_RELOCATE_NO_PATCHOAT\u003dtrue \\\n      ART_TEST_INTERPRETER_ACCESS_CHECKS\u003dtrue \\\n      mma -j40 test-art-host\n\nChange-Id: I04991f3e76813831b6446f97636b6fa404397f36\n"
    },
    {
      "commit": "60acc33c5b9bb93c23c4b54f6d97db2d5ec0828c",
      "tree": "1be4af0c2b98992c782e44d4706df794f99d0bc9",
      "parents": [
        "2d33ce2d9640c32c6a912aedd9e2436b51985608",
        "37c8e5c1739c02f2c01217f556e946e554cd06d0"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Feb 13 21:26:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 13 21:26:23 2017 +0000"
      },
      "message": "Merge \"Remove special treatment of native method for CHA.\""
    },
    {
      "commit": "38c20d4a694eea44a1bd3af32a6a99512c139358",
      "tree": "f5981b3ef21e41a4df6edc203615f15f23e93ad5",
      "parents": [
        "4493f92dfc70e01d95ad57bc4c0c38f59a616f70"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Feb 11 00:38:35 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Feb 11 00:38:35 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Make class redefinition work with native methods on stack.\"\"\"\n\nThis reverts commit 4493f92dfc70e01d95ad57bc4c0c38f59a616f70.\n\nReason for revert: Fails interpreter-ac and relocate-npatchoat\n\nChange-Id: I15eb4964c9101fa04e34b52acf9ffe25e6d4e60d\nTest: revert\n"
    },
    {
      "commit": "37c8e5c1739c02f2c01217f556e946e554cd06d0",
      "tree": "9275cfd5b06df932ae21a8e781b87c39c31e6aff",
      "parents": [
        "8b6d2fd300624ad1716c0907e646b87997b6671d"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Feb 10 11:25:05 2017 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Feb 10 13:40:28 2017 -0800"
      },
      "message": "Remove special treatment of native method for CHA.\n\nThis special treatment is not necessary and causes complexity and issues.\n\nBug: 35104526\nTest: m test-art-host\nChange-Id: Icb07d147b433388d0b9430212b9b4c4bf04eafae\n"
    },
    {
      "commit": "4493f92dfc70e01d95ad57bc4c0c38f59a616f70",
      "tree": "8762ba0636b735e43cdd714755cd622ef718580b",
      "parents": [
        "806ac631e53f12061cb0ae7640aa9cd0dd79243d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 10 16:33:26 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 10 11:46:56 2017 -0800"
      },
      "message": "Revert \"Revert \"Make class redefinition work with native methods on stack.\"\"\n\nWhen we were scanning the stack for tracing we were getting the wrong\nstack-frame size for obsolete native methods. This fixes it by\ncreating real obsolete native methods so we can recognize them and\nthen doing the (rather long) calculation to find their real\nstack-frame size.\n\nThis reverts commit 7558d27ccd0837fef7c4bfbff7fc82f07a787316.\n\nReason for revert: Fixed tracing failures.\n\nTest: mma -j40 test-art-host\nTest: ART_TEST_TRACE\u003dtrue ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nChange-Id: Ic65da1b51a43733ff60131832753afa0c4ce66b1\n"
    },
    {
      "commit": "fcbafb36eff1facdd4c2b60e5f56dd986c558901",
      "tree": "443a55d0ac3698e7eaf82395d6f3567b35d8474d",
      "parents": [
        "406402baa4900c36b3fe27b03bf9e04e978e50be"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 02 15:09:54 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 02 15:32:25 2017 -0800"
      },
      "message": "Ensure we don\u0027t attempt to compile obsolete methods.\n\nWe would run into issues if we tried to compile an obsolete method\nsince some of the information needed to do so is lost as we redefine\nthe declaring class. Since compiling these methods is unlikely to have\na major effect on the performance of the program we simply tell the\nJIT not to bother with them.\n\nAlso update all places to use the new SetDontCompile helper.\n\nTest: mma -j40 test-art-host\nTest: stress --cpu 60 \u0026; \\\n    while ./test/run-test --host --jit --gcstress --64 942; do ; done\n\nChange-Id: Ie70fee6f503818e7589571facf28ccc5e7ca79f8\n"
    },
    {
      "commit": "4ba388a39333b13f0f3bcde826444c77fd7166ed",
      "tree": "bbb2b337ee5798f50c5720d2e8467c53477d7826",
      "parents": [
        "8f28bd479af445293474867191a0bf1cf0f08a4f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 27 10:26:49 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 30 12:13:30 2017 -0800"
      },
      "message": "Remove Deoptimization code from class transformation.\n\nSince we removed the current_method from the compiled code we don\u0027t\nneed to deoptimize all frames anymore.\n\nThis is a partial revert of commit dba614810.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nChange-Id: I44a6dd89e1d96bd8c82c2c24a2f42fef023a80be\n"
    },
    {
      "commit": "e8fcd013493b800227bd7ea5f38f6cc27e9b90d1",
      "tree": "16bf195a81dac7f66d513be7437a0a5c98dc2365",
      "parents": [
        "cb7b5dfa0522cb234b6f2e4893ce21fd9c1a6cda"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri Jan 20 10:43:30 2017 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jan 26 22:31:03 2017 -0800"
      },
      "message": "Revert \"Revert \"CHA for abstract methods.\"\"\n\nThis reverts commit 8ebc8bf055e8bd8f6f167e65a69cf4dae136db55.\n\nWhen we set the single-implementation method for an abstract method, it\nneed to be protected by the cha-lock.\n\nTest: new testcase and ART_TEST_JIT\u003dtrue m -j20 test-art-host-run-test\nChange-Id: I66acb20ffa7e49dd9c391f001e3bb52f961872e4\n"
    },
    {
      "commit": "888a59ed953e631e9d72e3a19eabfe114c229123",
      "tree": "f699384fc0ea23d239b5dd4caceb895c045914b6",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 11:41:41 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 25 11:58:35 2017 -0800"
      },
      "message": "Make jvmti tests runnable on the RI again.\n\nTest: ./test/run-test --host --jvm 932\nChange-Id: Ia35c9e2b4f93884956993dc9c5e4d041344c9680\n"
    },
    {
      "commit": "8ebc8bf055e8bd8f6f167e65a69cf4dae136db55",
      "tree": "4cc89efe98ddc6ef0421405affafce95c5aabae2",
      "parents": [
        "ae6c189b9d63ca4c2ae0e952187819c5e442e3c9"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 20 17:37:02 2017 +0000"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 20 17:37:50 2017 +0000"
      },
      "message": "Revert \"CHA for abstract methods.\"\n\nThis reverts commit ae6c189b9d63ca4c2ae0e952187819c5e442e3c9.\n\nThis is causing sporadic build failures with:\ndex2oatd F 01-20 15:05:33 8343 10164 cha.cc:292] Check failed: method_in_super-\u003eHasSingleImplementation() \n\nChange-Id: I4435ab028d3f7893e18b44347f294326c573a255\n"
    },
    {
      "commit": "ae6c189b9d63ca4c2ae0e952187819c5e442e3c9",
      "tree": "beb13f852a0e1b3a7867dfd9d64e962d3cb403fb",
      "parents": [
        "a8b4390a3b817a455b0abdf575922fea6182170d"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jan 05 13:46:36 2017 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Jan 19 10:49:08 2017 -0800"
      },
      "message": "CHA for abstract methods.\n\nAdd the ability to devirtualize abstract method invocation if\nan abstract method has only one implementation. Only support in JIT\nmode currently.\n\nTest: new testcase and ART_TEST_JIT\u003dtrue m -j20 test-art-host-run-test\nChange-Id: I43da03a9fa9a73840f5eaf207c6611e0913a7f66\n"
    },
    {
      "commit": "942fd3130254d8276cbfe8e6201825e9c49e9b2c",
      "tree": "62dbcd85ab150604e2d72a3c2d0c3639a28c9b7a",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 20:52:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 17 16:12:15 2017 +0000"
      },
      "message": "Reduce using ArtMethod\u0027s dex_cache_resolved_types_.\n\nAvoid using the ArtMethod\u0027s dex cache type array shortcut\nin runtime, preparing for its removal. We do not completely\nremove the shortcut yet because it is still used by array\nallocation entrypoints.\n\nFix ArgArray::BuildArgArrayFromObjectArray in reflection.cc\nto not ask for the parameter type to be resolved. It should\nhave been previously resolved when retrieving the Method.\n\nAlso partially revert\n    https://android-review.googlesource.com/310717\nbecause it relied on the removed AIOOBE check in the removed\nArtMethod::GetDexCacheResolvedType(). The removed check was\nsimply defensive but it could not be triggered without some\nmemory corruption.\n\nTest: m test-art-host\nBug: 30627598\nChange-Id: Ic45a5ff8c66b79429e440cbc08d67bf22a083682\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "e4cdd4dbcbc75e373917d22214cd431643cd3610",
      "tree": "c4b467a9fed50f51fcfbffff85f893d3b1643282",
      "parents": [
        "ab1b1c06a782f18d9594e6a4ff4b2c4b895ecee6",
        "0b772575fcf3b93896a71ceb524329f867899c75"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 05 21:08:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 05 21:08:20 2016 +0000"
      },
      "message": "Merge \"Address comments I missed on a previous CL\""
    },
    {
      "commit": "0b772575fcf3b93896a71ceb524329f867899c75",
      "tree": "90630dac067ed92fe1b2169af627c1d1df44c2b9",
      "parents": [
        "0fd9a7d67878d1d88a74895c0d02c556b5de8e72"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 02 17:27:31 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 05 08:57:54 2016 -0800"
      },
      "message": "Address comments I missed on a previous CL\n\nI accidentally missed some comments on\nandroid-review.googlesource.com/c/305518 when I submitted it. This\naddresses those comments.\n\nTest: mma -j40 test-art-host\nChange-Id: Icd8ff65dee1730d10489f25e75bddbd455c68413\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "a01de59eef990c07df9815376cd3c675e3acd481",
      "tree": "86f6ef41c13de572dc134956c836dd94c35d9d64",
      "parents": [
        "424c03aac25835febbf5c695b943206bc40ef335"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 15 10:43:06 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 30 10:23:47 2016 -0800"
      },
      "message": "Infrastructure for obsolete methods\n\nThis adds some of the structures and functions needed to eventually\nsupport obsolete methods. Specifically this adds the code to create\nand iterate through the obsolete dex-cache maps of classes and\nre-organizes the redefinition code to be more sensible and extensible.\n\nBug: 32369913\nTest: ./test/run-test --host 902\nTest: mma -j40 test-art-host\n\nChange-Id: I93d60fa66e7512e8b059cdf42af8a56e93ef4bd7\n"
    },
    {
      "commit": "a598b869b255b4daeaa34d1dd0939222a3a791b7",
      "tree": "5af89e57aaa81cabbee54c924a9319814c39a81d",
      "parents": [
        "b2dc55149665fa288d44136642a6814a3a5a74a4",
        "a5b09a67034e57a6e10231dd4bd92f4cb50b824c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 21 21:17:32 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 21:17:32 2016 +0000"
      },
      "message": "Merge \"ART: Add dex::TypeIndex\""
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "1b868498a176705b867e2572cc1bcbd58dbd62d6",
      "tree": "36e10d1cff265d54090571ab08ad2ae9ebda97c1",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 16:22:37 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 21 10:05:03 2016 -0800"
      },
      "message": "Use type lookup tables in compiler\n\nThis recently regressed and stopped happening, the fix creates fake\nOatDexFiles so that the compiler uses the type lookup tables instead\nof slow FindClassDef and FindTypeId.\n\nPerf on host compile Facebook:\nBefore:\n2.49%: art::DexFile::FindClassDef(unsigned short) const\n1.59%: art::DexFile::FindTypeId(char const*) const\n\nAfter:\n0.42%: art::OatDexFile::FindClassDef(art::DexFile const\u0026, char const*, unsigned long)\n0%: art::DexFile::FindTypeId(char const*) const\n0%: art::DexFile::FindClassDef(unsigned short) const\n\nAverage install (N6P 960 mhz average of 40 samples): 38.2s -\u003e 35.64s\n\nBug: 32641252\n\nTest: test-art-host, adb install.\n\nChange-Id: I34df21dc2c155bc2579c5cafdd91f9cb0fead1a9\n"
    },
    {
      "commit": "4acefd33064d37b41ca55c3c9355345a20e5f9c2",
      "tree": "31b31e531286108bc904b6c9a499f0607f355030",
      "parents": [
        "3667e26de4856cccf24bcbab54ad3349a05267c0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 24 13:14:58 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 24 20:22:12 2016 +0100"
      },
      "message": "Encode quickening info in .vdex.\n\nWe quicken vdex files for performance reasons, but when taking an OTA,\nwe need to revert the quickening to the original instructions. As vdex\nshould be independent of the oat file and oat file versions, we encode\nthe quickening data in the vdex.\n\ntest: m test-art-host-jit m test-art-host-gtest\nbug:30937355\n\nChange-Id: I9a543a161b70aa1cff99f8fe6f5b5cab7a6c4d31\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "97d7e1cd7f733cb33a0e238bec6d7ed525638cd1",
      "tree": "d2f02420f82d76d10dc0d80f431c9f4aba03ac82",
      "parents": [
        "eebe142e935e9444c7c947d02246e7fbe88b2cc4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 04 14:44:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 05 13:21:44 2016 +0100"
      },
      "message": "Remove #include \"oat_file.h\" from class_linker.h .\n\nRefactor the OatClass and OatMethod related functions from\nClassLinker to OatFile and ArtMethod, respectively. Refactor\nthe remaining ClassLinker dependencies on OatFile to break\nthe #include dependency and reduce incremental build times.\n\nTest: m test-art-host\nChange-Id: Iebc5b9f81b48fbcf79821cc827a5d7c4a0261bf6\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "0e8443995af602bcc2e70dcef1d20ee48acec934",
      "tree": "2d81b8db23bea139e40e33e4e9b8c69027fb1e56",
      "parents": [
        "c4cb3d532db8a500c1a15e8a0052895960259209"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Sep 08 13:43:31 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Sep 21 11:42:21 2016 +0100"
      },
      "message": "Collapse ART\u0027s AbstractMethod class into Executable\n\nAfter the OpenJDK 8 pull there is now a common base class\nfor Method and Constructor that can be used instead.\n\nMethods that are abstract on Executable but on Android\nwere implemented in AbstractMethod are now consistently\nrenamed to \"{method}Internal\", declared final and\ngiven package-protected access.\n\nFor consistency with all other private, natively\nimplemented methods, the method getDeclaredAnnotations()\nhas been renamed getDeclaredAnnotationsNative().\n\nBug: 28666126\nBug: 31052885\nTest: make test-art-host and cts run of CtsLibcoreTestCases\nChange-Id: Ibfe6af6a47fe0cfffd0859ffbe58980aeb84e053\n"
    },
    {
      "commit": "26ead4975e1752e8ae2f5ed6fda73876c4f9ff59",
      "tree": "2ce1b047f54bfb4287483de8eaf79cd12f6058b6",
      "parents": [
        "79f6d706185714dccf80aca20d9f3261337473ae",
        "268764da8022cafa5661c5b514eaa343c5257e57"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 14 16:55:56 2016 +0000"
      },
      "message": "Merge \"Make ScopedAssertNoThreadSuspension no overhead for non-debug\""
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "268764da8022cafa5661c5b514eaa343c5257e57",
      "tree": "7c4b46847a6dcfac7a1492edd79b434fb1a0d6ea",
      "parents": [
        "f9decf915f6fa5b33fceba7c10c119e4cad481e5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 12:09:38 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 13 15:18:29 2016 -0700"
      },
      "message": "Make ScopedAssertNoThreadSuspension no overhead for non-debug\n\nPreviously it required Thread::Current() which may not be free.\nThe plan is to add a lot more ScopedAssertNoThreadSuspension in\nthe codebase.\n\nAlso cleaned up callers.\n\nBug: 31458474\nChange-Id: I5a1621a5435476504d22266cc01a9bf26aab7568\n"
    },
    {
      "commit": "367f3dd32454858b8b25d87feb8f6599d3b4c9dd",
      "tree": "9fe45c9f6785c31918f70ed2d12683f9c8d702af",
      "parents": [
        "fa7b5c97db681e3d64d145807927cfafae78729b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Sep 01 17:00:24 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 09 10:48:56 2016 -0700"
      },
      "message": "jni: Add @CriticalNative optimization to speed up JNI transitions\n\nChange-Id: I963059ac3a72dd8e6a867596c356d7062deb6da7\n"
    },
    {
      "commit": "6670bd2098264d4c4e19750ab4741121da7ee54b",
      "tree": "96d0e872b50daad88dbb77357c8e0102b1a4b69d",
      "parents": [
        "f606c3a687e3eae94296ba74d2d820b6e37692ff",
        "0b671c0408e98824e1f92b1ee951b210c090fe7a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 19 15:07:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 19 15:07:31 2016 +0000"
      },
      "message": "Merge \"Add support for Baker read barriers in SystemArrayCopy intrinsics.\""
    },
    {
      "commit": "0b671c0408e98824e1f92b1ee951b210c090fe7a",
      "tree": "0bc58c031cd899aa856677fe8c9ffa376228806f",
      "parents": [
        "36bf3a2d281892e7906d3eaf9d7455b0656c9a25"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 19 12:02:34 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 19 16:00:09 2016 +0100"
      },
      "message": "Add support for Baker read barriers in SystemArrayCopy intrinsics.\n\nBenchmarks (ARM64) score variations on Nexus 5X with CPU\ncores clamped at 960000 Hz (aosp_bullhead-userdebug build):\n- Ritzperf - average (lower is better):       -3.03% (slightly better)\n- CaffeineMark - average (higher is better):  +1.26% (slightly better)\n- DeltaBlue (lower is better):               -10.50% (better)\n- Richards - average (lower is better):       -3.36% (slightly better)\n- SciMark2 - average (higher is better):      +0.26% (virtually unchanged)\n\nDetails about Ritzperf benchmarks with meaningful variations\n(lower is better):\n- FormulaEvaluationActions.EvaluateAndApplyChanges: -13.26% (better)\n- FormulaEvaluationActions.EvaluateCascadingSums:   -10.94% (better)\n- FormulaEvaluationActions.EvaluateComplexFormulas: -15.50% (better)\n- FormulaEvaluationActions.EvaluateFibonacci:       -10.41% (better)\n- FormulaEvaluationActions.EvaluateLargeSums:        +6.02% (worse)\n\nBoot image code size variation on Nexus 5X\n(aosp_bullhead-userdebug build):\n- total ARM64 framework Oat files size change:\n  107047632 bytes -\u003e 107154128 bytes (+0.10%)\n- total ARM framework Oat files size change:\n  90932028 bytes -\u003e 91009852 bytes (+0.09%)\n\nTest: ART host and target (ARM, ARM64) tests + Nexus 5X boot.\nBug: 29516905\nBug: 29506760\nBug: 12687968\nChange-Id: I85431368d09965687a0301ae2eb3c991f276ce5d\n"
    },
    {
      "commit": "9d4b6da934934c322536ee3309b63ce402740f49",
      "tree": "9e7ee5023d6036b98e0560411bb0527efdedca01",
      "parents": [
        "2af1aa066e3d20edd8fea5d5b6dbbbad73102d52"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 29 09:51:58 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 16 20:19:36 2016 +0000"
      },
      "message": "jni: Fast path for @FastNative annotated java methods\n\nAdds a faster path for java methods annotated with\ndalvik.annotation.optimization.FastNative .\n\nIntended to replace usage of fast JNI (registering with \"!(FOO)BAR\" descriptors).\n\nPerformance Microbenchmark Results (Angler):\n* Regular JNI cost in nanoseconds: 115\n* Fast JNI cost in nanoseconds: 60\n* @FastNative cost in nanoseconds: 36\n\nSummary: Up to 67% faster (vs fast jni) JNI transition cost\n\nChange-Id: Ic23823ae0f232270c068ec999fd89aa993894b0e\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "479b1de64cd7a8c9c8ca182c699cb2048850c35d",
      "tree": "bca0b26c4e210e56d25baca49f7a25ffe9178813",
      "parents": [
        "75f0885d7c3d72a0351912b6d47682e1c860efdf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 18:27:17 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 21 15:47:35 2016 -0700"
      },
      "message": "ART: Remove PACKED from ArtMethod\u0027s ptr_sized_fields_\n\nRemove the PACKED(4) hack, as it\u0027s highly annoying when debugging\na 64-bit process. Instead, fix the actual offset and size computation\nfor cross-size accesses.\n\nTest: m test-art-host\nChange-Id: I295c78760b74b6a62946e76856f218b4eb159cdc\n"
    },
    {
      "commit": "75f0885d7c3d72a0351912b6d47682e1c860efdf",
      "tree": "d8a586b205ad3a502d8a007565a0140591d340ce",
      "parents": [
        "27d99ed24328509cd3df7f895ce2696a1884bb21"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 08:06:07 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 21 11:26:47 2016 -0700"
      },
      "message": "ART: Rename ArtMethod JNI field\n\nThe field is multi-purpose, rename it to data and clean up\naccessors in preparation of more checks.\n\nTest: m test-art-host\nChange-Id: Ib4b84b7b1a51ca201544bc488ce8770aa858c7fd\n"
    },
    {
      "commit": "3aaf9645639ff56fbfe49a981242cbda01d6796e",
      "tree": "822de2f62ddeb8576ab6567e5cab723b5731dadf",
      "parents": [
        "97b1e6633be800827145c4ffeded1c834082730f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 07 14:14:37 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 07 16:12:59 2016 +0100"
      },
      "message": "Revert \"Revert \"Fix ArtMethod::GetInvokeType for static methods on interfaces.\"\"\n\nbug:29089267\nbug:27521545\n\nWe were hitting a compiler DCHECK that a class would never require to\ndo access checks on itself. The reason was that the compiler driver\nwas not trying to resolve a type, but instead relied on the verifier\nfor pre-populating the dex cache. However, the verifier doesn\u0027t\nnecessarily run in JIT mode.\n\nThis reverts commit 12abcbd950bd0ff4528e2e0d27ca5e881c7b0467.\n\nChange-Id: I59204c16927084f6605a2a3f999ca529f949e1ad\n"
    },
    {
      "commit": "12abcbd950bd0ff4528e2e0d27ca5e881c7b0467",
      "tree": "2788e5aec7b022694f7e7d41c1e40c205e46596e",
      "parents": [
        "808067335b228d7b50ad84123d3c8ecb7aeeb200"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 15:51:58 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 15:51:58 2016 +0000"
      },
      "message": "Revert \"Fix ArtMethod::GetInvokeType for static methods on interfaces.\"\n\nbug:29089267\nbug:27521545\n\nFails some DHECKs.\n\nThis reverts commit 808067335b228d7b50ad84123d3c8ecb7aeeb200.\n\nChange-Id: I0e768ce85be593e3f50fd02abc29aa34f2be3562\n"
    },
    {
      "commit": "808067335b228d7b50ad84123d3c8ecb7aeeb200",
      "tree": "8642091a7775c18ac03a079f1befea3261805346",
      "parents": [
        "4b53f5795a289b40aa81b9c42ede5c896ea0e4ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 02 15:55:48 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 06 11:29:47 2016 +0100"
      },
      "message": "Fix ArtMethod::GetInvokeType for static methods on interfaces.\n\nAnd avoid calling ResolveMethod in the JIT, since it already\nknows that method.\n\nbug:29089267\nbug:27521545\n\n(cherry picked from commit 2dc77ecf375882f51ff7c09712c05b80e58abb6b)\n\nChange-Id: I36084b1f207317452c42fdfc8ffa4d8c721d2f76\n"
    },
    {
      "commit": "0122320f86ae004aa195d76814c52564d84ee632",
      "tree": "0284342034932f022a520aea87a86701cd0d4ffd",
      "parents": [
        "b0fca360a081eff1a44c6f055c628e2dba44c003"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 05 15:10:42 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 10 10:05:55 2016 -0700"
      },
      "message": "Break the debug cycle!\n\nRationale:\nWhen entering the path that implements method invocation,\nit is possible for the interpreter and JIT to cycle around\ntrying to interpret or compile a method, never making a\ndecision. This bug fix avoids such cycling with a minimum\nof extra runtime overhead.\n\nBUG\u003d28537292\n\nChange-Id: If805b7bc0279019d0ebf322ddd17cb57a9e884eb\n"
    },
    {
      "commit": "ffc87076dda9878cb2cc098149bae441d38b9268",
      "tree": "e587208d6a8e62532792add3e1ace6b4e6d73e0f",
      "parents": [
        "97cbc9206e9adc473a90650ebdb5d620f517ff04"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 20 14:22:09 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 28 16:15:04 2016 +0100"
      },
      "message": "Split profile recording from jit compilation\n\nWe still use ProfileInfo objects to record profile information. That\ngives us the flexibility to add the inline caches in the future and the\nconvenience of the already implemented GC.\n\nIf UseJIT is false and SaveProfilingInfo true, we will only record the\nProfileInfo and never launch compilation tasks.\n\nBug: 27916886\n\n(cherry picked from commit e5de54cfab5f14ba0b8ff25d8d60901c7021943f)\n\nChange-Id: I68afc181d71447895fb12346c1806e99bcab1de2\n"
    },
    {
      "commit": "9d07e3d128ccfa0ef7670feadd424a825e447d1d",
      "tree": "dfb677fd75f0f297fef9bc49311cf1d22c770f56",
      "parents": [
        "eb98c0ded592cfca8187c744393c82efd1020b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 31 12:02:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 04 17:50:20 2016 +0100"
      },
      "message": "Clean up OatQuickMethodHeader after Quick removal.\n\nThis reduces the size of the pre-header by 8 bytes, reducing\noat file size and mmapped .text section size. The memory\nneeded to store a CompiledMethod by dex2oat is also reduced,\nfor 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The\naosp_flounder-userdebug 32-bit and 64-bit boot.oat are each\nabout 1.1MiB smaller.\n\nDisable the broken StubTest.IMT, b/27991555 .\n\nChange-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039\n"
    },
    {
      "commit": "de166544d6539942d3507ce47910f601c97b7532",
      "tree": "7e7ef622e1905d9650ade403746eb492532e93c8",
      "parents": [
        "b5d31327b2fa96918a255f78a930f64759fa3130"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 07 15:44:08 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 07 15:44:08 2016 +0000"
      },
      "message": "Add some debugging for zygote crash.\n\nbug:27340451\nChange-Id: I212567b18959ab4dc7f1dbde2e6d4ff60fe7bed2\n"
    },
    {
      "commit": "2a524bd724d746aa807bf891cc379ad6abd81b64",
      "tree": "8b6ad30de6c5d28d93f8942cca4e319075718a43",
      "parents": [
        "47bce25b3eaf5c0e1d46f0555eaf4676f958a7a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 12:18:47 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 12:18:47 2016 +0000"
      },
      "message": "Dump more information to diagnose problem.\n\nbug:27424509\nChange-Id: Id502cf408a7f117a2a891534f5c999d60f9370b1\n"
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "103992b9171fac9eceb2fe4015ab04f544b9c559",
      "tree": "0e21aeb48e11130f9bfe1c1c42202ba715e30cb6",
      "parents": [
        "376a6f3dbae7b71a6fc2c339ec416d3407277308"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 04 15:32:43 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 05 08:16:06 2016 -0800"
      },
      "message": "ART: Move ThrowStackOverflowError to common_throws\n\nThis should really be in common_throws considering all the callers.\n\nChange-Id: I410c07cbf5659f216d44597530cb85f99740f320\n"
    },
    {
      "commit": "51a64d5d4fe91842cc2a5f2a412441147c145683",
      "tree": "dca598e01c333bce50b50d931516027987b4f343",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 13:55:59 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 17 14:18:45 2015 -0800"
      },
      "message": "Make use of new method iterators.\n\nChange-Id: I1f82f17951339b2054a1dac87bde79f9e803fc4a\n"
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "6c8467ffc427a513dc2fdea7ed9eeb0bb54d30ef",
      "tree": "a3f0258c260e3818c32aa254d484724fde1d16d3",
      "parents": [
        "b9bbbeb2b05d74cae0fe0682a26b19f5a7e68d8c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Nov 20 15:03:26 2015 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 22:39:43 2015 +0000"
      },
      "message": "Make debugger support default methods.\n\nSupports breaking on, stepping into and through default methods.\n\nBug: 25549445\nBug: 24618811\n\nChange-Id: I1a47e3263a0624adbd9e83b99d0acd7bef7757a4\n"
    },
    {
      "commit": "9139e008abe30b7beaf4afd6533228a1dd9b202c",
      "tree": "506be89287507bd777bd132627ad963729434969",
      "parents": [
        "d7c76bd7e867b151ac81ef41810614c7b4cc898e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 09 15:59:48 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 10 17:20:41 2015 -0800"
      },
      "message": "Correct exception behavior for default methods\n\nDefault methods are defined to throw an IncompatibleClassChangeError\n(ICCE) when they are called and there is no \"best\" implementation.\nPreviously we would simply throw an ICCE during class loading as soon\nas we noticed that this would happen if called. This makes us wait\nuntil we actually attempt to execute the method. Furthermore, this\nallows us to use other, non-conflicting, methods on the object as\nnormal.\n\nFurthermore, this makes us correctly throw AbstractMethodErrors in\ncases where all default implementations of a method are overridden by\nabstract declarations.\n\nAdds 3 tests for this new behavior.\n\nBug: 24618811\n\nChange-Id: Id891958a81f9b3862b2ce5919636aabef7d3422e\n"
    },
    {
      "commit": "a5891e81a2fb833307cf7c7e7267070dc0223dc8",
      "tree": "a7acb2a0f2836fee2729db2b795d15bb3f586863",
      "parents": [
        "2fa684206b0a8bd203d07e1edf74a839b498f74f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 14:18:27 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 16:05:42 2015 +0000"
      },
      "message": "Fix interaction between JIT and instrumentation.\n\n- The JIT needs to go through the instrumentation to update\n  entry points.\n- The instrumention needs to know if a method got JITted\n  to know if needs to deoptimize.\n\nbug:25438583\n\nChange-Id: I4b186a1da9f4a3fb329efd052a774d5502a902a1\n"
    },
    {
      "commit": "5a23d2ea6e0d89112ff11ec765e676c03818b7c2",
      "tree": "9203582b6c0995da6642c7001332ee59eefab880",
      "parents": [
        "df6dc42ba2ca0fa43ba970ba2e60977422105f7e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 03 18:58:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 09:27:28 2015 +0000"
      },
      "message": "Fix TODO on instrumentation and add some more DCHECKs.\n\nbug:25343683\nbug:25438583\n\nChange-Id: I232deb1b6761466b514c687ce304f61928755cdc\n"
    },
    {
      "commit": "22cf3d361695ff1d585a8a412ebeade69749811f",
      "tree": "bff30bc41f6f85d0758934a9eeeb3511c2a0fc44",
      "parents": [
        "43c6d31c43c05d97511bb9658964fd3d2f32b915"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 02 11:57:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 02 15:21:41 2015 +0000"
      },
      "message": "Fix tests flakiness with jit when using Proxy classes.\n\nWe cannot copy the entry point between ArtMethod when\nthe entry point has been JITted. We put the interpreter\nbridge instead.\n\nbug:25334878\n\nChange-Id: I65a50cc1f10a5a152733807f8c85fb3ed81c5829\n"
    },
    {
      "commit": "703c282d1d53021de9dddf1d5c1318e70e81c7fc",
      "tree": "fe8b8a5ff9ddd98a4eb5d4496e1a18bd38de5598",
      "parents": [
        "70d95b4cabcabff7eda37e9e8348744891008e65"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 30 12:23:16 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 30 12:23:16 2015 +0000"
      },
      "message": "A generic jni method can be instrumented.\n\nFixes tracing 119-noimage-patchoat test.\n\nChange-Id: Ifc9709b714dbad6e087d327fdde7a008e5e731d3\n"
    },
    {
      "commit": "9507fa2c9545156747a5eb248bc1af3159bfd8c8",
      "tree": "f8facbd68dabc781cc4f8e76353a418ef633896e",
      "parents": [
        "c65d1f3d26a47e2fce3c3f8872e7942fec23f9b9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 29 15:08:57 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 29 15:22:00 2015 -0700"
      },
      "message": "Change a few places to use string version of GetTypeId\n\nGetTypeId is about 20% faster than GetStringId + integer GetTypeID\nsince it does less binary searches.\n\nChange-Id: I876c4ac89ab206acca217b2287b0197ef2e408c2\n"
    },
    {
      "commit": "49e439682918aa6b08948db303a71defbde7d800",
      "tree": "548e985f00161e348e05185f9310883d74963dc6",
      "parents": [
        "c1fc2b01a557b64ff28069ccfed0c72d7d37af20"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 16:16:16 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 16:16:16 2015 +0000"
      },
      "message": "A native method may be running and have the resolution stub.\n\nFixes 119-noimage-patchoat in interpreter mode.\n\nChange-Id: Ie8af557f7de21963441520b9d9caea8223378acc\n"
    },
    {
      "commit": "26705e2b1245b65989a0341b24c5dbf2658d4bb6",
      "tree": "11f73cfb6f1f484f2f27227d4d3ef0e85ab22ad7",
      "parents": [
        "903ef50ed03444b28899088f977d5c2d0ff67d49"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 12:50:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 15:03:13 2015 +0000"
      },
      "message": "Add support for collection ProfilingInfo objects.\n\nChange-Id: I8bb6069530253a7372acdf2b5aee71e1de644822\n"
    },
    {
      "commit": "1dad3f68b7f5a4a4cb2b281413357adc2309a8fd",
      "tree": "df482d1f65e55a9a228c925e96532942fb25eb47",
      "parents": [
        "fe97bfeabcf99d470e7d974a68ec6b6641648396"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 23 14:59:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 26 19:10:55 2015 +0000"
      },
      "message": "Support garbage collection of JITted code.\n\nChange-Id: I9afc544460ae4fb31149644b6196ac7f5182c784\n"
    },
    {
      "commit": "524e7ea8cd17bad17bd9f3e0ccbb19ad0d4d9c02",
      "tree": "ad07cc96f633bdae839ff2f1553d84b9c864a930",
      "parents": [
        "b697c447eb61c2e14315166ec3b0d16375ae403c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 17:13:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 11:52:11 2015 +0100"
      },
      "message": "Remove ArtCode.\n\n- Instead use OatQuickMethodHeader.\n- Various cleanups now that we don\u0027t have all those\n  ArtMethod -\u003e ArtCode -\u003e OatQuickMethodHeader indirections.\n\nAs a consequence of this cleanup, exception handling got a bit\nfaster.\n\nParserCombinators benchmark (exception intensive) on x64: (lower is better)\nBefore:\nParserCombinators(RunTime): 1062500.0 us.\nAfter:\nParserCombinators(RunTime): 833000.0 us.\n\nChange-Id: Idac917b6f1b0dc254ad68fb3781cd61bccadb0f3\n"
    },
    {
      "commit": "6bc4374e3fa00e3ee5e832e1761c43e0b8a71558",
      "tree": "38118523aa6b9a92fbdcd7bf1d32ca6185a3d3f0",
      "parents": [
        "16065ce56394c73c87dcb78ead4164ddc80fddb3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 18:11:10 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 13 12:05:27 2015 +0100"
      },
      "message": "Add an abstraction over a compiled code.\n\nThat\u0027s just step 1, moving code-related functions of ArtMethod to\nanother class. That class is only a wrapper on an ArtMethod, but will\nbe changed to be a wrapper around compiled code.\n\nChange-Id: I6f35fc06d37220558dff61691e51ae20066b0dd6\n"
    },
    {
      "commit": "1e9c1ffa2fc148fc8d0ee5eb1222dd894116e68d",
      "tree": "0caf77956d845e3f4e94cd994df0bc9626e1aeee",
      "parents": [
        "ada5ccd318fb02f9d5c7b20c9d6fed9ffa614961",
        "1147b9bd68323c753ed1a0b6106b205fd640c820"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 15 17:03:55 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 15 17:03:55 2015 +0000"
      },
      "message": "Merge \"Use image pointer size for profile info\""
    },
    {
      "commit": "1147b9bd68323c753ed1a0b6106b205fd640c820",
      "tree": "d14f8a47c66b78716d23b6cdcbc6e3e6da498361",
      "parents": [
        "b505997b2176bd29a108cb6c33d06d4ef29ba001"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 14 18:50:08 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 15 10:02:40 2015 -0700"
      },
      "message": "Use image pointer size for profile info\n\nMay fix some random crashes in dex2oat due to cross compilation.\n\nChange-Id: I633652500e8c7dfec38044dffd07eb467973d82a\n"
    },
    {
      "commit": "f1fbd5220551aeae1025a1058fd501ad41167425",
      "tree": "241a01e13cf76b9004f627e936368b33e4bc1681",
      "parents": [
        "5836f8465ddd0a7f5cbeec9c30d739bd0619867f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 17:57:31 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 17:58:20 2015 +0100"
      },
      "message": "Rename parameter in ArtMethod::ToNativeQuickPc\n\nAddressing a nit for CL Idb2b34aabf1ac7249c30a00806af7d63d7e682dd.\n\nChange-Id: I1112312b90aa6123e7e9ca8f67132dd7cc57a62f\n"
    },
    {
      "commit": "72f7b880d5d0057b9fac3a51ef3a0f22909bc633",
      "tree": "5a5a92f0c52bd334f662ba2f51885540874973bb",
      "parents": [
        "b505997b2176bd29a108cb6c33d06d4ef29ba001"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 17:00:52 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 17:50:43 2015 +0100"
      },
      "message": "ART: Fix 004-ReferenceMap run test\n\nThis patch adds a new option to ArtMethod::ToNativeQuickPc to select\nthe order of iteration over stack maps. The method is only used by\nthe runtime to find native_pc of catch blocks, but also by the\n004-ReferenceMap test which uses it to find native_pc of a safepoint.\n\nChange-Id: Idb2b34aabf1ac7249c30a00806af7d63d7e682dd\n"
    },
    {
      "commit": "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "659562aaf133c41b8d90ec9216c07646f0f14362"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\n\nThe original CL triggered b/24084144 which has been fixed\nby Ib72e12a018437c404e82f7ad414554c66a4c6f8c.\n\nThis reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362.\n\nChange-Id: Id8980436172457d0fcb276349c4405f7c4110a55\n"
    },
    {
      "commit": "659562aaf133c41b8d90ec9216c07646f0f14362",
      "tree": "be1beae390262bf2f5a17bfa44de93081a849d07",
      "parents": [
        "b022fa1300e6d78639b3b910af0cf85c43df44bb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "message": "Revert \"ART: Register allocation and runtime support for try/catch\"\n\nBreaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate.\n\nThis reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb.\n\nChange-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f\n"
    },
    {
      "commit": "b022fa1300e6d78639b3b910af0cf85c43df44bb",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "e481c006e8b055a31d9c7cff27f4145e57e3c113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:47:48 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 20:42:58 2015 +0100"
      },
      "message": "ART: Register allocation and runtime support for try/catch\n\nThis patch completes a series of CLs that add support for try/catch\nin the Optimizing compiler. With it, Optimizing can compile all\nmethods containing try/catch, provided they don\u0027t contain catch loops.\nFuture work will focus on improving performance of the generated code.\n\nSsaLivenessAnalysis was updated to propagate liveness information of\ninstructions live at catch blocks, and to keep location information on\ninstructions which may be caught by catch phis.\n\nRegisterAllocator was extended to spill values used after catch, and\nto allocate spill slots for catch phis. Catch phis generated for the\nsame vreg share a spill slot as the raw value must be the same.\n\nLocation builders and slow paths were updated to reflect the fact that\nthrowing an exception may not lead to escaping the method.\n\nInstruction code generators are forbidden from using of implicit null\nchecks in try blocks as live registers need to be saved before handing\nover to the runtime.\n\nCodeGenerator emits a stack map for each catch block, storing locations\nof catch phis. CodeInfo and StackMapStream recognize this new type of\nstack map and store them separate from other stack maps to avoid dex_pc\nconflicts.\n\nAfter having found the target catch block to deliver an exception to,\nQuickExceptionHandler looks up the dex register maps at the throwing\ninstruction and the catch block and copies the values over to their\nrespective locations.\n\nThe runtime-support approach was selected because it allows for the\nbest performance in the normal control-flow path, since no propagation\nof catch phi values is necessary until the exception is thrown. In\naddition, it also greatly simplifies the register allocation phase.\n\nConstantHoisting was removed from LICMTest because it instantiated\n(now abstract) HConstant and was bogus anyway (constants are always in\nthe entry block).\n\nChange-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e\n"
    },
    {
      "commit": "5550ca8bcc742b109d77e62f3a0877c667d894d3",
      "tree": "522c873c59b56fff0244e754dd869f18ccf485f4",
      "parents": [
        "dbd357086fdb7fce619d745fda4efd52377becdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 18:38:30 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 15:08:37 2015 +0100"
      },
      "message": "Record profiling information before Jitting.\n\n- Add a new instrumentation kind to record dynamic invokes.\n- Use the JNI entry point field to store the profiling data.\n- Record seen receivers for every dynamic invoke.\n\nChange-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c\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": "0747466fca310eedea5fc49e37d54f240a0b3c0f",
      "tree": "6d27922fa35330dd8d863ea56c82c5f04b711822",
      "parents": [
        "9ee5d6cdc14ac94b64ea1961bf221bad48746929"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:12:33 2015 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 26 16:54:32 2015 +0200"
      },
      "message": "Revert \"Revert \"Fix deoptimization with pending exception\"\"\n\nThis reverts commit 6e2d5747d00697a25251d25dd33b953e54709507.\n\nFixes the deoptimization path from compiled code (generated by the\nOptimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode.\nThis wrapper, called through the matching assembler stub\nart_quick_deoptimize_from_compiled_code, pushes the deoptimization\ncontext just before deoptimizing the stack.\n\nBug: 23371176\nBug: 19944235\nChange-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e\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": "6e2d5747d00697a25251d25dd33b953e54709507",
      "tree": "b68a418e93780ed55abd79dc8e76f3459e884254",
      "parents": [
        "54b62480636ae846d705fc180c7bd6cd08ec1e42"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:05:17 2015 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:05:17 2015 +0000"
      },
      "message": "Revert \"Fix deoptimization with pending exception\"\n\nThis reverts commit 54b62480636ae846d705fc180c7bd6cd08ec1e42.\n\nThis is causing test failures with Optimizing compiler.\n\nBug: 23371176\nBug: 19944235\nChange-Id: Ie3ffbcf2b6d2ca8bc93cb008a4e29a7567d04a7c\n"
    },
    {
      "commit": "54b62480636ae846d705fc180c7bd6cd08ec1e42",
      "tree": "d46a6c7bebb45ddbbd5b0a6818b3bb2ce49f48ed",
      "parents": [
        "f0170ded84fbcd3d9152cdbcf9ffbf74c71b03ba"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Aug 20 12:07:57 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:13:49 2015 +0200"
      },
      "message": "Fix deoptimization with pending exception\n\nWhen deoptimizing the stack, we set a fake exception in the current\nThread* (see method Thread::GetDeoptimizationException). On the next\nexception check, the QuickExceptionHandler will deoptimize the stack.\n\nThe issue is when we deoptimize while an exception is already pending\nin the current Thread*: setting the fake exception will clobber the\npending exception which is not correct. This happens in the\nartQuickToInterpreterBridge when returning from the interpreter and\nwe want to deoptimize the stack for debugging (like single-stepping).\n\nThis CL saves the pending exception before asking for deoptimization.\nThen the exception is restored just before executing the deoptimized\nframes with the interpreter.\n\nAlso cleans up the way we save deoptimization context (return value\nand pending exception).\n\nBug: 23371176\nBug: 19944235\nChange-Id: I7f4c8347b328817c452beda3399e210eba3a88a4\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": "00370827646cc21cb370c3e7e93f9c0cff4c30c2",
      "tree": "79fd9e7d08ad2055542cb1b64ebf26b00cb3af17",
      "parents": [
        "83f8b5bb9e9c52791a02a84d7b0889cab898efe4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 18 14:47:25 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 19 12:15:17 2015 -0700"
      },
      "message": "Use thread-local is_gc_marking flags for the CC collector.\n\nThe currently global is_marking flag is used to check if the read\nbarrier slow path needs to be taken for GC roots access. Changing it\nto a thread-local flag simplifies the fast path check and makes it\neasier to do it in assembly code. It also solves the issue that we\nneed to avoid accessing the global flag during startup before the heap\nor the collector object isn\u0027t allocated and initialized.\n\nBug: 12687968\nChange-Id: Ibf0dca12f400bf3490188b12dfe96c7de30583e0\n"
    },
    {
      "commit": "2a5c4681ba19411c1cb22e9a7ab446dab910af1c",
      "tree": "883ea0c07aad9efdb7c86960056cbefd7992b2bc",
      "parents": [
        "228b3973b2b24783c727a55fda2b4b80375f7207"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 14 08:22:54 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 17 15:42:25 2015 -0700"
      },
      "message": "ART: Some header cleaning around bit-utils\n\nTry to remove dependencies where they are not necessary.\n\nChange-Id: I5ff35cb17aea369bed3725b1610b50d7eb05b81e\n"
    },
    {
      "commit": "b1d8c314b55bb2df2b2bb72a3daaf5db65b7ebc7",
      "tree": "87e8252ee6ca23138f867989a098b7c4338c21a5",
      "parents": [
        "1d558db0bcd841140f6fe1c6ba2e9a6de131649d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:18:43 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:19:56 2015 -0700"
      },
      "message": "Revert \"cleanup: Replace pointers with out-parameters and fix-up formatting\"\n\nThis reverts commit a315f5c546b796f55f4872bb6efc15eb858d9639.\n\n--\n\nRevert \"runtime: cleanup class_linker out-parameters and formatting\"\n\nThis reverts commit bc1d78daa463572c5a770cdca858a3b51d8e1b7b.\n\n--\n\nRevert \"base: replace raw pointers for out-parameters with safer out\u003cT\u003e\"\n\nThis reverts commit fb326cffc679cab8eb873b9e44795706f023cb3c.\n"
    },
    {
      "commit": "bc1d78daa463572c5a770cdca858a3b51d8e1b7b",
      "tree": "d33ae78ec8b5e1f9e4b088545e346306d3c4f04e",
      "parents": [
        "8e568d079b052db118d83e6e89ea36ab4fa4bfb1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jul 30 16:39:45 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 31 16:03:00 2015 -0700"
      },
      "message": "runtime: cleanup class_linker out-parameters and formatting\n\n* Use out\u003cT\u003e instead of parameters\n* Fixes up some other signatures to be more correct\n* Reformat parameters to be one per line if they can\u0027t fit on one line\n* Reformat locks to be one per line if they can\u0027t fit on the decl line\n\nChange-Id: Ib71b08707d3ed0bb85299406c0b23a1de4e92a1c\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": "9523a3ed0ae6fa31cd978a3999fd88233218f98b",
      "tree": "f74eae1f98064e15ea6b239eb2548133423976fe",
      "parents": [
        "33e50d85a3e43072fad4f58369b71da73b8f966c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 11:51:28 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 12:58:00 2015 +0100"
      },
      "message": "Revert \"Revert \"Use the quickened metadata to compile -QUICK opcodes.\"\"\n\nThis reverts commit 8ab9a9010f3929acbb6c671008b8885b762b01e1.\n\nChange-Id: I1e654d5010ea2112982c3055fcb8c8f9c10e9ac8\n"
    },
    {
      "commit": "8ab9a9010f3929acbb6c671008b8885b762b01e1",
      "tree": "ed38799e9dcddb859158e013d1c5d840903789f6",
      "parents": [
        "4515a67434c9e3e1627586629a1f2aba1a99aa6a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:02:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:02:30 2015 +0000"
      },
      "message": "Revert \"Use the quickened metadata to compile -QUICK opcodes.\"\n\nBroke sdk build. Investigating.\n\nThis reverts commit 4515a67434c9e3e1627586629a1f2aba1a99aa6a.\n\nChange-Id: I6c1107ab626758570a59dc6bf3e4228c70a57196\n"
    },
    {
      "commit": "4515a67434c9e3e1627586629a1f2aba1a99aa6a",
      "tree": "94a31425ceac8234cce150588e5667fbedff6449",
      "parents": [
        "cced6ad152cf8ec13f38f2210c1b8445919232d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 16 14:58:58 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 16 18:36:05 2015 +0100"
      },
      "message": "Use the quickened metadata to compile -QUICK opcodes.\n\nChange-Id: I28a8d68921698bea81f54c95cc6e4c6d2c03f2b4\n"
    },
    {
      "commit": "f795869da0a1fa006fdcdacd8afb6149a63fc1a7",
      "tree": "b4cd23012e62b80788870f2c85c30fc6032299fa",
      "parents": [
        "430afefe1cced35cf5eb12ce7a6dcbfc5007c97e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 14:09:14 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 17:17:09 2015 +0200"
      },
      "message": "Follow up on CL 151605\n\n- Fixes return type of StackedShadowFrameRecord::GetType\n- Makes StackedShadowFrameType an enum class (scoped enum)\n- Moves DeoptimizationReturnValueRecord and StackedShadowFrameRecord\n  to thread.cc file and use forward declaration in thread.h header\n- Fixes tools/generate-operator-out.py for scoped enum classes.\n\nBug: 20845490\nChange-Id: I6b67e288b1db563699161e58ec2e2330d42dd8f5\n"
    },
    {
      "commit": "1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6",
      "tree": "af6ae612d43c50703292d39a8a0b37dda3f919a6",
      "parents": [
        "ccd6337f31d13706c602f3d9436e9b4025075b63"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 18 12:12:50 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jun 08 00:53:55 2015 -0700"
      },
      "message": "Fix nested deoptimization.\n\nHandle nested deoptimization cases. Create a stacked shadow frame\nrecords to keep track of deoptimization shadow frames. Shadow frames\nunder construction can be tracked in the same stack.\n\nBug: 20845490\nChange-Id: I768285792c29e7c3cfcd21e7a2600802506024d8\n"
    },
    {
      "commit": "f677ebfd832c9c614fea5e6735725fec2f7a3f2a",
      "tree": "051b3ba6343bdbca4929d728dd5c0341e4383a08",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:29:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 04 17:25:02 2015 +0100"
      },
      "message": "Cache stack map encoding\n\nOperations on CodeInfo and StackMap objects repeatedly read encoding\ninformation from the MemoryRegion. Since these are 3-bit-loads of\nvalues that never change, caching them can measurably reduce compile\ntimes.\n\nAccording to benchmarks, this patch saves 1-3% on armv7, 2-4% on x86,\nand 0-1% on x64.\n\nChange-Id: I46b197513601325d8bab562cc80100c00ec28a3b\n"
    },
    {
      "commit": "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": "2006b7b9b8e32722bd0d640c62549d8a0ac624b6",
      "tree": "338d673ee59a3c850333465c9ca4c617acc42af4",
      "parents": [],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 29 22:40:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 29 22:40:32 2015 +0000"
      },
      "message": "Merge \"Add unstarted runtime test for String.\u003cinit\u003e.\""
    }
  ]
}
