)]}'
{
  "log": [
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "01db5f78f627cc64f80b0c0a4eedd0a3dc8b46ca",
      "tree": "d1ee9267408e2f4d777d28bfc3f65c480f7ecd3f",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:05:49 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:05:49 2017 +0100"
      },
      "message": "Pass the logger to the JIT compiler.\n\nTo avoid effects of concurrent method entrypoints update,\njust pass the logger to the JIT compiler, which will invoke\nit directly with the pointer to the newly allocated code.\n\nTest: test.py --trace\nChange-Id: I5fbcd7cbc948b7d46c98c1545d6e530fb1190602\n"
    },
    {
      "commit": "0eb882bfc5d260e8014c26adfda11602065aa5d8",
      "tree": "e66dbebfb1e9a254c20954a2f2f98541aebfd5af",
      "parents": [
        "b5f5d746ac3f2c3088292395603cb1470e7749d2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 15 13:39:18 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 07 15:39:24 2017 +0100"
      },
      "message": "Use ArtMethod* .bss entries for HInvokeStaticOrDirect.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target\nTest: Nexus 6P boots.\nTest: Build aosp_mips64-userdebug.\nBug: 30627598\nChange-Id: I0e54fdd2e91e983d475b7a04d40815ba89ae3d4f\n"
    },
    {
      "commit": "a17d6792358ffae7323e9f4e54e1b16eda5d6e0b",
      "tree": "fb404b64c184e6ddad4eea9135e0f9b43af39824",
      "parents": [
        "4199aa0208309006cf8f37eea2c735c9364d409e",
        "6597946d29be9108e2cc51223553d3db9290a3d9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 23 10:19:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 23 10:19:50 2017 +0000"
      },
      "message": "Merge \"Use PC-relative pointer to boot image methods.\""
    },
    {
      "commit": "6597946d29be9108e2cc51223553d3db9290a3d9",
      "tree": "cea6647a45cc59fa1423751179e647124f269990",
      "parents": [
        "a654e0378a8d0bb149362399917e4da2959e6991"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 19 17:25:12 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 22 18:35:05 2017 +0100"
      },
      "message": "Use PC-relative pointer to boot image methods.\n\nIn preparation for adding ArtMethod entries to the .bss\nsection, add direct PC-relative pointers to methods so that\nthe number of needed .bss entries for boot image is small.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Nexus 6P boots.\nTest: Build aosp_mips64-userdebug\nBug: 30627598\nChange-Id: Ia89f5f9975b741ddac2816e1570077ba4b4c020f\n"
    },
    {
      "commit": "c239a2bb9474a1266c4882638fdb19056370e16d",
      "tree": "57fc8b0ba198cc6a6db65cbf48a600c38d269890",
      "parents": [
        "80dd30abe3fac52f6de4aec0543918d360f7d08a"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Thu Apr 27 15:31:37 2017 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri May 19 17:17:06 2017 +0100"
      },
      "message": "Create load store analysis pass\n\nThis CL separates load store analysis from LSE pass.\n\nThe load and store analysis in LSE pass records information\nabout heap memory accesses for arrays and fields.\nSuch information can also be used in the other optimizations like\ninstruction scheduling pass which can eliminate side-effect\ndependencies between memory accesses to different locations.\n\nTest: m test-art-host\nTest: m test-art-target\nTest: m test-art-host-gtest-load_store_analysis_test\nTest: 530-checker-lse\n\nChange-Id: I353a2b9a03b19bfa0e7ef07716d60bd4254c7ea7\n"
    },
    {
      "commit": "f7caf682c6b4769b2a3dd2f2241532b98709c1a3",
      "tree": "88ecbd1fa756e722fd79e2b696620cd61ac3305f",
      "parents": [
        "91f956c925f015b8cd355e8ec2a697a4ba69f7ab"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Wed Mar 01 16:07:02 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 08 08:33:07 2017 +0000"
      },
      "message": "Instruction scheduling for ARM.\n\nPerformance improvements on various benchmarks with this CL:\n\nbenchmarks     improvements\n---------------------------\nalgorithm                1%\nbenchmarksgame           2%\ncaffeinemark             2%\nmath                     3%\nstanford                 4%\n\nTested on ARM Cortex-A53 CPU.\n\nThe code size impact is negligible.\n\nTest: m test-art-host\nTest: m test-art-target\nChange-Id: I314c90c09ce27e3d224fc686ef73c7d94a6b5a2c\n"
    },
    {
      "commit": "6d7abbd2324f544c6b6da42bb6b9b531df0ce3cd",
      "tree": "669705a042bbc77c7963c117a9bf6f7a2308f9c8",
      "parents": [
        "0dfc315a096bf5678cb5182771e3fdcca8ea4433"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 13:19:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 14:18:45 2017 -0700"
      },
      "message": "ART: More header cleanup - method_verifier.h\n\nMove enumerations to own header. Move the compiler interface (of what\nthe compiler can tolerate) into its own header. Replace or remove\nmethod_verifier.h where possible.\n\nTest: mmma art\nChange-Id: I075fcb10b02b6c1c760daad31cb18eaa42067b6d\n"
    },
    {
      "commit": "032cacdbf32c50d3c43590600ed1e171a35fa93c",
      "tree": "c3e3eb480f46de2224fe58e8c30d8d5698238998",
      "parents": [
        "8827cec4193238c2261d83c4d2c0404cc20641f0"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Apr 06 14:40:08 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Apr 10 14:59:19 2017 -0700"
      },
      "message": "optimizing: do not illegally remove constructor barriers after inlining\n\nRemove the illegal optimization that destroyed constructor barriers\nafter inlining invoke-super constructor calls.\n\n---\n\nAccording to JLS 7.5.1,\n\n\"Note that if one constructor invokes another constructor, and the\ninvoked constructor sets a final field, the freeze for the final field\ntakes place at the end of the invoked constructor.\"\n\nThis means if an object is published (stored to a location potentially\nvisible to another thread) inside of an outer constructor, all final\nfield stores from any inner constructors must be visible to other\nthreads.\n\nTest: art/test.py\nBug: 37001605\nChange-Id: I3b55f6c628ff1773dab88022a6475d50a1a6f906\n"
    },
    {
      "commit": "9c4f0d8ffd8fb1ce31b3f8de5ca8da497e0bee9a",
      "tree": "e72395eb564f86dbc2d620ba03879a2ff1d56067",
      "parents": [
        "7851a5339d5ebd6fd2a3a8d40abc15aad694d024"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Apr 05 16:27:25 2017 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Apr 06 10:42:52 2017 +0200"
      },
      "message": "Clean up after MIPS got read barriers support\n\nThis enables checker tests, as well as compiler_driver_test and\nreflection_test for MIPS32 and MIPS64.\n\nTest: mma test-art-host-gtest\nTest: mma test-art-target-gtest in QEMU (MIPS64)\nTest: ./testrunner.py --optimizing --target in QEMU (MIPS64)\n\nChange-Id: Ic6fe5b17f7f2cd7e38e12fef25afccf9358b80e0\n"
    },
    {
      "commit": "1595815c2a914a78df7dfb6f0082f47d4e82bb36",
      "tree": "8fd53c3c91158b33e744e43cc655b2e2a180a3fc",
      "parents": [
        "4ba18fdfc2581a2328ab745c2707e3ed375d9e64"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Feb 09 19:08:30 2017 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Mar 28 23:35:34 2017 -0700"
      },
      "message": "MIPS: Implement read barriers.\n\nThis is the core functionality. Further improvements\nwill be done separately.\n\nThis also adds/moves memory barriers where they belong and\nremoves the UnsafeGetLongVolatile and UnsafePutLongVolatile\nMIPS32 intrinsics as they need to load/store a pair of\nregisters atomically, which is not supported directly by\nthe CPU.\n\nTest: booted MIPS32R2 in QEMU\nTest: test-art-target-run-test\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\nTest: \"testrunner.py --target --optimizing -j1\"\nTest: same MIPS64 boot/test with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP\nTest: \"testrunner.py --target --optimizing --32 -j2\" on CI20\nTest: same CI20 test with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP\n\nChange-Id: I0ff91525fefba3ec1cc019f50316478a888acced\n"
    },
    {
      "commit": "f6d4668c42933e2f85ddbc94e276c49db4e2b1dd",
      "tree": "3343addb8cde45eb4070d4876f26bef1002248dc",
      "parents": [
        "0bbb750f6ff9a52bc4649995fc78ebea87e31dd1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 28 17:41:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 24 14:02:54 2017 +0000"
      },
      "message": "Improvements in the Inliner.\n\n- Change from a depth limit to a total number of HInstructions\n  inlined limit. Remove the dex2oat depth limit argument.\n- Add more stats to diagnose reasons for not inlining.\n- Clean up logging to easily parse output.\n\nIndividual Ritz benchmarks improve from 3 to 10%.\n\nNo change in other heuristics. There was already an instruction budget.\nNote that the instruction budget is rarely hit in the \"apps\" I\u0027ve tried\nwith.\n\nCompile-times improve from 5 to 15%.\nCode size go from 4% increase (Gms) to 1% decrease (Docs).\n\nbug:35724239\ntest: test-art-host test-art-target\n\nChange-Id: I5a35c4bd826cf21fead77859709553c5b57608d6\n"
    },
    {
      "commit": "051071718085ce807a2e7c55278a8d723e238e86",
      "tree": "396c41b8b887544f2905c5f97055e2f123c67730",
      "parents": [
        "ed883a11b8cd7f3712bd30fca1e2b0fb641bff63"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 13:17:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 13:25:00 2017 -0700"
      },
      "message": "Delete SrcMap\n\nNo longer used. SrcMapElem is still used by elf_debug_line_writer.h.\n\nAddress previous comments from aog/351387.\n\nTest: make\n\nChange-Id: Ib1525168b14889abbdc78ba20c64f3223b140a51\n"
    },
    {
      "commit": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\n"
    },
    {
      "commit": "8d6768d47b66a688d35399d524ad5a5450e9d9d4",
      "tree": "0b8733baef378d9e060c8e74319a3846489590b2",
      "parents": [
        "fbe1516b91f2117bb9c7282aaea5537572f62dd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 10:13:21 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 13:55:13 2017 +0000"
      },
      "message": "Revert^6 \"Hash-based dex cache type array.\"\n\nFixed ImageWriter to write class table also if it contains\nonly boot class loader classes. Added a regression test and\nadded extra checks for debug-build to verify that dex cache\ntypes from app image are also in the class table. Removed\nsome unnecessary debug output.\n\nTest: 158-app-image-class-table\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f.\n\nChange-Id: I6a747904940c6ebc297f4946feef99dc0adf930c\n"
    },
    {
      "commit": "0b66d6174bf1f6023f9d36dda8538490b79c2e9f",
      "tree": "1cc4d2ae868745a65fd0489a6fb2f5f2fc9e880f",
      "parents": [
        "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:50:04 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 16:08:01 2017 +0000"
      },
      "message": "Revert^5 \"Hash-based dex cache type array.\"\n\nFor app images, ImageWriter does not add boot image\nclasses to the app image class table even though it\nkeeps them in the dex caches. The reason for that is\nunknown, the code looks OK.\n\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nAlso reverts \"Improve debugging output for a crash.\"\n\nThis reverts commits\n    bfb80d25eaeb7a604d5dd25a370e3869e96a33ab,\n    8dd56fcb3196f466ecaffd445397cb11ef85f89f.\n\nTest: testrunner.py --host\nChange-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84\n"
    },
    {
      "commit": "335f644f617d9837bc44219c70a2943f36c3f496",
      "tree": "359199d431816cd84d4ffa3491850e8b60b62ecf",
      "parents": [
        "742bc41f754e77a528f859babec4dfea179ca96e",
        "c4aa82c5b0aa921c51eaf6f6bbaff36501ea2cee"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 10:14:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 08 10:14:54 2017 +0000"
      },
      "message": "Merge \"Invoke typed arraycopy for primitive arrays.\""
    },
    {
      "commit": "c4aa82c5b0aa921c51eaf6f6bbaff36501ea2cee",
      "tree": "0da77f4e4a0fca7577f4c4c709353465d46c8581",
      "parents": [
        "3a791cee90451dc32d46f1b0a85fecc6f22f62bf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 06 14:38:52 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 07 14:32:54 2017 +0000"
      },
      "message": "Invoke typed arraycopy for primitive arrays.\n\nApps will always call the Object version of arraycopy. When\nwe can infer the types of the passed arrays, replace the method\nbeing called to be the typed System.arraycopy one.\n\n10% improvement on ExoPlayerBench.\n\nTest: 641-checker-arraycopy\nbug: 7103825\nChange-Id: I872d7a6e163a4614510ef04ae582eb90ec48b5fa\n"
    },
    {
      "commit": "92685a8a56fba7191612cf210f9c667b5ceda2af",
      "tree": "563009abe4387cb83c63320504148cedfc764bc3",
      "parents": [
        "5c90d0b0f332436f7ca5c028256bf5e91e9023d4"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Mar 06 11:13:43 2017 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Mar 06 15:20:04 2017 -0800"
      },
      "message": "Pass driver to loop opt. Add new side_effects phase.\n\nRationale:\nBreak-out CL of ART Vectorizer: number 3.\nThe purpose is making the original CL smaller\nand easier to review.\n\nBug: 34083438\nTest: test-art-host\nChange-Id: I7cece807ee4f5fcaeae41f1deed33ac263447b77\n"
    },
    {
      "commit": "b813ca14be33f7db8b7049c3b08a1eb776f25d1b",
      "tree": "4757b96eb5efd3a0e992f7f399ea479e7b5426c8",
      "parents": [
        "30e015c442c8033390c30d2f293604723c29bc75"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 16 22:08:29 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 27 10:27:42 2017 +0000"
      },
      "message": "Implement code sinking.\n\nSmall example of what the optimization does:\n\nObject o \u003d new Object();\nif (test) {\n  throw new Error(o.toString());\n}\n\nwill be turned into (note that the first user of \u0027o\u0027\nis the \u0027new Error\u0027 allocation which has \u0027o\u0027 in its\nenvironment):\nif (test) {\n  Object o \u003d new Obect();\n  throw new Error(o.toString());\n}\n\nThere are other examples in 639-checker-code-sinking.\n\nRitz individual benchmarks improve on art-jit-cc from\n5% (EvaluateComplexFormulas) to 23% (MoveFunctionColumn)\non all platforms.\n\nTest: 639-checker-code-sinking\nTest: test-art-host\nTest: borg job run\nTest: libcore + jdwp\n\nbug:35634932\nbug:30933338\n\nChange-Id: Ib99c00c93fe76ffffb17afffb5a0e30a14310652\n"
    },
    {
      "commit": "bfb80d25eaeb7a604d5dd25a370e3869e96a33ab",
      "tree": "96068dd9b9b3bc2e1bcc25d38bbd2420d5b0f1bb",
      "parents": [
        "7a49d93ee265b978ab29cae659e46d41da78459a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 14 14:08:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:13:14 2017 +0000"
      },
      "message": "Revert^4 \"Hash-based dex cache type array.\"\n\nAdded extra output to the abort message to collect more data\nwhen we hit the crash. Added extra check when loading an app\nimage to verify that the class table isn\u0027t already broken.\n\nTest: testrunner.py --host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5.\n\nChange-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d\n"
    },
    {
      "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": "5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5",
      "tree": "be0e9fdeb90bcbad76b17b3aae4e746d977d80ee",
      "parents": [
        "518f373324f355f8e58440dfbc3f5a1f2244bde7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 18:32:04 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 13 19:34:54 2017 -0800"
      },
      "message": "Revert^3 \"Hash-based dex cache type array.\"\n\nAssert failing for \"earchbox:search\":\nF zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() !\u003d nullptr\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c.\n\nChange-Id: I39846c20295af5875b0f945be7035c73ded23135\n"
    },
    {
      "commit": "85c0f2ac03417f5125bc2ff1dab8109859c67d5c",
      "tree": "844952d237e35faa5c5a2357ab037366c8397115",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 02 16:42:38 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 10 11:23:11 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based dex cache type array.\"\n\nThe reason for the revert was fixed by\n    https://android-review.googlesource.com/332666 .\nWe now enable clearing dex cache types in test 155 from that\nCL. Also avoid an unnecessary store in LookupResolvedTypes()\nand prevent verifier from messing up the dex cache types.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\n\nThis reverts commit d16363a93053de0f32252c7897d839a46aff14ae.\n\nChange-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d\n"
    },
    {
      "commit": "85bd7a37139bf79ee664777db079b86a7105dac8",
      "tree": "c000e4944ba096f9794b5a31a2fc75c56d7db775",
      "parents": [
        "f85fc6bd9d65ef4689d6af797adb889da8cf15e3",
        "fbdfa6d7485534eedbd3fb32cf572529ebddb63c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 06 11:53:53 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 06 11:53:54 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Inline across dex files for JIT.\"\"\""
    },
    {
      "commit": "fe076a51b0498c2771341cc09a77db15b437328f",
      "tree": "6f6e0c250e2ecc450567f90a7792f51f8d6b3384",
      "parents": [
        "8781fe65fe41d971173bb2d05afe0dc00b5c08ce",
        "83c8e27a292e6e002fb3b3def75cf6d8653378e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 06 08:27:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 06 08:27:56 2017 +0000"
      },
      "message": "Merge \"Code refactoring around sharpening HLoadClass.\""
    },
    {
      "commit": "fbdfa6d7485534eedbd3fb32cf572529ebddb63c",
      "tree": "4835ed17e31443c3e220a2eaff8d88c6c16b9cd0",
      "parents": [
        "8781fe65fe41d971173bb2d05afe0dc00b5c08ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:43:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 06 08:26:48 2017 +0000"
      },
      "message": "Revert \"Revert \"Inline across dex files for JIT.\"\"\n\nbug:30933338\n\nThis reverts commit d16da8bd8106452eea82408748dc6b3fd64bcb80.\n\nChange-Id: I6a30354d6d00442cb1a542af063c7769865e369d\n"
    },
    {
      "commit": "83c8e27a292e6e002fb3b3def75cf6d8653378e8",
      "tree": "f49ff5c239f318a0290a0d1e0a5b4d9a1ee1d2ba",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 31 14:36:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 15:12:46 2017 +0000"
      },
      "message": "Code refactoring around sharpening HLoadClass.\n\nEven if the class is not accessible through the dex cache, we\ncan access it by other means (eg boot class, jit table). So rewrite\nstatic field access instruction builder to not bail out if a class\ncannot be accessed through the dex cache.\n\nbug:34966607\n\ntest: test-art-host test-art-target\nChange-Id: I88e4e09951a002b480eb8f271726b56f981291bd\n"
    },
    {
      "commit": "d90cd5c435743379e592464f5443d7e86a102d01",
      "tree": "daeb59237c9c51609f0ebab500467a840559d90d",
      "parents": [
        "3f50d3cda19792d3ac0137e59300b43c542e7dca",
        "d16da8bd8106452eea82408748dc6b3fd64bcb80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:36:08 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 03 10:36:09 2017 +0000"
      },
      "message": "Merge \"Revert \"Inline across dex files for JIT.\"\""
    },
    {
      "commit": "d16da8bd8106452eea82408748dc6b3fd64bcb80",
      "tree": "027c5bfdea98ec8726436e695b5eb4d9572bbaf5",
      "parents": [
        "f290c01c61f8a2979efa74ffcd2f54c5e426a3d0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:35:47 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 10:35:47 2017 +0000"
      },
      "message": "Revert \"Inline across dex files for JIT.\"\n\nBroke hikey build.\n\nbug:30933338\n\nThis reverts commit f290c01c61f8a2979efa74ffcd2f54c5e426a3d0.\n\nChange-Id: I3363d703c54d0f9b69197a29395cc08f60c8b2ac\n"
    },
    {
      "commit": "3f50d3cda19792d3ac0137e59300b43c542e7dca",
      "tree": "43bbe84313ac903182e5e521b854d05a0f5f4f0b",
      "parents": [
        "05dfc65a594abe0aeac44bf8b82e381e25eb61d9",
        "f290c01c61f8a2979efa74ffcd2f54c5e426a3d0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 09:04:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 03 09:04:50 2017 +0000"
      },
      "message": "Merge \"Inline across dex files for JIT.\""
    },
    {
      "commit": "f290c01c61f8a2979efa74ffcd2f54c5e426a3d0",
      "tree": "73c3f221a0d0299f8a595fe3e4b60aff2b632b27",
      "parents": [
        "de09f06e243f9548e58feec79b0cd249065a5f28"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 27 23:09:22 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 02 15:48:23 2017 +0000"
      },
      "message": "Inline across dex files for JIT.\n\nbug:30933338\ntest: ART_TEST_JIT\u003dtrue test-art-host test-art-target\n\nChange-Id: I4ac708d70d90c2db4139d99a75bf4665a810c206\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "22aa54bf8469689c7c6c33f15ff4df2ffba8fa15",
      "tree": "14204d55784dce3ffdd2641382a763afee85ced0",
      "parents": [
        "8116003cc9dd1e74fac1682eec547b8bb0afb061"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Tue Oct 18 09:32:29 2016 +0100"
      },
      "committer": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Wed Jan 25 14:25:20 2017 +0000"
      },
      "message": "AArch64: Add HInstruction scheduling support.\n\nThis commit adds a new `HInstructionScheduling` pass that performs\nbasic scheduling on the `HGraph`.\n\nCurrently, scheduling is performed at the block level, so no\n`HInstruction` ever leaves its block in this pass.\n\nThe scheduling process iterates through blocks in the graph. For\nblocks that we can and want to schedule:\n1) Build a dependency graph for instructions. It includes data\n   dependencies (inputs/uses), but also environment dependencies and\n   side-effect dependencies.\n2) Schedule the dependency graph. This is a topological sort of the\n   dependency graph, using heuristics to decide what node to schedule\n   first when there are multiple candidates. Currently the heuristics\n   only consider instruction latencies and schedule first the\n   instructions that are on the critical path.\n\nTest: m test-art-host\nTest: m test-art-target\n\nChange-Id: Iec103177d4f059666d7c9626e5770531fbc5ccdc\n"
    },
    {
      "commit": "f0acfe7a812a332122011832074142718c278dae",
      "tree": "49c4fc481cebd03323aaf0109066859165508303",
      "parents": [
        "91db41f315f6c2366b7098c531224bee01170364"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 09 20:54:52 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 10 21:26:23 2017 +0000"
      },
      "message": "Keep resolved String in HLoadString.\n\nFor the following reasons:\n- Avoids needing to do a lookup again in CodeGenerator::EmitJitRoots.\n- Fixes races where we the string was GC\u0027ed before CodeGenerator::EmitJitRoots.\n- Makes it possible to do GVN on the same string but defined in different\n  dex files.\n\nTest: test-art-host, test-art-target\nChange-Id: If2b5d3079f7555427b1b96ab04546b3373fcf921\n"
    },
    {
      "commit": "b0b051ad6c9fab511346882650d5d689f805a980",
      "tree": "fe02f128018f1aa55be5c0425295ae0ef670de2c",
      "parents": [
        "d54f43ca39dfa92f08c2d760123f185f0f65fb86"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Nov 17 09:04:53 2016 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Dec 19 14:26:33 2016 -0800"
      },
      "message": "CHA guard optimization (elimination/hoisting).\n\nTest: manual by checking the dump-cfg output.\n\nChange-Id: I254e168b9a85d2d3d23e02eea7e129c1bc9ab920\n"
    },
    {
      "commit": "ed015acdd0fbb1b837b3f74e8c5f624956189691",
      "tree": "b8ec86c504bf665cd59074fae49136dfe7c6c9f5",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 17:58:48 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 18:01:52 2016 +0000"
      },
      "message": "Flush JIT data cache when committing code.\n\nOtherwise, executing compiled code may see old data from\nthe data cache.\n\nTest: ART_TEST_JIT\u003dtrue test-art-target on arm/arm64\nTest: run-libcore-tests.sh (especially jsr166) on arm/arm64\nChange-Id: Id037c68897aa0e9ccacd4c5121f3743fb722c6f3\n"
    },
    {
      "commit": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "22384aeab988df7fa5ccdc48a668589c5f602c39",
      "tree": "daca06adfc92c93017618c3729af54ed40214ba4",
      "parents": [
        "0ee6447c63e354131dec78743ccabcbc964129e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 22:33:36 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 23:06:38 2016 +0000"
      },
      "message": "Revert \"Revert \"Add kJitTableAddress for HLoadClass.\"\"\n\nThis reverts commit d2d5262c8370309e1f2a009f00aafc24f1cf00a0.\n\nChange-Id: I6149d5c7d5df0b0fc5cb646a802a2eea8d01ac08\n"
    },
    {
      "commit": "d2d5262c8370309e1f2a009f00aafc24f1cf00a0",
      "tree": "15b542ac079f30043cd3654cf5d3c40ae3ea34d0",
      "parents": [
        "5b12f7973636bfea29da3956a9baa7a6bbe2b666"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 16:28:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 16:28:54 2016 +0000"
      },
      "message": "Revert \"Add kJitTableAddress for HLoadClass.\"\n\nOne test failure after merge.\n\nThis reverts commit 5b12f7973636bfea29da3956a9baa7a6bbe2b666.\n\nChange-Id: I120c49e53274471fc1c82a10d52e99c83f5f85cc\n"
    },
    {
      "commit": "5b12f7973636bfea29da3956a9baa7a6bbe2b666",
      "tree": "a2cd41c1d3c09abc594a76af11b7bebc302a2870",
      "parents": [
        "0dd27eb2b51d030866c25dbf8e7bb737eb35a888"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 09 11:26:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 11:50:24 2016 +0000"
      },
      "message": "Add kJitTableAddress for HLoadClass.\n\nThis new kind loads classes from the root table associated with\nJIT compiled code.\n\nAlso remove kDexCacheAddress, which is replaced by kJitTableAddress.\n\ntest: ART_TEST_JIT\u003dtrue test-art-host-jit test-art-target-jit\nChange-Id: Ia23029688d1a60c178bf2ffa7463927c5d5de4d0\n"
    },
    {
      "commit": "d4cc5b2127894475160b5d2bba9791dd21af5953",
      "tree": "04120b6077cacb5d16cb40161dfddd6170d8a64e",
      "parents": [
        "3acf36142594f0afb60e2eef82fdfab1b17b2463"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Nov 04 11:19:09 2016 +0000"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Dec 05 13:01:29 2016 +0000"
      },
      "message": "ARM: VIXL32: Implement Invoke, LoadClass, LoadString dispatch.\n\nImplemented dispatch optimizations for InvokeStaticOrDirect,\nLoadClass, LoadString (excluding cases that use Literals).\nPerformed a cleanup of VIXL backend.\n\nTest: export ART_USE_VIXL_ARM_BACKEND\u003dtrue \u0026\u0026 \\\n      mma test-art-host dist \u0026\u0026 mma test-art-target dist\n\nChange-Id: Ib37a6b7e7657196b13caec999d190be747857c1d\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": "f46501c6ad11025843682267c10f221323a206b1",
      "tree": "a5b77de81f5ab31e66082b02b225e7fe56877f98",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:45:36 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:21:31 2016 +0000"
      },
      "message": "Clear the right data pointer.\n\nInternally, stack_map_data is an offset of the roots_data allocation.\nPass both to the ClearData method, which will use the right pointer\nto deallocate.\n\nTest: test-art-host in debug mode\nChange-Id: Ibfe38e7f1853870076048427f2efe7121c11c136\n"
    },
    {
      "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": "dac7ad17c78387d15d7aefae0f852dddf5f37e34",
      "tree": "603b3ca74ba9144d217497417314fe863e2201ef",
      "parents": [
        "af524438b8a76264a23ec2d748e11eeded02abc7",
        "132d8363bf8cb043d910836672192ec8c36649b6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 21 10:14:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 10:14:07 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\""
    },
    {
      "commit": "132d8363bf8cb043d910836672192ec8c36649b6",
      "tree": "42ee8b08f0323e9762675333b50a4c218ecdefc7",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 16 09:19:42 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 14:31:30 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\n\nTest: 626-set-resolved-string, test-art-host, test-art-target\nTest: run-libcore-tests.sh\nTest: phone boots and runs\n\nThis reverts commit 3395fbc20bcd20948bec8958db91b304c17cacd8.\n\nChange-Id: I104b73d093e3eb6a271d564cfdb9ab09c1c8cf24\n"
    },
    {
      "commit": "2bbc953357ac5f62cc4ab2eb055e4392e47d0c3d",
      "tree": "aaaa0ea192d66bf71722fd71ec046b9abf3e884c",
      "parents": [
        "ecd8300b94938f22fa3988c58187acce9f091da8"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Oct 21 11:51:50 2016 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Nov 16 18:40:36 2016 +0000"
      },
      "message": "ARM: VIXL32: Arch specific operations.\n\nTests which now start to pass:\n  550-checker-multiply-accumulate\n  564-checker-negbitwise\n\nTest: export ART_USE_VIXL_ARM_BACKEND\u003dtrue \u0026\u0026 \\\n      mma test-art-host dist \u0026\u0026 mma test-art-target dist\n\nChange-Id: I0b057486a8e0e48afbc52dd18b61ea16c671bec2\n"
    },
    {
      "commit": "81cae78d1853893ff9c3ecea4b5100002a538eb7",
      "tree": "d32c8f7e57449381511ffb206f4a335c157ae597",
      "parents": [
        "e8fc2cedb85ce4a6747cddbbf4cf33288e0ba5b9",
        "3395fbc20bcd20948bec8958db91b304c17cacd8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:41:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 14 12:41:12 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\""
    },
    {
      "commit": "3395fbc20bcd20948bec8958db91b304c17cacd8",
      "tree": "e0d00b412961e2aaa0dff91317a9f4168189e5fb",
      "parents": [
        "75afcdd3503a8a8518e5b23d21b6e73306ce39ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT root tables.\"\"\"\n\nlibcore failures:\ndalvikvm32 F 11-14 03:04:06 14870 14870 jit_code_cache.cc:310] Check failed: new_string !\u003d nullptr\n\nThis reverts commit 75afcdd3503a8a8518e5b23d21b6e73306ce39ce.\n\nChange-Id: I5a6b6b48aa79a763d1ff1ba4d85d63811254787d\n"
    },
    {
      "commit": "4b050e817b929169e57661376793cff4c3ef421a",
      "tree": "56ee6c72dd7ed64fe4bcf701a0733c50b0289bc9",
      "parents": [
        "7fad15efba22817e9abb0f35b15aa2dd4715884c",
        "75afcdd3503a8a8518e5b23d21b6e73306ce39ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 09:13:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 14 09:13:47 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"JIT root tables.\"\"\""
    },
    {
      "commit": "75afcdd3503a8a8518e5b23d21b6e73306ce39ce",
      "tree": "b49afc4772fa72319475f96ed66d744bb03e803c",
      "parents": [
        "ee48b0f11df812d98de5c989e1f6d95a21515564"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 10:38:11 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 11 13:18:24 2016 +0000"
      },
      "message": "Revert \"Revert \"JIT root tables.\"\"\n\nAlso  contains Revert \"Support kJitTableAddress in x86/arm/arm64.\"\n\nThis reverts commit 4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035.\nThis reverts commit 997d1217830c0a18b70faeabd53c04700a87d7d9.\n\nTest: ART_USE_READ_BARRIER\u003dtrue/false test-art-host test-art-target\n\nChange-Id: I77cb1e9bf8f1b4c58b72d3cf5ca31ced2aaa1ea3\n"
    },
    {
      "commit": "00c141aaa07b95a8c2c492b617871abd3cf7162a",
      "tree": "e4777db1006e6ac42a0669bf5383b61235835dce",
      "parents": [
        "ee59d46595bb860fea26122f47f8797d2d0fe5f4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 15:19:15 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 16:55:22 2016 +0000"
      },
      "message": "Dump c1visualizer output before and after each pass.\n\nIn order to get the last state of a graph before a crash.\n\nTest: dex2oat --dump-cfg\nChange-Id: I461a26a47a170b95fadb9da21a443af26fe52181\n"
    },
    {
      "commit": "20c56a8cded87092d40097323fcf9eaf50f64e4b",
      "tree": "1dd41fe4afd736aa0cfb8d6ef8ed4835a4dbe4af",
      "parents": [
        "2e7f085990423a706137c1d42673226ee7a7194f",
        "4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 17:30:49 2016 +0000"
      },
      "message": "Merge \"Revert \"JIT root tables.\"\""
    },
    {
      "commit": "4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035",
      "tree": "1220262d0ed22d91777c68a8a568348cddf820cb",
      "parents": [
        "ac3ebc3150760425ed00abd56da48f9a6e0666bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "message": "Revert \"JIT root tables.\"\n\nMay be the offender for jit-gcstress failure of 902.\n\nThis reverts commit ac3ebc3150760425ed00abd56da48f9a6e0666bc.\n\nChange-Id: I9ea6c9236fd1729fed7d1868dd8a111172932308\n"
    },
    {
      "commit": "0864c98b10cb8ca306671cabaa9be2a4068a2711",
      "tree": "56d9bb3097c51d5efbf67cd7516b0bc3c8e16616",
      "parents": [
        "4c45ffaf6329d40e3249894cfb078d3d274ddfd5",
        "ac3ebc3150760425ed00abd56da48f9a6e0666bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 09:55:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 09:55:45 2016 +0000"
      },
      "message": "Merge \"JIT root tables.\""
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "ac3ebc3150760425ed00abd56da48f9a6e0666bc",
      "tree": "3c5c923bb00a898e035c0e7c4b8a6a684a578419",
      "parents": [
        "76ad2405b40547e0ab4fc401fb8303189ff783eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 05 13:13:50 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 08 17:21:30 2016 +0000"
      },
      "message": "JIT root tables.\n\nImplement root tables for the JIT. Each JIT compiled method\ngets a table allocated before the stack maps.\n\nThe table gets visited through Runtime::SweepSystemWeaks.\n\nImplement String roots for x86_64 as an example.\n\nTest: test-art-host test-art-target\n\nChange-Id: Id3d5bc67479e08b52dd4b253e970201203a0f0d2\n"
    },
    {
      "commit": "2767f4ba2df934fea4c50a016e2955c2cf3f6b19",
      "tree": "2676ce7b335cc0ce197a4754ed62fc114647ba4d",
      "parents": [
        "77a0e4541a29c26dba21ed8c1ed1c29ef8d0ce4c"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Oct 28 15:03:53 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Nov 02 14:45:36 2016 -0700"
      },
      "message": "New instruction simplifications. Extra dce pass. Allow more per block repeats.\n\nRationale:\nWe were missing some obvious simplifications, which left performance\nat the table for e.g. CaffeineLogic compiled with dx (4200us-\u003e2700us).\nThe constant for allowing a repeat on a BB seemed very low, at the\nvery least it should depend on the BB size.\n\nTest: test-art-host\n\nChange-Id: Ic234566e117593e12c936d556222e4cd4f928105\n"
    },
    {
      "commit": "b0103ca545c285f07e30ba5fd1cc007332fef66b",
      "tree": "b9adcb3e16c9e9bc2de17571b3f03b6fd583ca61",
      "parents": [
        "b9b8cab87a275fad382fefbddd18daf495a58772"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 01 14:48:47 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 01 14:48:47 2016 +0000"
      },
      "message": "Flush the CFG visualizer output after writing to it.\n\nThis fixes test failures exposed by the ART Buildbot in\n608-checker-unresolved-lse (AOT) on the hammerhead-ndebug\nconfiguration.  The test used to fail because the CFG file\ndumped by second invocation of dex2oat on device would be\ntruncated (at the beginning of the disassembly section\nof the second compiled Dex file\u0027s contents) because of\ndex2oat\u0027s fast exit.\n\nInterestingly enough, this is the only case where this\nfailure has been observed, which seems to be due to a\ncombination of:\n- targeting (32-bit) ARM;\n- using a secondary Dex file (used to create an unresolved\n  access for that test);\n- compiling that secondary Dex file with dex2oat (ndebug\n  mode) instead of dex2oatd;\n- supporting multithread CFG graph dumping (by having the\n  write-to-file operation in a critical section) since\n  https://android-review.googlesource.com/#/c/296224/.\n\nTest: art/test/run-test -O --debuggable 608-checker-unresolved-lse\nChange-Id: Ifc1a23a3708b8645fd36c148312074bb9fe00cfc\n"
    },
    {
      "commit": "a0d81af89349dada4586a2770597e27e5c9f0f90",
      "tree": "4ae75d10be17c6fc45a1471a77ad9df0f41bff64",
      "parents": [
        "a908348b4388854dab0b655b55dbeac1ecec2949"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 27 12:04:57 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 28 08:10:50 2016 -0700"
      },
      "message": "ART: Make graph visualizer thread-safe\n\nStore visualizer to a temporary string stream during compilation.\nPrint to the final output on destruction, and do so under a lock.\n\nNote: the order of methods in the output is only guaranteed to be\n      deterministic with single-threaded compilation (-j1).\n\nTest: m\nTest: Compile multithread\nTest: Check output file that begin_compilation and end_compilation\n      are interleaved\nTest: Check that names of compiled methods match\n\nChange-Id: I7eb3be2f88333cf1f116fe71b77cffa1ac702208\n"
    },
    {
      "commit": "a8188191477b7b5b01a3c4426c51c48cd55f6678",
      "tree": "794ab1f6abf125263589acc037f01e8ba97004ef",
      "parents": [
        "6494dae35b15cc5b771daa7871e4621e6dec1744",
        "639cc8c7bbb7d8c341173bcf24604ccb4328acb8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 20 22:50:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 20 22:50:12 2016 +0000"
      },
      "message": "Merge \"Improve recognition of select-based period induction.\""
    },
    {
      "commit": "639cc8c7bbb7d8c341173bcf24604ccb4328acb8",
      "tree": "ae8181b94ddd145edaff141a2b351478161f1559",
      "parents": [
        "3941c882ea7b54772dec36a9a1b33e0b8a7474f7"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Oct 18 13:03:31 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Oct 20 14:14:17 2016 -0700"
      },
      "message": "Improve recognition of select-based period induction.\n\nRationale:\nSimilar to the previous CL, this helps to eliminate more dead induction.\nNow, CaffeineLogic, when compiled with dx (rather than jack) improves\nby a 1.5 speedup (9000us -\u003e 6000us).\n\nNote:\nWe need to run the simplifier before induction analysis to trigger\nthe select simplification first. Although a bit of a compile-time hit,\nit seems a good idea to run a simplifier here again anyway.\n\nTest: test-art-host\nChange-Id: I93b91ca40a4d64385c64393028e8d213f0c904a8\n"
    },
    {
      "commit": "2f2533f686f759ccd29d2712da2c7610382fb59f",
      "tree": "b4853d93d2427928bbf28aac135b939017360c9e",
      "parents": [
        "fc7a96464c58f2e3432cba2a3cfb19d84b033fdf",
        "a7812ae7939b199392f874b24a52454bbd0c13f2"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 20 11:59:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 20 11:59:43 2016 +0000"
      },
      "message": "Merge \"ARM: VIXL32: Pass initial ART tests with new code generator.\""
    },
    {
      "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": "a7812ae7939b199392f874b24a52454bbd0c13f2",
      "tree": "fcaff0417676c74ad7bf88e7c2571948e7eeef81",
      "parents": [
        "a497095b67c4ba2969d0b2a13f6959125c89d2bc"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Oct 17 10:03:36 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Oct 17 13:41:40 2016 +0100"
      },
      "message": "ARM: VIXL32: Pass initial ART tests with new code generator.\n\n- Implement enough codegen to pass ~70 art/tests.\n\n- When ART_USE_VIXL_ARM_BACKEND is defined:\n  - Blacklist known-to-fail target tests\n  - interpret-only everything except the tests themselves\n  - Set a flag to use the VIXL based ARM backend\n\nTest: export ART_USE_VIXL_ARM_BACKEND\u003dtrue \u0026\u0026 mma test-art-target \u0026\u0026 mma test-art-host\n\nChange-Id: Ic8bc095e8449f10f97fa0511284790f36c20e276\n"
    },
    {
      "commit": "e8a3c576301fd531d5f73a65fc8b84a63619d580",
      "tree": "a00e488f153505ee890c28873308d373e6ab231b",
      "parents": [
        "e8317d90c61dde07c12e404a2bc1fabf584905c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 11 16:52:17 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 13:30:54 2016 -0700"
      },
      "message": "Replace StackHandleScopeCollection with VariableSizedHandleScope\n\nVariableSizedHandleScope\u0027s internal handle scopes are not pushed\ndirectly on the thread. This means that it is safe to intermix with\nother types of handle scopes.\n\nAdded test.\n\nTest: clean-oat-host \u0026\u0026 test-art-host\n\nChange-Id: Id2fd1155788428f394d49615d337d9134824c8f0\n"
    },
    {
      "commit": "2f61867045ffbd0c38a4ecec5f59632004f7efff",
      "tree": "c7b4393d7cd7cbcd3272ff83d8424be02828251a",
      "parents": [
        "4aa6a93c46a959df1ab71ee7a68ad345338046ef",
        "97d7e1cd7f733cb33a0e238bec6d7ed525638cd1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 05 17:00:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 17:00:41 2016 +0000"
      },
      "message": "Merge \"Remove #include \"oat_file.h\" from class_linker.h .\""
    },
    {
      "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": "ebe167422f6197b9df0698bbeb944a0e4eea5f2d",
      "tree": "60bb0084030cadfed694261c36c5722f4f945869",
      "parents": [
        "2a5c5160771ad528bc9b3ac36ac5785a184c956d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 05 09:55:42 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 05 09:55:42 2016 +0100"
      },
      "message": "Properly scope HLoopOptimization\u0027s allocator.\n\nHOptimization classes do not get their destructor called,\nas they are arena objects. So the scope for the optimization\nallocator needs to be the Run method.\n\nAlso anticipate bisection search breakage by adding\nHLoopOptimization to the list of recognized optimizations.\n\nChange-Id: I7770989c39d5700a3b6b0a20af5d4b874dfde111\n"
    },
    {
      "commit": "281c681a0852c10f5ca99b351650b244e878aea3",
      "tree": "33036cbfb76ee497eedf60e0e5785a2267c9dd02",
      "parents": [
        "a845d07bbd57f8beaea8b4fb47192a3382ef25b2"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Aug 26 11:31:48 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Oct 03 15:15:27 2016 -0700"
      },
      "message": "A first implementation of a loop optimization framework.\n\nRationale:\nWe are planning to add more and more loop related optimizations\nand this framework provides the basis to do so. For starters,\nthe framework optimizes dead induction, induction that can be\nreplaced with a simpler closed-form, and eliminates dead loops\ncompletely (either pre-existing or as a result of induction\nremoval).\n\nSpeedup on e.g. Benchpress Loop is 73x (17.5us. -\u003e 0.24us.)\n[with the potential for more exploiting outer loop too]\n\nTest: 618-checker-induction et al.\n\nChange-Id: If80a809acf943539bf6726b0030dcabd50c9babc\n"
    },
    {
      "commit": "762869dee6e0eadab5be1c606792d6693bbabf4e",
      "tree": "8c986c621e8a5f3cf4e4e3b2cc13b400401ad89b",
      "parents": [
        "b4cf427734c6839b46d0d6037e3189a5e8aa1bdb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 15 15:28:35 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 30 10:44:31 2016 +0100"
      },
      "message": "Simplify our intrinsic recognizer.\n\n- Use the modifiers for storing the intrinsic kind.\n- Delete dex_file_method_inliner and its associated map.\n\nThis work was also motivated by the fact that the inline\nmethod analyzer leaks intrinsic tables, and even worse, might re-use\na table from one dex file to another unrelated dex file in the presence\nof class unloading and the unlikely event of the dex files getting\nthe same address.\n\ntest: m test-art-host m test-art-target\n\nChange-Id: Ia653d2c72df13889dc85dd8c84997582c034ea4b\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": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "68c981fad87720fae9c799b240141ce3c12cd5bf",
      "tree": "e55099aca20d8e7be13cf8eb3e48f37b0afd38bb",
      "parents": [
        "c4db1d10c586627d6c3af01e399b333a15344969"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 26 13:13:33 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 26 15:35:53 2016 +0100"
      },
      "message": "ARM/MIPS: Avoid dead dex cache arrays base for intrinsics.\n\nTest: Run ART test suite on host and Nexus 6.\nChange-Id: Ie2ad70f1e3f125eae5dad53a6384d405e0311505\n"
    },
    {
      "commit": "a518c150add36b71aaaf9b904d9f5b4ad61b8c8c",
      "tree": "7daa4cc425a5e29179e310646f9c99ce2ebf84b1",
      "parents": [
        "c8cbbf518d8a23fecaedb22c71e44ef3736b08e2",
        "ba6b679bd34449ec56508966706ca1b8d5e7cb17"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 25 12:19:36 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 25 12:19:36 2016 +0000"
      },
      "message": "Merge \"ARM: Purge Arm32Assembler.\""
    },
    {
      "commit": "b6a12832943fcf838d89134158208c8a2e47f49f",
      "tree": "c85a7b7f0469447f3ed41ca6c4a4a6b975a4fbbc",
      "parents": [
        "82a4c22ef4277faa08bf588c560c3dddcca559d2"
      ],
      "author": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Tue Aug 16 16:33:00 2016 -0700"
      },
      "committer": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Tue Aug 23 00:45:36 2016 +0000"
      },
      "message": "Use full pass name when building optimizations\n\nIf possible, use full pass name provided in --run-passes rather\nthan its base version.\n\nTest: m test-art-host -j32\n\n1. Prepare a run-passes file with content:\ndead_code_elimination$initial\ninstruction_simplifier\nx86_memory_operand_generation\n2. Run art for a dex file like:\nart -Xcompiler-option --run-passes\u003drun-passes -Xcompiler-option\n--dump-passes -classpath classes.dex Test\n3. Verify that dead_code_elimination$initial string is present in\ndump-passes output.\n\nChange-Id: I92d9ed0c8b919ea03f625f549123f546dffe546b\n"
    },
    {
      "commit": "ba6b679bd34449ec56508966706ca1b8d5e7cb17",
      "tree": "ec5985cc0f9e8a75c717513954d25d69e526065e",
      "parents": [
        "f606c3a687e3eae94296ba74d2d820b6e37692ff"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Mon Aug 15 14:22:07 2016 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Aug 19 10:39:23 2016 +0100"
      },
      "message": "ARM: Purge Arm32Assembler.\n\nUse Thumb2Assembler always. This originated from finding out that\nthe JNI tests are run using the Arm32Assembler however in real\nworld Thumb2Assembler is used for JNI. Therefore Arm32Assembler\ncode is dead except its own tests and the illegitimate use in\nJNI tests.\n\nChange-Id: I9ca6b83582bf97149a46690518ccb9312b1a3b68\n"
    },
    {
      "commit": "35938f90ef69fb030b18f2f7fb21f9b78620914b",
      "tree": "79619376bb6920c4a1b84e8f974a2abb54916eb7",
      "parents": [
        "3049b2a54b5b55d094fea603236f492c31b842e1",
        "e706070b271945d60229736a15bb712f3061fd15"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Aug 18 23:35:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 18 23:35:09 2016 +0000"
      },
      "message": "Merge \"Log optimization passes in verbose mode\""
    },
    {
      "commit": "e28c7d022b73cff58d0a9bcbaa5cfdc0950fe003",
      "tree": "479dbf47819e5b0ae5a6aabcceafe4e08e90d90c",
      "parents": [
        "c6efcaa17319e9f81def246c277fec523f5b85e0"
      ],
      "author": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Wed Aug 17 19:15:51 2016 -0700"
      },
      "committer": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Thu Aug 18 02:50:05 2016 +0000"
      },
      "message": "Fix optimizing compiler not building for svelte\n\nFixes compiler not building when some of the codegen paths\nare disabled.\n\nTest: mmma -j art ART_TARGET_CODEGEN_ARCHS\u003dsvelte\nm -j32 test-art-host\n\nBUG\u003d30928847\n\nChange-Id: I52c78e8a4e507f74b1f2a39352970079721b737e\n"
    },
    {
      "commit": "e706070b271945d60229736a15bb712f3061fd15",
      "tree": "b8951b25bf06733b5aa022aeff444033831f1654",
      "parents": [
        "3cc35c324b748c41be92a51eae68b77846b4c243"
      ],
      "author": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Tue Aug 16 17:31:19 2016 -0700"
      },
      "committer": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Thu Aug 18 01:36:04 2016 +0000"
      },
      "message": "Log optimization passes in verbose mode\n\nIntroduce verbose logging of optimization passes run during\ncompilation.\n\nTest: m test-art-host -j32\nart -Xcompiler-option --runtime-arg -Xcompiler-option -verbose:compiler\n-classpath classes.dex Test\nChange-Id: Iae98ce9dcafc252f2d0eec138aa05b34e424bd2a\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": "5319d3cca5a9b8e9e3f59421818272b966575172",
      "tree": "a90bd83b7e69bbff0be601088bb1c764125d8cf6",
      "parents": [
        "9cff32df754c428ef69ddb61e7600abfd4c75266"
      ],
      "author": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Mon Aug 01 17:48:59 2016 -0700"
      },
      "committer": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Mon Aug 08 11:24:26 2016 -0700"
      },
      "message": "Implement running user defined list of passes\n\nThis change introduces new dex2oat switch --run-passes\u003d. This switch\naccepts path to a text file with names of passes to run.\nCompiler will run optimization passes specified in the file rather\nthen the default ones.\n\nThere is no verification implemented on the compiler side. It is user\u0027s\nresponsibility to provide a list of passes that leads to successful\ngeneration of correct code. Care should be taken to prepare a list\nthat satisfies all dependencies between optimizations.\n\nWe only take control of the optional optimizations. Codegen (builder),\nand all passes required for register allocation will run unaffected\nby this mechanism.\n\nChange-Id: Ic3694e53515fefcc5ce6f28d9371776b5afcbb4f\n"
    },
    {
      "commit": "2cd05b7d9976c0c7fa74d58cb1608c809e5c37d3",
      "tree": "5cb7751e491aeae7357ed357f2a52702bf16854a",
      "parents": [
        "11a59a48474caa818ddf344575aa6afc51f45590"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Wed Aug 03 16:57:37 2016 -0700"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Sat Aug 06 01:21:14 2016 +0000"
      },
      "message": "Add a register allocation strategy compiler option\n\nTest: manually, on device.\n\nChange-Id: If007a1657dd5769ddef03691e0a19dbbe6ba1a29\n"
    },
    {
      "commit": "06a46c44bf1a5cba6c78c3faffc4e7ec1442b210",
      "tree": "fa82ec7a787200e475e567a51c2839349a513021",
      "parents": [
        "9755c262df1be7f5d5b98d038c8fd3734e974f9d"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Jul 19 15:00:40 2016 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Wed Jul 27 20:02:48 2016 -0700"
      },
      "message": "MIPS32: Improve string and class loads\n\nTested:\n- MIPS32 Android boots in QEMU\n- test-art-host-gtest\n- test-art-target-run-test-optimizing in QEMU, on CI20\n- test-art-target-gtest on CI20\n\nChange-Id: I70fd5d5267f8594c3b29d5a4ccf66b8ca8b09df3\n"
    },
    {
      "commit": "a69e790ad9751807d4a660bb4432b7ea79f0ad3b",
      "tree": "ce885e1cc3379d7f32c286b987d7d741ab571663",
      "parents": [
        "edbecee66ff9c550cb82d4a5310b81c9def1e80e",
        "f5fb09035da52a07e9df81cdcb4b025edb0db113"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jul 25 17:53:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 25 17:53:51 2016 +0000"
      },
      "message": "Merge \"Make static helper methods member functions of OptimizingCompiler class\""
    },
    {
      "commit": "f5fb09035da52a07e9df81cdcb4b025edb0db113",
      "tree": "469a91dd42323b63b72895d844de0e11455939c0",
      "parents": [
        "633c22de95fe6f80c0dd3176e15de4de3ee4bc79"
      ],
      "author": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Fri Jul 22 13:33:11 2016 -0700"
      },
      "committer": {
        "name": "Wojciech Staszkiewicz",
        "email": "staszkiewicz@google.com",
        "time": "Fri Jul 22 15:42:56 2016 -0700"
      },
      "message": "Make static helper methods member functions of OptimizingCompiler class\n\nMake RunOptimizations, MaybeRunInliner and RunArchOptimizations member\nfunctions of OptimizingCompiler class.\n\nBoth versions of RunOptimizations are protected in preparation for\nbisection bug search CL.\n\nChange-Id: I596efa9ed3fccd1ed3798c6427cc166e2a5d28bd\n"
    },
    {
      "commit": "a92938a17b75eed3213030faaff9cfb321d47f37",
      "tree": "c6db649f7c1f6b6a86eb568212a721aac4ee6d96",
      "parents": [
        "89b03e0cfb03e3194e39f07fa8c1bd46e3b28a34",
        "328429ff48d06e2cad4ebdd3568ab06de916a10a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 09:17:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 09:17:16 2016 +0000"
      },
      "message": "Merge \"ARM: Port instr simplification of array accesses.\""
    },
    {
      "commit": "328429ff48d06e2cad4ebdd3568ab06de916a10a",
      "tree": "6290ac8afc3e93488382727f6765f548a2cfff04",
      "parents": [
        "79e73245140f4115039a7284b3797d701f368fe6"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Jul 06 16:23:04 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 09:16:43 2016 +0000"
      },
      "message": "ARM: Port instr simplification of array accesses.\n\nAfter changing the addressing mode for array accesses (in\nhttps://android-review.googlesource.com/248406) the \u0027add\u0027\ninstruction that calculates the base address for the array can be\nshared across accesses to the same array.\n\nBefore https://android-review.googlesource.com/248406:\n    add IP, r[Array], r[Index0], LSL #2\n    ldr r0, [IP, #12]\n    add IP, r[Array], r[Index1], LSL #2\n    ldr r0, [IP, #12]\n\nBefore this CL:\n    add IP. r[Array], #12\n    ldr r0, [IP, r[Index0], LSL #2]\n    add IP. r[Array], #12\n    ldr r0, [IP, r[Index1], LSL #2]\n\nAfter this CL:\n    add IP. r[Array], #12\n    ldr r0, [IP, r[Index0], LSL #2]\n    ldr r0, [IP, r[Index1], LSL #2]\n\nLink to the original optimization:\n    https://android-review.googlesource.com/#/c/127310/\n\nTest: Run ART test suite on Nexus 6.\nChange-Id: Iee26f9a0a7ca46abb90e3f60d19d22dc8dee4d8f\n"
    },
    {
      "commit": "8f49d4b04bab40bfd32ed7c8dfe501dea172bd79",
      "tree": "53ebbc7573f6ebd9c53e00f62e93358e9c4405af",
      "parents": [
        "360b4b0137ce5f0bb771e2ddbfd4735cae932565"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Thu Jul 14 13:24:00 2016 -0700"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Wed Jul 20 09:33:48 2016 -0700"
      },
      "message": "Refactor register allocation to be pluggable\n\nAllow alternate register allocation strategies to be implemented\nin subclasses of a common register allocation base class.\n\nTest: m test-art-host\n\nChange-Id: I7c5866aa9ddff8f53fcaf721bad47654ab221b4f\n"
    },
    {
      "commit": "e9288851eb6b62ece28f510d978d3793723b9a51",
      "tree": "3d422c4dfa7437b4891504ee452bf50b4852a9c5",
      "parents": [
        "161c866ca742049f5c916696e1503c697be30e87"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Thu Jul 14 14:08:16 2016 -0700"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Fri Jul 15 18:09:46 2016 -0700"
      },
      "message": "Rename current register allocator implementation\n\nThis will allow a cleaner commit in an upcoming\nrefactoring of register allocation.\n\nTest: m test-art-host\n\nChange-Id: If420c97b088b3c934411ff83373e024003120746\n"
    },
    {
      "commit": "ee8d971b14edfc1e0af9436fd223277df966e4c2",
      "tree": "2dc16ca40980cc716aba24d793eaa8731846a180",
      "parents": [
        "dedde3f10d7801ad862d1ca1de89135decff6a60"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Jul 12 11:13:15 2016 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Wed Jul 13 10:40:45 2016 -0400"
      },
      "message": "X86: Use memory to do array range checks\n\nCurrently, an HBoundsCheck is fed by an HArrayLength, causing a load of\nthe array length, followed by a register compare.\n\nAvoid the load when we can by comparing directly with the array length\nin memory.  Implement this by marking the HArrayLength as \u0027emitted at\nuse site\u0027, and then generating the code in the HBoundsCheck.\n\nOnly do this replacement when we are the only user of the ArrayLength\nand it isn\u0027t visible to the environment.\n\nHandle the special case where the array is \u0027null\u0027 and where an implicit\nnull check can\u0027t be eliminated.\n\nThis code moves the load of the length to the slow code for the failed\ncheck, which is what we want.\n\nTest: 609-checker-x86-bounds-check\n\nChange-Id: I9cdb183301e048234bb0ffeda940eedcf4a655bd\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "e3fb245fbdb5e91cf8a9750504df40bd629e0080",
      "tree": "a3882db92b7942b2edd6add3090b5c875fef2d09",
      "parents": [
        "1fdb340de4e608a88e8683c857cad5d0da2c16de"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue May 10 16:08:05 2016 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Fri Jul 01 14:10:14 2016 -0700"
      },
      "message": "MIPS32: Improve method invocation\n\nImprovements include:\n- CodeGeneratorMIPS::GenerateStaticOrDirectCall() supports:\n  - MethodLoadKind::kDirectAddressWithFixup (via literals)\n  - CodePtrLocation::kCallDirectWithFixup (via literals)\n  - MethodLoadKind::kDexCachePcRelative\n- 32-bit literals to support the above (not ready for general-\n  purpose applications yet because RA is not saved in leaf\n  methods, but is clobbered on MIPS32R2 when simulating\n  PC-relative addressing (MIPS32R6 is OK because it has\n  PC-relative addressing with the lwpc instruction))\n- shorter instruction sequences for recursive static/direct\n  calls\n\nTested:\n- test-art-host-gtest\n- test-art-target-gtest and test-art-target-run-test-optimizing on:\n  - MIPS32R2 QEMU\n  - CI20 board\n  - MIPS32R6 (2nd arch) QEMU\n\nChange-Id: Id5b137ad32d5590487fd154c9a01d3b3e7e044ff\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": "250a378d5a2152662e0fa820f2b38f794ddd3596",
      "tree": "51896bf755c3f7afd1e0616a9a54071bda6dccc0",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 20 16:27:53 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 25 09:29:21 2016 +0100"
      },
      "message": "Add flag to ArtMethod to skip compilation.\n\nTo ensure even the JIT will not try to compile methods with\nsoft failures a runtime_throw.\n\nbug:28293819\nbug:28313047\n\nChange-Id: Ie3fd71ded0b77de8dab1c3c825b867cb321b8873\n"
    },
    {
      "commit": "93205e395f777c1dd81d3f164cf9a4aec4bde45f",
      "tree": "1d08efd9b7bca9fe23df9ae9489c5dd575d3c6df",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 11:59:46 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 17:50:16 2016 +0100"
      },
      "message": "Move Assemblers to the Arena.\n\nAnd clean up some APIs to return std::unique_ptr\u003c\u003e instead\nof raw pointers that don\u0027t communicate ownership.\n\nChange-Id: I3017302307a0253d661240750298802fb0d9585e\n"
    },
    {
      "commit": "dee58d6bb6d567fcd0c4f39d8d690c3acaf0e432",
      "tree": "5a2f20546ca3c1544c44bee560062580e22dc79c",
      "parents": [
        "391e155a6936a05bd39b171031ec21d2dee62133"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 09:54:26 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 16:03:16 2016 +0000"
      },
      "message": "Revert \"Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\"\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nThis CL fixed an issue with parsing quickened instructions.\n\nBug: 27894376\nBug: 27998571\nBug: 27995065\n\nChange-Id: I20dbe1bf2d0fe296377478db98cb86cba695e694\n"
    }
  ],
  "next": "75563e34a4e64a8e805e6810b13e07f1cafec137"
}
