)]}'
{
  "log": [
    {
      "commit": "0d60a2b1eaa2cd2ec3481e49578b77405353efa1",
      "tree": "91f16b9321ef7631aff731b10da2024c6c9d2029",
      "parents": [
        "289bd1cccdb3aa37e2d129980f5c151f52f84897"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 17 14:31:56 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 18 08:37:10 2020 +0000"
      },
      "message": "Introduce an enum for the compilation kind.\n\nTest: test.py\nChange-Id: I5329e50a6b4521933b6b171c8c0fbc618c3f67cd\n"
    },
    {
      "commit": "7f7539b8ed0a31de1d1b6e1f0b730d55e37666a6",
      "tree": "d1611f06e3e468ff61c4d4bc349777b85b3a2e16",
      "parents": [
        "93adcb53c77f4f04dfebd30b94e8ea9936aa8abb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 06 16:20:54 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 10 07:32:49 2019 +0000"
      },
      "message": "Pass the memory region to allocate into to the compiler / allocation.\n\nTest: test.py\nBug: 119800099\nChange-Id: Ie3cba5abe3dd4f8756af5ecfd6c26320de314fe8\n"
    },
    {
      "commit": "038924b75f06b91c2a7e944196ca11f118ce182f",
      "tree": "fb3073918686ec6f54dce65d2697c0e46f05a272",
      "parents": [
        "03c6b174a4e412e9bb62935c4ee15b5445e517f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 19 15:09:35 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 20 10:40:05 2019 +0000"
      },
      "message": "ART: Reduce dependencies on CompilerDriver.\n\nPreparation for moving CompilerDriver and other stuff\nfrom libart-compiler.so to dex2oat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ic221ebca4b8c79dd1549316921ace655f2e3f0fe\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "acc56ac6a33a23abbf4a9a62528e352ea28c5407",
      "tree": "e1dd4569fd5b49879ec8dfd1b5ef5204a1084407",
      "parents": [
        "4ca6cc7ddcbd568b365c428371ea9675799775af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 09 08:45:24 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 11:10:08 2018 +0100"
      },
      "message": "Introduce a \u0027baseline\u0027 variant for the compiler.\n\nImplemented as a stripped down version of the optimizing compiler,\nnot running any optimization.\n\nAdjust code to still work with expectations in code generators.\n\nbug: 111397239\n\nTest: test.py --baseline\nChange-Id: I4328283825f9a890616e7496ed4c1e77d6bcc5dd\n"
    },
    {
      "commit": "1554417c7c43d41eff15372fb8dfc04a9dca5461",
      "tree": "4084cced9f27f95545cb177684baf153079537e0",
      "parents": [
        "d6de4564f4494c78955d667b21e4693844d7b818"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 15:09:06 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 19:41:43 2018 -0700"
      },
      "message": "ART: Move CopyOption to OatWriter\n\nAll the code has moved. Move the enum to where it\u0027s used.\n\nTest: mmma art\nChange-Id: Ia5d412acd1240365e74059681dbe8f62502382aa\n"
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "66ff8a8b82ff103d48d40e8dad01342c2d6f6d0d",
      "tree": "f1e177b7276d0387bc109fa12e6bd4cde060d5e9",
      "parents": [
        "878124c13b794900b0f5c437f52ac0f61538ab55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:27:55 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:31:13 2018 +0000"
      },
      "message": "Revert \"Revert \"Full-stack integrity: check vdex contents.\"\"\n\nbug: 30972906\n\nInitial revert due to \u0027check\u0027 file of the test needing updating for target tests.\n\nThis reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.\n\nChange-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f\n"
    },
    {
      "commit": "a19b7649faf8780737be7ce3ec48a12d81c6d69f",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "message": "Revert \"Full-stack integrity: check vdex contents.\"\n\nbug: 30972906\n\nTest fails on device.\n\nThis reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb.\n\nChange-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71\n"
    },
    {
      "commit": "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb",
      "tree": "596ef15de83798868d8e6c6cb6cbcb9a45e203e8",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 13:56:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 10:40:05 2018 +0000"
      },
      "message": "Full-stack integrity: check vdex contents.\n\nFor priv-apps, if a vdex on /data has dex code, it must\nbe because the APK has compressed dex code.\n\nFall back to APK if not.\n\nFor test convenience, update --copy-dex-files to also\ntake a \"always\" variant.\n\nbug: 30972906\nTest: 677-fsi\n\nChange-Id: I49f0eab46650145316a86de2971a3b9c140bcff7\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "92f7f3ce3b01f7c7df1c15b81c900e087248093f",
      "tree": "37647ac824e450f80d752539cabbe631ba795c75",
      "parents": [
        "5dcb0d2cabe9d67987a6a7477fb124cef92abefb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 11:38:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 15 14:29:52 2017 +0000"
      },
      "message": "Use intrinsic codegen for compiling intrinsic methods.\n\nWhen compiling an intrinsic method, generate a graph that\ninvokes the same method and try to compile it. If the call\nis actually intrinsified (or simplified to other HIR) and\nyields a leaf method, use the result of this compilation\nattempt, otherwise compile the actual code or JNI stub.\n\nNote that CodeGenerator::CreateThrowingSlowPathLocations()\nactually marks the locations as kNoCall if the throw is not\nin a catch block, thus considering some throwing methods\n(for example, String.charAt()) as leaf methods.\n\nWe would ideally want to use the intrinsic codegen for all\nintrinsics that do not generate a slow-path call to the\ndefault implementation. Relying on the leaf method is\nsuboptimal as we\u0027re missing out on methods that do other\ntypes of calls, for example runtime calls. This shall be\nfixed in a subsequent CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 67717501\nChange-Id: I640fda7c22d4ff494b5ff77ebec3b7f5f75af652\n"
    },
    {
      "commit": "e983b1658589e2a3d12620846b7e2351af26afa6",
      "tree": "4a5abce1e079b54262248fd809f02e97d120740a",
      "parents": [
        "77526ffcc5f25ef9c4aa4e87d416c22f2586cf17",
        "b0a6aeee250945b1d156ebab94053380f2e5a3c5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 10:02:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 10 10:02:44 2017 +0000"
      },
      "message": "Merge \"Record @{Fast,Critical}Native in method\u0027s access flags.\""
    },
    {
      "commit": "b0a6aeee250945b1d156ebab94053380f2e5a3c5",
      "tree": "7ddb52bb20997b8f1c81be3df2250949a088e697",
      "parents": [
        "0db16e00e3927445585a588499731c58c1ae1bef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 27 10:34:04 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 08:30:36 2017 +0000"
      },
      "message": "Record @{Fast,Critical}Native in method\u0027s access flags.\n\nRepurpose the old kAccFastNative flag (which wasn\u0027t actually\nused for some time) and define a new kAccCriticalNative flag\nto record the native method\u0027s annotation-based kind. This\navoids repeated determination of the kind from GenericJNI.\nAnd making two transitions to runnable and back (using the\nScopedObjectAccess) from GenericJniMethodEnd() for normal\nnative methods just to determine that we need to transition\nto runnable was really weird.\n\nSince the IsFastNative() function now records the presence\nof the @FastNative annotation, synchronized @FastNative\nmethod calls now avoid thread state transitions.\n\nWhen initializing the Runtime without a boot image, the\nWellKnowClasses may not yet be initialized, so relax the\nDCheckNativeAnnotation() to take that into account.\n\nAlso revert\n    https://android-review.googlesource.com/509715\nas the annotation checks are now much faster.\n\nBug: 65574695\nBug: 35644369\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I2fc5ba192b9ce710a0e9202977b4f9543e387efe\n"
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "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": "deae7db5864fa50c5a1cd6c232a17aeb986b36e1",
      "tree": "cdedad3d0f921e4f82fa7b65d55820455b7ac0ea",
      "parents": [
        "8d01c3708c4becb186979ed9377aed0fc2954d06"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 09:56:41 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:15:50 2017 -0700"
      },
      "message": "ART: Add missing namespace comments\n\nAdd closing namespace comments.\n\nBug: 32619234\nTest: m\nChange-Id: I1f50e09dcd1038c4b540b87e5c19e319c1f592e4\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": "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": "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": "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": "7f019717cc9632c15cba6e993fc0c3d32e487075",
      "tree": "78f70767190c3f4c22cf717c8627055445281c0d",
      "parents": [
        "a70a2e18ee0beaecb2c17a6340ce81821db36f5d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 26 16:09:13 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 26 16:09:13 2016 -0700"
      },
      "message": "Remove some unneeded header includes\n\nBug: none\nTest: Builds still work\nChange-Id: I6c83326cc12aa0e7825312b238f5e0ae694ccffc\n"
    },
    {
      "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": "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": "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": "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": "df739841b781dbd49c247e3795696389c4799020",
      "tree": "0e7dfce8d23f22aac9bf2b2849a087f36d5f58c3",
      "parents": [
        "f8a3dea642fe638f54d181b7ca280b79ee519398"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 23 16:59:07 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 24 09:29:18 2016 +0000"
      },
      "message": "Post-Quick cleanup: Remove CompilationUnit.\n\nChange-Id: I309411b0fffaaed1e218e2c34394bdf6e2f75b48\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": "d28b969c273ab777ca9b147b87fcef671b4f695f",
      "tree": "ca66ecfd809afdcd31443bbe50bf38a836302cc5",
      "parents": [
        "6bf6e438cd4746effce0b26d504c54100191c988"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 14:36:55 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 10:37:48 2015 +0000"
      },
      "message": "Code cleanup to avoid CompilerDriver abstractions in JIT.\n\nAvoids allocating a CompiledMethod.\n\nChange-Id: I35b4aa0d7c74daba68e827a01e71c300fce3b3bf\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "736b560f2d2c89b63dc895888c671b5519afa4c8",
      "tree": "d5aee7ac36f458a5f6e6d75fceb19f8963a71db5",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 14:54:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 13:27:19 2015 -0700"
      },
      "message": "Reduce how often we call FindDexCache\n\nBefore host boot.oat -j4 optimizing compile:\nreal  1m17.792s\nuser  3m26.140s\nsys 0m8.340s\n\nAfter:\nreal  1m12.324s\nuser  3m22.718s\nsys 0m8.320s\n\nChange-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3\n"
    },
    {
      "commit": "3887c468d731420e929e6ad3acf190d5431e94fc",
      "tree": "67dacb849e722e33e118b97714a48e467c06cbd5",
      "parents": [
        "6a5037eb3340e4c981fd7de3ff45167ee5b7fc82"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 12 18:15:42 2015 +0100"
      },
      "message": "Remove unnecessary `explicit` qualifiers on constructors.\n\nChange-Id: Id12e392ad50f66a6e2251a68662b7959315dc567\n"
    },
    {
      "commit": "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": "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": "3773cd046b1c34569f4711666788bf8a389c7857",
      "tree": "4fda463949679cfe434e0d5559919a5f01b4d1ac",
      "parents": [
        "6d80318c382a3490ab605b46fa7cb22c5e823fec"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 09:28:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 09:28:22 2015 -0700"
      },
      "message": "ART: Remove WriteElf from Compiler\n\nAs Portable is gone, we only have one elf_writer left. It also\nallows to put the decision for 32b vs 64b ELF into a central\npoint.\n\nChange-Id: Iae67d06df85268b3f0ee5725abc65edd23eb2499\n"
    },
    {
      "commit": "3c54b0023fca579aae006dfa607fb14de5846c42",
      "tree": "7b996231875fdfd54855a9aa86fe2494cdee1ec5",
      "parents": [
        "425ee0e1103b52bb72132df64f503725d1a15300"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 07 16:09:30 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 07 16:43:08 2015 -0700"
      },
      "message": "ART: Fix 64-bit ELF file support\n\nThe API wasn\u0027t cross-compile-safe, 32-bit patchoat would fail for\nnegative delta applied to a 64-bit ELF file.\n\nAdd 64-bit ELF file output to the compilers, behind a flag, currently\noff by default (preserving current behavior).\n\nBug: 20095017\nChange-Id: I2cde7b4c7cc83413c76692d7b745868d644a604c\n"
    },
    {
      "commit": "9c462086269324350516b3394d478f1d71a4b5d1",
      "tree": "4b2a29b0cda0ba50dfb09a6bcc83a4cfecf3769e",
      "parents": [
        "04a77807a657e86495e7ececf7dc530fa5003c4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 27 14:31:40 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 27 15:23:06 2015 -0800"
      },
      "message": "ART: Even more Quick cleanup\n\nRemove Backend.\n\nChange-Id: I247cc65ccda6a362ba1a8f5e73e7f12ecd980a87\n"
    },
    {
      "commit": "ee690a3dd364c025ebc1767d9f84097bb7473eec",
      "tree": "9fe546eba2c7be93017188b376789281f7b32aa9",
      "parents": [
        "3fea27b5f956a08b5b01f873b807fac98a5cc1f6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Dec 01 17:04:16 2014 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Dec 17 15:46:21 2014 +0000"
      },
      "message": "ART: Added Checker, a pattern matching test engine\n\nThis patch adds a Python script which implements a domain-specific\nmini-language similar to that of LLVM\u0027s FileCheck. It is primarily\nintended for writing tests for the optimizing compiler but could be\nconfigured for other use cases too. It is implemented from scratch in\norder to avoid dependency on LLVM.\n\nChecker tests are written in Java and dex2oat is invoked with a flag\nwhich dumps the CFG before and after each pass of the optimizing\ncompiler. The output is then compared against assertions in the\ntest\u0027s comments parsed by Checker. See comments in tools/checker.py\nfor more details about the currently supported language features.\n\nThis initial CL implements only one type of assertion - whether the\noutput contains lines matching a desired pattern in the given order -\nbut supports both plain text and regex matching and allows for\nequivalency testing by matching for the outcome of a previous match.\nSee the tests in compiler/optimizing/test/ConstantFolding.java for\nexamples.\n\nChange-Id: I1ad7431b399c38dc0391ccee74d2c643ba0b0675\n"
    },
    {
      "commit": "956af0f0cb05422e38c1d22cbef309d16b8a1a12",
      "tree": "b558c804d206dad8da648b815750f1b3c97610ae",
      "parents": [
        "407d77f344cfbdbbfb50531c5f0766bc0892e2fe"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 11 14:34:28 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 12 09:33:34 2014 -0800"
      },
      "message": "Remove portable.\n\nChange-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "b5f62b3dc5ac2731ba8ad53cdf3d9bdb14fbf86b",
      "tree": "fb2d33e43de1476af33112f263fd3c3a775917d0",
      "parents": [
        "29ce77f654412dbb5fb3d5949da4053952917101"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 30 10:58:41 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 31 12:21:53 2014 +0000"
      },
      "message": "Support for CONST_STRING in optimizing compiler.\n\nChange-Id: Iab8517bdadd1d15ffbe570010f093660be7c51aa\n"
    },
    {
      "commit": "53c913bb71b218714823c8c87a1f92830c336f61",
      "tree": "96aebfc9ae62eb1454b78286236567e2b6f3e5c7",
      "parents": [
        "e18aa4316eb9a15cd6b1051f27a1ce49967c170e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 12 23:19:23 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 22 21:20:08 2014 -0700"
      },
      "message": "ART: Clean up compiler\n\nClean up the compiler: less extern functions, dis-entangle\ncompilers, hide some compiler specifics, lower global includes.\n\nChange-Id: Ibaf88d02505d86994d7845cf0075be5041cc8438\n"
    },
    {
      "commit": "72d32629303f8f39362a4099481f48646aed042f",
      "tree": "0ff613168c3bf2e12799594c9211f9a1694119e2",
      "parents": [
        "47ebd77a6d249403a34d242908749b7446da2a82"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 06 16:20:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 06 16:23:19 2014 -0700"
      },
      "message": "Give Compiler a back reference to the driver.\n\nThe compiler driver is a single object delegating work to the compiler, rather\nthan passing it through to every Compiler call make it a member of Compiler so\nthat it maybe queried. This simplifies the Compiler API and makes the\nrelationship to CompilerDriver more explicit.\nRemove reference arguments that contravene code style.\n\nChange-Id: Iba47f2e3cbda679a7ec7588f26188d77643aa2c6\n"
    },
    {
      "commit": "b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf",
      "tree": "839d13ebfa7170967dd9b4abd434b7abda53da99",
      "parents": [
        "948740c1938860df055ddc801f20fd1707331e38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 28 16:47:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 29 14:36:28 2014 -0700"
      },
      "message": "Force inlining on trivial accessors.\n\nMake volatility for GetFieldObject a template parameter.\nMove some trivial mirror::String routines to a -inl.h.\n\nBug: 14285442\n\nChange-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92\n"
    },
    {
      "commit": "b34f69ab43aaf7a6e6045c95f398baf566ef5023",
      "tree": "4090a650de1de3806f6273f3828e77bef9704453",
      "parents": [
        "113f7a4b6093280e4783c69e06467f816a568e72"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 07 15:28:39 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 13 09:10:43 2014 +0000"
      },
      "message": "Add command line support for enabling the optimizing compiler.\n\nAlso run tests with the optimizing compiler enabled when\nthe file art/USE_OPTIMIZING_COMPILER is present.\n\nChange-Id: Ibc33eed62a43547bc3b9fe786d014c0d81b5add8\n"
    },
    {
      "commit": "113f7a4b6093280e4783c69e06467f816a568e72",
      "tree": "d06a96153e05c99d9345786ad388d2c3f715e57b",
      "parents": [],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 01:54:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 13 01:54:33 2014 +0000"
      },
      "message": "Merge \"Fix type of constant to be long.\""
    }
  ]
}
