)]}'
{
  "log": [
    {
      "commit": "dd309074fd4a6dc0dc275325b19670e24d64951d",
      "tree": "4d5c7222041fa52a99e6d43ecdb42cbcc83e6467",
      "parents": [
        "82a63734d3067ea0c96f8ba15bc40caaf798c625"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 31 07:47:37 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 31 07:47:37 2017 -0700"
      },
      "message": "ART: Enhance comment\n\nEnhance comment about ResolveClass instantation.\n\nAddresses comment for commit ae0b1f48ea9c65f946968cd99e34313cd2d43124.\n\nTest: m\nChange-Id: I6d2a2ad5eb938480b83a174a9f589e79ba6a0f52\n"
    },
    {
      "commit": "ae0b1f48ea9c65f946968cd99e34313cd2d43124",
      "tree": "25ad4c1cd09e9a9abc7c04e787ef47f6cb960419",
      "parents": [
        "fa830aa33e767420dcf705beb18c458df702502b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 17:36:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 17:39:16 2017 -0700"
      },
      "message": "ART: Instantiate templated functions\n\nFollow-up to commit 98be1a9d7280f82e533bc02d2df564da4c8f73a0.\nHopefully fixes the Mac build.\n\nTest: m\nChange-Id: Id92ce77fa452bb7da1e84f9d7ef151702da86a23\n"
    },
    {
      "commit": "629be51a9d4c2be648adb509af24091f314bbc33",
      "tree": "857f95a7d140e3eb7d8145e42935c29edec53b1f",
      "parents": [
        "98be1a9d7280f82e533bc02d2df564da4c8f73a0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 17:09:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 11:37:16 2017 -0700"
      },
      "message": "ART: Redo verification on class resolution failure\n\nDuring compile-time verification, when a class needs to be resolved\nand access to that class checked, if we can\u0027t resolve the class,\ndo a conservative access check and post an ACCESS_CLASS failure, if\nnecessary. This will trigger a re-verification at runtime, when the\nclass should be available.\n\nFix an invoke-polymorphic test to not trigger dead code. Fix method\nexpectations in verifier_deps_test.\n\nBug: 64681719\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: I3639639476f6938e10df1b0dac4545fe841a6ad2\n"
    },
    {
      "commit": "98be1a9d7280f82e533bc02d2df564da4c8f73a0",
      "tree": "5e9e0ad0e721023742fe3433e413023bee583953",
      "parents": [
        "7da4c401614344e3274434a242b8231126b17981"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 28 08:25:45 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 11:37:16 2017 -0700"
      },
      "message": "ART: Don\u0027t check access for method parameters\n\nRename ResolveClassAndCheckAccess to ResolveClass and add a CheckAccess\ntemplate parameter. Do not check access when checking the signature of\nthe method to be verified. A parameter itself is not an access and would\nnot trigger an IllegalAccessError. So only check on actual usage.\n\nBug: 64681719\nTest: m test-art-host\nChange-Id: I00aa37f5fb097b37e267bd4332638fa3092b4fe9\n"
    },
    {
      "commit": "7da4c401614344e3274434a242b8231126b17981",
      "tree": "d06f9db0b42bb2d9f4886cf15f418af341dbe212",
      "parents": [
        "8ef4b6121ea496d38c0b8aeebad3f1227f819b17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 25 11:30:48 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 30 11:35:19 2017 -0700"
      },
      "message": "ART: Redo verification on field resolution failure\n\nWhen compile-time verifying a field PUT and the field cannot be resolved,\nthe verification must be redone at runtime to ensure the field is not\nfinal. Post an ACCESS_FIELD error.\n\nAn example is\n\n  dex file A:\n    class A {\n      {\n         B b \u003d new B();\n         B.final_field \u003d 12345; // illegally modify final-after-new\n       }\n    }\n\n  dex file B:\n    class B {\n      final int final_field \u003d 0;\n    }\n\nwhen A is compiled without B.\n\nBug: 34966607\nBug: 64681719\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: Ibc14b003288f7acf3c865fcdef54a6d9ed4ac867\n"
    },
    {
      "commit": "afb664701734c6edbea07431382ee33f1677d42b",
      "tree": "bd67954a08efb59e7bee75dfe46d1230abe4443b",
      "parents": [
        "7f14c2ec37c70010d99cab6806d85018df56c555"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 01 09:54:49 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 02 14:58:10 2017 -0700"
      },
      "message": "Fix verifier checks on interface methods.\n\nWe were disallowing interfaces in the IsInheritedMethod even though\nthe function can be called with them. This could cause some failing\nDCHECKS if the verifier cannot find methods in some situations.\n\nWe also fixed a small issue in the verifier where we allowed\nnon-public java.lang.Object methods to be considered valid for\ninterface dispatch.\n\nTest: ./test.py --host -j50\nTest: Compile an app with bad bytecodes (See bug)\nBug: 64158483\nBug: 64274113\nChange-Id: Ia79f25be0001efc4069a411a0b34476bd0871803\n"
    },
    {
      "commit": "b45528c1f1b83ca8c970f439b54fbfcfda6908ea",
      "tree": "e8f493a7b21064d353d112ea1378d7819db385aa",
      "parents": [
        "2c2e13ec24bff70db6e49270b9d4d787add9925e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 14:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 27 15:30:47 2017 +0100"
      },
      "message": "ART: Refactor retrieval of types through ArtMethod.\n\nSplit Get*() functions that take a \"bool resolve\"\nargument into Lookup*() and Resolve*() functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I0b7eaa1fadc2ffa8c0168203790467f91a126963\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": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "631827d9b200c93f24816c6869d72426f9fed8e3",
      "tree": "9d5d768df39e21a2678d4b9148c5ec4d1c016911",
      "parents": [
        "d64fbfa3471c47d6628d6014bc4a3ac780abd26a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 10 14:53:47 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 04 11:57:13 2017 +0100"
      },
      "message": "Fixes for constant method handles\n\nAdd support for constant direct and interface method handles in the\nDEX file.\n\nAdd error handling for field and method resolution failures in\nClassLinker::ResolveMethodHandle().\n\nBug: 36957105\nTest: art/test/run-test --host 952-invoke-custom-kinds\nChange-Id: I91a2a23ba3365310eccb8cadd193b62f57e5811c\n"
    },
    {
      "commit": "e17cf243978ca7f5356e746ee460f0fcf04e04a6",
      "tree": "e8ad423bf1dee5756fec451ba22db749ed4f5472",
      "parents": [
        "2bc159ebd1115f71d80639e47fc38663aa84ba4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:05:51 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 19 11:11:12 2017 -0700"
      },
      "message": "Add field/method skipping helper functions to DexFile\n\nSpecifically added SkipStaticFields, SkipInstanceFields,\nSkipAllFields, SkipStaticMethods, and SkipVirtualMethods.\n\nAlso applied the helpers to the code base.\n\nTest: test-art-host\nChange-Id: Idda77f9a6e2564c2e588d2bbe11cc320063fdb32\n"
    },
    {
      "commit": "542bbf760b4f0b94e1e93ddad3e4d8d318705ab6",
      "tree": "40db8c70268c6eb6cfcc10a0bc16a65e8d0b7b28",
      "parents": [
        "0fd04a8b3ccde0c0bc17d8845a336207ec19c66e",
        "bf1cb77aa155d53808b4f65bac34deb3ce4bbf6d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 02 23:21:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 02 23:21:19 2017 +0000"
      },
      "message": "Merge \"ART: Use templates for VerifyInstruction\""
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "bf1cb77aa155d53808b4f65bac34deb3ce4bbf6d",
      "tree": "bc134f3cc9117314ea87557d4e5c7ca44dc470da",
      "parents": [
        "29e814295e363bebd155a51d5bfdc9281099bdff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 15:39:00 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:29:54 2017 -0700"
      },
      "message": "ART: Use templates for VerifyInstruction\n\nUse a template parameter instead of an explicit one.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: If0c21a8b902428456e445728afd443f0c88588df\n"
    },
    {
      "commit": "29e814295e363bebd155a51d5bfdc9281099bdff",
      "tree": "b55b96e92a44fe75586fa01f536c9a06316aa376",
      "parents": [
        "1171deea4cb2f2db67a310ea8797d06206b2bdea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 16:29:32 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 14:29:54 2017 -0700"
      },
      "message": "ART: Add some UNLIKELY in the verifier\n\nHint to the compiler that we assume that dex code is well-formed.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: If04a8392c7160747cd57da38ca785cdc18212d55\n"
    },
    {
      "commit": "74979b1a78a6d66fbdcf0545f17004cced69f196",
      "tree": "59d2f91930470998f20021378da903587570217b",
      "parents": [
        "b3937e31102538baf27a6e9088638c5e3ff1ca34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 09:28:06 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 16 09:54:22 2017 -0700"
      },
      "message": "ART: Add UNLIKELY in verifier\n\nINVOKE_POLYMORPHIC is unlikely, at this point. Perf shows compiler\noptimizations assuming the branch is taken.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: I161327d5c0399de75ff3fc79fa4d762cadbffe20\n"
    },
    {
      "commit": "1189516011d310c3d1aed469dd592ad2535f4921",
      "tree": "d819e8e8565aff6702c749d9a80861f96f6d5d35",
      "parents": [
        "ae08cc2c29f40d5028303390325d991b28a50d8a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:25:02 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:58:01 2017 -0700"
      },
      "message": "ART: Cache AoT state in verifier\n\nCache the runtime-only-instruction flag instead of computing it for\nevery single instruction.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: I417260ddf73ac714083609b292f036c28227a0b2\n"
    },
    {
      "commit": "e05cc662505e13f0c29e777bd99b7f49db9c670b",
      "tree": "fa094ed3b9e8340fc1bf48538b49be343e5c66c7",
      "parents": [
        "6fb693a39b263af3e62b97f8d9f2c2289cab3c1a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:17:30 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:57:33 2017 -0700"
      },
      "message": "ART: Add experimental constexpr\n\nAdd a constexpr flag to bypass a branch in the verifier when there\nare no experimental dex instructions. Guarantee the value with\nstatic_asserts.\n\nBug: 10921004\nTest: m test-art-host\nChange-Id: Ib77b6142c4d2debe4b4d4fec60c02d92b1e7349f\n"
    },
    {
      "commit": "6fb693a39b263af3e62b97f8d9f2c2289cab3c1a",
      "tree": "59487355e5e81ae552c0f00ab36f8eb16bac25a6",
      "parents": [
        "ed00ddb614d68559931d831cb74d3ba8f01599c9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 08:49:45 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 10:25:32 2017 -0700"
      },
      "message": "ART: Delete dex_instruction_visitor\n\nUnused visitor and test.\n\nTest: m test-art-host\nChange-Id: Idb9403a1d41b6b2142b1e10cd9172a1771d6c5be\n"
    },
    {
      "commit": "4e868fa7b8c47600695ff92deeb373674956a67d",
      "tree": "acdb92a2b765cc87a08459267e430a8866e608cf",
      "parents": [
        "4dc06e2ef900132d8395539842c35533da8b912a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 21 17:16:44 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 27 16:04:13 2017 +0100"
      },
      "message": "Make vdex and dexlayout compatible.\n\nUnquicken the vdex before dexlayout, to keep the dex integrity.\n\nbug: 37558732\nTest: run-test with speed-profile\n\nChange-Id: Ifcd5c2e4378ccb0df0a66d07f68df31d94b83220\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": "5a0336dd8926e1ddee517f7bf39fd6ed3c68f656",
      "tree": "d04da8c615716cabac429319a124b013ff0a39e4",
      "parents": [
        "7b96e726420f56e489dc1da929737171cf008986",
        "3a842f5adcbdeb3fd3db4206006a784ccabfc865"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 24 08:03:43 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 24 08:03:44 2017 +0000"
      },
      "message": "Merge \"ART: Add method verifier check for call site id\""
    },
    {
      "commit": "3a842f5adcbdeb3fd3db4206006a784ccabfc865",
      "tree": "3aaa5a0d63cd1c588c4a381db0b9c3ab7e0b68c5",
      "parents": [
        "6d3c61d8c6d2f96dec8345263c948fae3caa4e1a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Apr 21 15:24:10 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Apr 21 15:24:10 2017 +0100"
      },
      "message": "ART: Add method verifier check for call site id\n\nBug: 37248626\nTest: dex2oat on bug data\nChange-Id: Iaccd39ae9d4b3ab5134f7b5a9063a7efa2cab498\n"
    },
    {
      "commit": "9cb0c46402117e5fa83680289c8c097041296fb6",
      "tree": "e315160be2ee9052e460d6b4b2f9b825057ff0f4",
      "parents": [
        "38870a8a2717ccf1bcd3faddc53b1999985bb29f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 21 13:31:41 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 21 13:54:00 2017 +0100"
      },
      "message": "Fix verifier crash on abstract final class.\n\nRemove a check for erroneous class. It should not matter to\nthe verifier whether the class is just resolved, initialized\nor resolved erroneous. The check was also inherently racy\nand could yield different behavior based on the timing of\nthe verification.\n\nTest: 161-final-abstract-class\nTest: testrunner.py --host\nBug: 37248840\nChange-Id: Ic4d964050bbe52e3de4438ada9e75676956cb6b4\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": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\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": "fcbafb36eff1facdd4c2b60e5f56dd986c558901",
      "tree": "443a55d0ac3698e7eaf82395d6f3567b35d8474d",
      "parents": [
        "406402baa4900c36b3fe27b03bf9e04e978e50be"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 02 15:09:54 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 02 15:32:25 2017 -0800"
      },
      "message": "Ensure we don\u0027t attempt to compile obsolete methods.\n\nWe would run into issues if we tried to compile an obsolete method\nsince some of the information needed to do so is lost as we redefine\nthe declaring class. Since compiling these methods is unlikely to have\na major effect on the performance of the program we simply tell the\nJIT not to bother with them.\n\nAlso update all places to use the new SetDontCompile helper.\n\nTest: mma -j40 test-art-host\nTest: stress --cpu 60 \u0026; \\\n    while ./test/run-test --host --jit --gcstress --64 942; do ; done\n\nChange-Id: Ie70fee6f503818e7589571facf28ccc5e7ca79f8\n"
    },
    {
      "commit": "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": "942fd3130254d8276cbfe8e6201825e9c49e9b2c",
      "tree": "62dbcd85ab150604e2d72a3c2d0c3639a28c9b7a",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 20:52:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 17 16:12:15 2017 +0000"
      },
      "message": "Reduce using ArtMethod\u0027s dex_cache_resolved_types_.\n\nAvoid using the ArtMethod\u0027s dex cache type array shortcut\nin runtime, preparing for its removal. We do not completely\nremove the shortcut yet because it is still used by array\nallocation entrypoints.\n\nFix ArgArray::BuildArgArrayFromObjectArray in reflection.cc\nto not ask for the parameter type to be resolved. It should\nhave been previously resolved when retrieving the Method.\n\nAlso partially revert\n    https://android-review.googlesource.com/310717\nbecause it relied on the removed AIOOBE check in the removed\nArtMethod::GetDexCacheResolvedType(). The removed check was\nsimply defensive but it could not be triggered without some\nmemory corruption.\n\nTest: m test-art-host\nBug: 30627598\nChange-Id: Ic45a5ff8c66b79429e440cbc08d67bf22a083682\n"
    },
    {
      "commit": "ac141397dc29189ad2b2df41f8d4312246beec60",
      "tree": "a2f481463a14695bf9327fd2f549878ecf30c77b",
      "parents": [
        "5c9f90c5ecf2ff6f93ada0f7b18b46d866c59ea1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 13 11:53:47 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jan 15 15:18:07 2017 +0000"
      },
      "message": "Revert \"Revert \"ART: Compiler support for invoke-polymorphic.\"\"\n\nThis reverts commit 0fb5af1c8287b1ec85c55c306a1c43820c38a337.\n\nThis takes us back to the original change and attempts to fix the\nissues encountered:\n\n- Adds transition record push/pop around artInvokePolymorphic.\n- Changes X86/X64 relocations for MacSDK.\n- Implements MIPS entrypoint for art_quick_invoke_polymorphic.\n- Corrects size of returned reference in art_quick_invoke_polymorphic\n  on ARM.\n\nBug: 30550796,33191393\nTest: art/test/run-test 953\nTest: m test-art-run-test\n\nChange-Id: Ib6b93e00b37b9d4ab743a3470ab3d77fe857cda8\n"
    },
    {
      "commit": "0fb5af1c8287b1ec85c55c306a1c43820c38a337",
      "tree": "66239e7f745fae54e1630e91fb44a859bff615d6",
      "parents": [
        "02e3092f8d98f339588e48691db77f227b48ac1e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 18:58:15 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 19:17:33 2017 +0000"
      },
      "message": "Revert \"ART: Compiler support for invoke-polymorphic.\"\n\nThis reverts commit 02e3092f8d98f339588e48691db77f227b48ac1e.\n\nReasons for revert:\n\n- Breaks MIPS/MIPS64 build.\n- Fails under GCStress test on x64.\n- Different x64 build configuration doesn\u0027t like relocation.\n\nChange-Id: I512555b38165d05f8a07e8aed528f00302061001\n"
    },
    {
      "commit": "02e3092f8d98f339588e48691db77f227b48ac1e",
      "tree": "127dd23346206b0547b7c6453a776253252b3c6e",
      "parents": [
        "bc7d0deda4549f314e68ee3e0e6afd68c4a8fd06"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 01 10:33:51 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 16:26:43 2017 +0000"
      },
      "message": "ART: Compiler support for invoke-polymorphic.\n\nAdds basic support to invoke method handles in compiled code.\n\nEnables method verification for methods containing invoke-polymorphic.\n\nAdds k45cc/k45rc output to Instruction::DumpString() which\nwas found to be missing when enabling verification.\n\nInclude stack traces in test 957-methodhandle-transforms for\nfailures so they can be easily identified.\n\nBug: 30550796,33191393\nTest: art/test/run-test 953\nTest: m test-art-run-test\nChange-Id: Ic9a96ea24906087597d96ad8159a5bc349d06950\n"
    },
    {
      "commit": "857f058d4b7bd07c5c99eda416ad91516a10b4da",
      "tree": "aafff6fc7ac9578955661366e779c858945ae71c",
      "parents": [
        "0966558b075b9b454e1a7864306eb206bf0c0094"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 20 14:36:59 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Dec 20 16:15:24 2016 +0000"
      },
      "message": "Fix JIT crash due to unverified dead code\n\nThe JIT compiler assumes that it only gets completely verified code. To\nwork around potential unverified dead code it uses kAccDontBotherCompile\nflag set during runtime verification. However, if a class is verified\nduring a prior dex2oat the flag is not persisted and JIT happily things\nthat everything is ok.\n\nThe simplest fix is to mark classes with potential unverified dex code\nas verify at runtime. We only do this for apps and assume that\neverything in the boot image is well formed.\n\nTest: m test-art-host\nBug: 31000839\nChange-Id: I092d2e9553cd1c577036d78e8563a7a39d6cb7b9\n"
    },
    {
      "commit": "ad0c8bdc2c2e4d2a469455bcde7aeb5fc7482875",
      "tree": "fe5fe711a574386472408bda17b13a2ca2668c7e",
      "parents": [
        "132eb43396bdb0b9bdacf069289f019d85d358fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 19:31:26 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 19 19:31:26 2016 +0000"
      },
      "message": "Revert \"Fix JIT crash due to unverified dead code\"\n\nBroke method_verifier_test and image_test.\n\nBug: 31000839\n\nThis reverts commit 132eb43396bdb0b9bdacf069289f019d85d358fc.\n\nChange-Id: I85923e6bdb3e76f54978658aad816d4c79fc339e\n"
    },
    {
      "commit": "132eb43396bdb0b9bdacf069289f019d85d358fc",
      "tree": "097ad8979e90555fd46e49eda32fe4b0c579acfd",
      "parents": [
        "71464a10a434e5b8aac75998d08b2cdcbce57bab"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 28 20:09:56 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Dec 19 15:36:41 2016 +0000"
      },
      "message": "Fix JIT crash due to unverified dead code\n\nThe JIT compiler assumes that it only gets completely verified code. To\nwork around potential unverified dead code it uses kAccDontBotherCompile\nflag set during runtime verification. However, if a class is verified\nduring a prior dex2oat the flag is not persisted and JIT happily things\nthat everything is ok.\n\nThe simplest fix is to mark classes with potential unverified dex code\nas verify at runtime. We only do this for apps and assume that\neverything in the boot image is well formed.\n\nTest: m test-art-host-706-jit-skip-compilation\nBug: 31000839\n\nChange-Id: Ib73de1888581bb7202474cfd7aca70af4cc2cc00\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "7f7a074875114d0376923460948eb94eabaffe29",
      "tree": "b14d2cda6829419fae548584d07d962968271d80",
      "parents": [
        "1aab04df52529d3cabe28fd9f0cb008bf8180a56"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 14:15:25 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 14:15:25 2016 +0000"
      },
      "message": "Revert \"ART: Remove workaround in verifer after Jack update.\"\n\nThis reverts commit 1aab04df52529d3cabe28fd9f0cb008bf8180a56.\n\nChange-Id: Ifecad6a16f2c6dfeea99adcdca7da05fb71592a8\n"
    },
    {
      "commit": "1aab04df52529d3cabe28fd9f0cb008bf8180a56",
      "tree": "ac1ac451752b8e22934877a1083919fd3e0c2051",
      "parents": [
        "0bdba6c3017f2b3602b1e6fe5c9b8717d800791c"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 10:29:53 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 08 10:29:53 2016 +0000"
      },
      "message": "ART: Remove workaround in verifer after Jack update.\n\nBug: 33099829,30550796\nTest: m test-art-host\nChange-Id: I812809e7f043ec2a9651f22e970312e094b78966\n"
    },
    {
      "commit": "c571e73e21202cff0a8ec3bcfecb7d326e8648ef",
      "tree": "905cb5252b8bc8c335f569c869dfb8529301f40c",
      "parents": [
        "edcd7929e2bf521316fa5305109c330d563d87db",
        "cfa325e4ca65603fdb03a836a6cb394d23ed511f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 02 11:52:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 02 11:52:15 2016 +0000"
      },
      "message": "Merge \"ART: Add verifier support for invoke-polymorphic.\""
    },
    {
      "commit": "cfa325e4ca65603fdb03a836a6cb394d23ed511f",
      "tree": "f14e628cc90f7b03f8f227a30361993f3f594f11",
      "parents": [
        "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Oct 13 10:25:54 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 02 10:09:40 2016 +0000"
      },
      "message": "ART: Add verifier support for invoke-polymorphic.\n\nChange-Id: I1e1860cad80db46320c3ef5a9eaceb7529ea68d7\nBug: 30550796,33099829,33191712\nTest: make test-art-host\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": "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": "f8f36c246ee46522a7446e6f3a155e0fc5c7b859",
      "tree": "f202c1fe8aa1ae1a8b4f3d609ad4a011f7ffca4b",
      "parents": [
        "320ba91911c840528893e07b0af43d317cd4c9aa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 19 14:51:52 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 19 14:57:56 2016 -0800"
      },
      "message": "ART: Do not DCHECK in verifier when already aborting\n\nOnly log an error in FailOrAbort in the debug build when the\nruntime is already aborting.\n\nTest: m test-art-host\nChange-Id: I240f8bb7695e42d60b5805ebae2ab9dc72e5fdb1\n"
    },
    {
      "commit": "5c657fe8e3afdce77dc610446f37a43865cff702",
      "tree": "1f9fe466058b7512036b27a5b22f7720eb00729d",
      "parents": [
        "2ab98309c0fc7b3c7451205b2371db5c34b05d49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 03 15:12:29 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 03 15:13:06 2016 +0000"
      },
      "message": "Pass some arguments by const reference.\n\nTest: Rely on TreeHugger.\nBug: 32619234\nChange-Id: Ia26277893641dcb3562eaeacaec4e089a978d56a\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "8ee0b085bed13105c2ecc9caeb025eb758bcb27d",
      "tree": "2e53573d42f50baa32fa63a23734ff4ed662023d",
      "parents": [
        "d3a9ce9d30a59587413310e66ea51c8f7adb0a1d",
        "9823e788ed3368ecf826c44bfa16ccabfcbe32f8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 12:19:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 12:19:30 2016 +0000"
      },
      "message": "Merge \"Basic implementation of invoke / invoke-polymorphic.\""
    },
    {
      "commit": "9823e788ed3368ecf826c44bfa16ccabfcbe32f8",
      "tree": "59dee92dfd7518a98905c8313bdcb0a2ca2946cb",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:58 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Oct 05 10:34:59 2016 +0100"
      },
      "message": "Basic implementation of invoke / invoke-polymorphic.\n\nBasic switch interpreter support for invoke-polymorphic. This change\nallows for virtual/interface and static invokes on method handles.\n\nSupport for direct invokes (including constructors) and field\ngetters and setters will be added in follow up changes.\n\nBug: 30550796\nTest: make test-art-host\n\nChange-Id: Ieb3a991d974060d930d56467908d5c7c11d0e38e\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\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": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "0e8443995af602bcc2e70dcef1d20ee48acec934",
      "tree": "2d81b8db23bea139e40e33e4e9b8c69027fb1e56",
      "parents": [
        "c4cb3d532db8a500c1a15e8a0052895960259209"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Sep 08 13:43:31 2016 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Sep 21 11:42:21 2016 +0100"
      },
      "message": "Collapse ART\u0027s AbstractMethod class into Executable\n\nAfter the OpenJDK 8 pull there is now a common base class\nfor Method and Constructor that can be used instead.\n\nMethods that are abstract on Executable but on Android\nwere implemented in AbstractMethod are now consistently\nrenamed to \"{method}Internal\", declared final and\ngiven package-protected access.\n\nFor consistency with all other private, natively\nimplemented methods, the method getDeclaredAnnotations()\nhas been renamed getDeclaredAnnotationsNative().\n\nBug: 28666126\nBug: 31052885\nTest: make test-art-host and cts run of CtsLibcoreTestCases\nChange-Id: Ibfe6af6a47fe0cfffd0859ffbe58980aeb84e053\n"
    },
    {
      "commit": "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23",
      "tree": "12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6",
      "parents": [
        "0764877e21f1230e718923d5b84b048cd4346afa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 06 14:04:48 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Collect verifier dependencies\n\nMethodVerifier tests whether a DEX method is valid w.r.t. the classes\nin class path. Since the APK does not change across OTA updates, it\nis not necessary to analyze the bytecode again with MethodVerifier,\nas long as its dependencies on the class path (which may have changed)\nare satisfied.\n\nThis patch introduces VerifierDeps, a class path dependency collector,\nand adds hooks into MethodVerifier where classes/methods/fields are\nresolved and where assignability of types is tested.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f\n"
    },
    {
      "commit": "5fd66d0546805f0d86ec3365762c00b8dd3415f5",
      "tree": "82fb3cbb657f970a5c1d7c65e5567026816e284f",
      "parents": [
        "6a8c69f9d9d7840cac8cd17057d58c4cf91da4c6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 12 20:22:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 12 20:25:01 2016 -0700"
      },
      "message": "ART: Remove LogSeverity NONE\n\nRemove non-standard severity, and instead use a new enum to\nconfigure verifier logging.\n\nPartially reverts commit 7fe30233d32a872f5349e921dba65bd767ad994b.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: If52ee23c4902fbf2dabe7b232f6742448764ff8c\n"
    },
    {
      "commit": "15fc729ca5cd268a69bc1aa93f7d31c883dc310f",
      "tree": "4f81034bd9216c02f449d0a160aceec282dc57da",
      "parents": [
        "5ce327c75c2abc111c55c24557a021e50344bcae"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 02 14:13:18 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 02 14:13:18 2016 +0100"
      },
      "message": "verifier: Pass ClassDef as a reference\n\nTiny refactor. ClassDef should never be null, yet we pass it as\na pointer, check it is not null and dereference everywhere.\n\nChange-Id: Id89a1f599f1289d3cc00846306a890e06e438f88\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": "8ec3bd2b31ccbc9027b8e9b1949dd1804bb6d30f",
      "tree": "6cc457a060c7faade49229010bfe3119e55b254d",
      "parents": [
        "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:23 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 10 14:00:16 2016 +0100"
      },
      "message": "Instruction: Add new formats 45cc and 4rcc.\n\nThese are new 4 byte formats with the following properties.\n\n- The first three (16 bit) words of these instructions have the same\n  format as 35c and 3rc respectively.\n- The fourth 16 bit word encodes an additional constant index reference.\n\nThis change includes placeholder opcodes for invoke-polymorphic and\ninvoke-polymorphic/range which will be the first dex instructions that\nuse this new format. In addition to a method_idx that gives the invoked\nmethod, these instructions also provide a proto_idx which gives the\n(static) type signature of the call site.\n\nThe only reason these are included in this change is because we need\nan instruction with a given format to write a unit_test using the Instruction\nAPI.\n\nbug: 30550796\ntest: make test-art-host\n\nChange-Id: I02612ddee47169757175a8079d82f811f6545945\n"
    },
    {
      "commit": "14832efeb92334c562ebedef34e920d30e3cee69",
      "tree": "57d10c24966a46ae1c01861ee579ac6000326c45",
      "parents": [
        "c984725d0035e1925371757c38fed339b409e525"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 05 11:44:32 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 09 13:47:49 2016 +0100"
      },
      "message": "Revert experimental lambda feature.\n\nThis is a revert of the following changes :\n\n30c475a2046951a81769c2db0b2dad66cd71e189.\nlambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\n6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.\nlambda: Experimental support for capture-variable and liberate-variable\n\nfc1ccd740b7c8e96dfac675cfc580122cd1b40a6.\nlambda: Infrastructure to support capture/liberate-variable dex opcodes\n\ne2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.\nruntime: Add lambda box/unbox object equality\n\n2ee54e249ad21c74f29a161e248bebe7d22fddf1.\nruntime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\n158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.\ninterpreter: Add experimental lambda opcodes for invoke/create-lambda\n\na3bb72036f5454e410467f7151dc89f725ae1151.\nAdded format 25x to dexdump(2).\n\nPlus surrounding cleanups.\n\nTest: make test-art\nChange-Id: Ic6f999ad17385ef933f763641049cf721510b202\n"
    },
    {
      "commit": "ba65cc4a71273904294245cb37ce70e5bce797e3",
      "tree": "d53a7a816ec4c8e5bdbf80729ac945787b27bf2c",
      "parents": [
        "1a827a05afbffd5bee241f245f9aa3c40b4dbae4",
        "542451cc546779f5c67840e105c51205a1b0a8fd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "message": "Merge \"ART: Convert pointer size to enum\""
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "bffecdbb50c42c775219dfbf32132fe6a9067762",
      "tree": "7fa137d907144f6f114ee8f292b5376846842c07",
      "parents": [
        "0f290d764d7d6f05c4d818e2144858bb5886fc75",
        "0d638bb49054e5278855483290c7a5c7d683e153"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Aug 01 08:39:04 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 01 08:39:05 2016 +0000"
      },
      "message": "Merge \"ART: Fix RegTypeCache for instance field declaring class\""
    },
    {
      "commit": "db698f1add0bfe5e482b837b8dcf805ee957d694",
      "tree": "00071a455b8fe88cf0eeb4dd31f5e2f36a10861a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jul 25 17:52:22 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jul 29 15:53:18 2016 -0700"
      },
      "message": "Fix for interpreter crash on new instance of class\n\nRationale:\nFuzz testing found divergences between the compiler and interpreter\nwhich turned out to be caused by calling instance on java.lang.Class\n(this worked for compiler but crashed interpeter). Since RI does not\nallow this construct, solution is to force interpreter in this\nunlikely case and throw run time exception like RI. This fixes\ntwo cases found with fuzz testing. CL also includes\nfail-before/pass-after test.\n\nTest: 600-verifier-fails\n\nBUG\u003d29758098\n\nChange-Id: Ie80f7758def44e6655d28fec4c10c34ffa0fd60b\n"
    },
    {
      "commit": "0d638bb49054e5278855483290c7a5c7d683e153",
      "tree": "32bf8600721245dfa498c3eb160e8fc30512c852",
      "parents": [
        "93afc5f20a23ece78d6d6e506ed75775b8ef2113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 27 15:29:25 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jul 28 16:40:31 2016 +0100"
      },
      "message": "ART: Fix RegTypeCache for instance field declaring class\n\nFor bytecode instruction:\n\n  iget(-*) ClassB-\u003efield:type\n\nwhere the resolved field is actually declared in ClassA (ClassB\nextends ClassA), MethodVerifier would create a RegType representing\nClassA but cache it under the descriptor \"ClassB\".\n\nThis is a bug but does not have any implications on correctness\nbecause earlier resolution of ClassB (part of IGET handling) creates\nanother cache entry with the \"ClassB\" descriptor. Because the latter,\nwrong entry is always imprecise (ClassA cannot be final because ClassB\nextends it), either the earlier entry will be discovered or neither\nof them will be a match.\n\nDescriptor was replaced with the correct one and a DCHECK added when\ncreating a RegType to make sure the descriptor matches.\n\nBug: 30458218\nChange-Id: I19e1bdd5dd79e5eac558122a06b9128d0a5c021f\nTest: m test-art-host-run-test\nTest: art/test/run-test --host 800-smali\n"
    },
    {
      "commit": "31883646547a036f58b9fa0894eb0fac0bcf05a1",
      "tree": "2b78c3b85254464f9f73826c26054ccefddd44e4",
      "parents": [
        "6b631dc9662d39ca0f89ee4653d911f1f5291913"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 06 15:02:44 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 07 10:09:26 2016 -0700"
      },
      "message": "Do not hide instance field hard failure with soft failure\n\nRationale:\nYet another verifier inaccuracy found with fuzz testing.\nInstance field verification should proceed testing instance\nfield access after soft failures in cases where hard failures\ncould still follow. Failure to do so resulted in a compiler\ncrash (now made bit friendly with DCHECK as well).\n\nWith crash-before/pass-after test.\n\nBUG\u003d29126870\n\nChange-Id: I8674d6171158eaa2aeb0492b35dfafea76416cac\n"
    },
    {
      "commit": "b05263225f6df798db565df0ef9a539f272603ed",
      "tree": "12acac3488144071b6a06ce31a0c3951d59f40d3",
      "parents": [
        "bbfa42aa4c4b5cbc2ed2d8bdea6ff76da615a8aa"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 01 14:06:00 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 01 14:39:19 2016 -0700"
      },
      "message": "Fix bug in verifier: hard fail allowed following softfail\n\nRationale:\nDexfuzzing found a situation where a hard fail (not calling\nsuper in constructor) did not immediately bail, allowing\na soft fail to follow, causing a FATAL message later on.\n\nWith crash-before/pass after test.\n\nBUG\u003d29070461\n\nChange-Id: I46bd7a7457b9d408b254400aadac122539f2279c\n"
    },
    {
      "commit": "c2bc26513ea7c5e2dd9f3b102fb23fd207e4ce63",
      "tree": "cabc7c8d7fc27ea901d1d80548d7daaec3b2efd4",
      "parents": [
        "1e5dda549c11d02aff51f132760dd693e351ce85"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon May 23 14:58:49 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 24 09:48:21 2016 -0700"
      },
      "message": "Fix bug in verifier: soft fail was hiding hard fail.\n\nRationale:\nDexfuzzing found a situation where a soft fail (modifying\na final field) was hiding a hard fail (type error on that\nfield), which caused a crash in the compiler later on.\nAlso added a crash-before/pass-after regression test,\nso we don\u0027t add the return by accident later.\n\nBUG\u003d28908555\n\nChange-Id: I0cdc400be22a2d9eb00db8c8c6b25a85fbdac993\n"
    },
    {
      "commit": "a8d06f0a77fcacada77ec70cbcc19751b886fc44",
      "tree": "c4d831111af475aa7110deeb747821dbd5d55ffd",
      "parents": [
        "cdd55c2cf61dd77f8b8c797e2bd53750f88ffff2",
        "f663e341c550d1aa6f8f587d0ae0dbf7d254ff55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 10 08:13:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 10 08:13:28 2016 +0000"
      },
      "message": "Merge \"Workaround invokesuper underspecified behavior.\""
    },
    {
      "commit": "f663e341c550d1aa6f8f587d0ae0dbf7d254ff55",
      "tree": "cc919e9fb060ff73bbe5bdee8fdac6fc926a52ae",
      "parents": [
        "4e377e58066ccef401276d7d0985521e5e63d1fb"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Apr 04 17:28:59 2016 -0700"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 06 13:53:29 2016 +0100"
      },
      "message": "Workaround invokesuper underspecified behavior.\n\nThe verifier allows invokesuper on a class unrelated\nto the referring class. However, the runtime uses the vtable of\nthe super class of the referring class to lookup the ArtMethod.\nSince the receiver has no relation to the referring class, this lead\nto either jumping to a wrong method, or \"luckily\" throw a\nNoSuchMethodError if the vtable index is out of bounds of the super\nclass of the referring class.\n\nThis changes the runtime behavior to always throw NoSuchMethodError\nwhen hitting such invokesuper.\n\nAlso, we make the verifier consistent with the runtime by treating\nsuch calls unresolved.\n\nbug\u003d27627004\n\nChange-Id: I68486501a9625f91679078c5a980b39974ddbf1c\n"
    },
    {
      "commit": "56fdd0e63812764bbeb8cc52e376d3fd1f270052",
      "tree": "6988e995bf02f788066fb6e748cd3049fe87d31a",
      "parents": [
        "9d05b59a8595cf7eeece1795eb65b6b8706aad45"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 28 14:56:54 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 29 17:33:22 2016 -0700"
      },
      "message": "ART: Disambiguate access-checks mode from lock-counting\n\nLock-counting (when structural locking verification failed) is a\nspecial sub-mode of access-checks and must be disambiguated, because\nwe currently use access-checks mode class-wide when at least one\nmethod soft-fails, but do not stop the compiler/JIT to compile\nthe \"working\" methods. So we may end up in the access-checks\ninterpreter for a working method through deopt without knowing\nwhich locks are already held.\n\nBug: 28351535\n\n(cherry picked from commit f517e283d477dd2ae229ee3f054120c6953895db)\n\nChange-Id: I083032f064d88df8f8f0611ad8b57d1b39cd09fb\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": "8f4ade0f05c0203b33e5f421d1e3794ab6075a82",
      "tree": "60a6029ef116d7a71c8e8b32aa2388f48c48685c",
      "parents": [
        "2dcab783cd7a5a4351c50755b3b3de927e70ac38"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 15 10:09:16 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 15 17:14:38 2016 -0700"
      },
      "message": "ART: Fix nits for verifier change\n\nFollow-up to 6659624baadf2285ac5880fd28ffa31767dcae0b.\n\nBug: 28187158\nChange-Id: Ie81aff1cae1ff275faaaf4b858608e74b86d8622\n"
    },
    {
      "commit": "cc9b74f278d516d70782806494aafb517096e82a",
      "tree": "732b2e8dbe0a590338767d5d0e4e624c4d4f070d",
      "parents": [
        "0108f3d945cd5483217d7bf1df75ab5108d4555c",
        "6659624baadf2285ac5880fd28ffa31767dcae0b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 14 20:09:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 14 20:09:00 2016 +0000"
      },
      "message": "Merge \"ART: Make iget receiver mismatch hard verifier error\""
    },
    {
      "commit": "6659624baadf2285ac5880fd28ffa31767dcae0b",
      "tree": "c8102edd4d380fea54b370b702f41c716fa564ad",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 14 10:55:04 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 14 11:36:39 2016 -0700"
      },
      "message": "ART: Make iget receiver mismatch hard verifier error\n\nIf the classes are resolved, and still not match, this should be\na verify error.\n\nBug: 28187158\nChange-Id: I89c996ae15865674f21cf32ec378d37bac34861b\n"
    },
    {
      "commit": "b55f1ac873f9541f391625c13fe9129fbd38e74c",
      "tree": "996e696a06437f93c6f87e773e76d9e3c6a4fe8a",
      "parents": [
        "336dd6a0989dafb356be5f689028d983b0931335"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 12 15:50:55 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 13 21:12:42 2016 +0000"
      },
      "message": "Allow private methods in interfaces.\n\nPrivate methods may be generated in interfaces during compilation of\nsome default methods.  Change the verifier to allow these methods.\n\nBug: 27999840\n\nChange-Id: Ib8120a8f6cb036021334d9af0ed78ae372974ecb\n"
    },
    {
      "commit": "76ed99d5ec208d5adcd63b41c2c290194ee0ecf7",
      "tree": "acfc8f526561079c8389572af97c96fda7475450",
      "parents": [
        "8a31b7d44a13b1d7e71852dc3c992598698d351d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 28 18:31:29 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 29 17:46:17 2016 -0700"
      },
      "message": "ART: Postpone interface-related dex failure to version 37\n\nFor app compat, at least for now make the check for public-final-static\nof interface members not fail on dex file versions less than 37. This\nmay be changed in future releases.\n\nBug: 27831184\nChange-Id: If8ee50321298b951d4a78062c8eb583fec27394f\n"
    },
    {
      "commit": "7fe30233d32a872f5349e921dba65bd767ad994b",
      "tree": "6039f608c5753d549a30a07f4997cb8141eba970",
      "parents": [
        "bf9611f821697b14bf9e170f503c3f47613b046b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 25 16:58:00 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 28 16:57:30 2016 -0700"
      },
      "message": "ART: Make verifier fail log level adjustable\n\nTo help for build failures.\n\nChange-Id: I6c94dfb50177daa7d89902d78715ccec31bf0e45\n"
    },
    {
      "commit": "bf9611f821697b14bf9e170f503c3f47613b046b",
      "tree": "c5d6de40e988c1d92f51639243443b225e45808f",
      "parents": [
        "782d0464ddc92fd5d55a330068d2d255336c16ba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 25 16:58:00 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 28 15:51:07 2016 -0700"
      },
      "message": "ART: Clean up verifier\n\nClean up verifier post-Quick.\n\nChange-Id: I0b05e10dd06edd228fe2068c8afffc4b7d7fdffa\n"
    },
    {
      "commit": "8d8fc48664205e433cfa5540753b38043d918873",
      "tree": "5662cfe24c49f244672bf0f69575758791765314",
      "parents": [
        "0a4d6b9faaaa2652c42679df2a72c78485ed9c64"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 25 16:24:20 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 25 16:50:15 2016 -0700"
      },
      "message": "ART: Relax verifier checks\n\nOnly bail for unresolved merge types in a couple of cases. Follow-up\nto bb18a03c44d99b3cae232d445d56e80d8388cca9.\n\nBug: 27799205\nChange-Id: If448e14036bc5e245677e0cd8cdddee02b320525\n"
    },
    {
      "commit": "bb18a03c44d99b3cae232d445d56e80d8388cca9",
      "tree": "c015e2cb8ac1250160cbb68bc48a9fd2b8d3f6ca",
      "parents": [
        "af8e71d59b0ab5e79f53a608b62b3618e36e6a98"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 22 20:34:25 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 25 10:43:10 2016 -0700"
      },
      "message": "ART: Allow array-ness for unresolved merge types\n\nIn case component types aren\u0027t resolvable, array types won\u0027t be\neither. They then may be merged. The merge is still potentially\nan array type.\n\nEnsure that merging an unresolved array type with a primitive\narray type or a non-array type will be resolved to java.lang.Object.\n\nAdded tests.\n\nBug: 27799205\nChange-Id: I9beff75318814dddd842abd64ef9a5d2644d801e\n"
    },
    {
      "commit": "55ea94dc8a7417fa33db010826c1f37734f7d7f2",
      "tree": "0a505595b21817a677ec02ee684e3587899ff779",
      "parents": [
        "553ed05100f079203371da55e8a9d824b8e9948e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 15 09:50:26 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 16 14:36:28 2016 -0700"
      },
      "message": "Fix bug where verification could crash on unresolved types.\n\nBug: 27626708\n\nChange-Id: I708ee18215dccadc00ff3daa1e01c2830475ccae\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "7211aa62b2d000ad0e1e1a49bc30b962c2c069cd",
      "tree": "c3f1e053de1e22242a1a2000dc00635cc5b25879",
      "parents": [
        "66bdb9e03efa2055b6bfbe0a07ee873afe673fae"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 02 19:23:17 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 03 13:38:10 2016 -0800"
      },
      "message": "Add systrace to VerifyClass\n\nUseful to see if verifier is preempting anything.\n\n(cherry picked from commit 7f459f5859e5f01c92c3711e7d63c062f510b416)\n\nChange-Id: I594cbdc5c2f8934fc6c4fc7ee47fc4ccfc3c627d\n"
    },
    {
      "commit": "98e6ce44c700abd9375fe17f0aa31fea1e1e938b",
      "tree": "aa15b4398290918e5eb5227781b5aef5ecff9e0b",
      "parents": [
        "a1f65135cd2315159ac302f904ba0c5ba0d7fd0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 18:42:15 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 18 09:51:40 2016 +0000"
      },
      "message": "Remove string init map.\n\nPartial revert of the String init change.\n\n- Make Quick bailout in the presence of String allocation.\n- Rely on the compiler for knowing when dex registers alias.\n\nbug:27173201\n\nChange-Id: I0bf58ba3825c71cef110b53f3a0a6f567cb2ef9a\n"
    },
    {
      "commit": "361e04aaa5d3eca9f978a802ee44b1213f31da58",
      "tree": "d7dc0fb40c2fedbb9aad37fd8f9aba48fc4a6a26",
      "parents": [
        "88f38e9b4e9ba0aca3d6fd4823be3a7226c87f33"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 16 14:06:35 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 16 15:02:22 2016 -0800"
      },
      "message": "Add custom arena deleter for RegisterLine\n\nPreviously it protected by using sizeof(RegisterLine) but this was\nnot accurate due to register lines being variable sized.\n\nBug: 27156726\nChange-Id: Ia4b134b85a2e61993d17bd4f0eff60c89c164dc3\n"
    },
    {
      "commit": "4a2c8fc0fc47631550bc5ff8edd8221a3aea1b23",
      "tree": "3c3e2e8e8ab38510ef8a7440bf893f8684bce9e4",
      "parents": [
        "b9adbf63f880f246d83b3af4ca03aca07711f857"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 12 11:01:54 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 12 15:17:08 2016 -0800"
      },
      "message": "Fix bug with verification of constructors\n\nWe would incorrectly allow the storing of values into superclass\nfields before the superclass constructor was called.\n\nBug: 26965384\n\nChange-Id: I45b824fbdbfc133663ed6d3306853595b5dc9262\n"
    },
    {
      "commit": "980027c7f22f332ad224f662add0df197e71f137",
      "tree": "8a664f03bdfa9662bf10a608def52ac42dff81b3",
      "parents": [
        "5960a3f430d1e7f47ea3db9a8364dc82e3f8add9"
      ],
      "author": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Thu Feb 11 20:28:11 2016 +0600"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 12 15:47:24 2016 +0000"
      },
      "message": "ART: Treat throw with non-reference type as hard failure in verifier.\n\nThe code\n   const v0, 0xbad\n   throw v0\ncrashes dex2oatd/Quick by DCHECK in art::Mir2Lir::LoadValueDirect.\ndex2oat works fine producing VerifyError later in runtime.\nOptimizing also pass as it rejects methods with soft failures.\n\nFix this by rejecting such methods in Verifier.\n\nBug: 27148248\nChange-Id: Ib783f60a210362654d40e84172e7bd579913a4d4\nSigned-off-by: Pavel Vyssotski \u003cpavel.n.vyssotski@intel.com\u003e\n"
    },
    {
      "commit": "9fcfb8add23042713165f761b4f098e14b9a823b",
      "tree": "da9e436af2feca082f291082c2d40858a053d6c4",
      "parents": [
        "c5b76b9328d77b83c80afed14a5b6e7009136e15"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 04 20:52:54 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 05 15:52:18 2016 -0800"
      },
      "message": "ART: Curb lock-verification-failure spam\n\nJust print one message per class. Also print a helpful message once.\n\nBug: 26951356\nChange-Id: I83702b67dc535d86e03835df7a72afda081c83be\n"
    },
    {
      "commit": "68b5c0b677bae53b3bae5d1890e21fae527f3df3",
      "tree": "0bfdef080978ba7f5c264aa4ab269a07e9949771",
      "parents": [
        "7f1551d28b3674799a4bb2b198bf6b16f32082af"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 19 14:25:29 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 01 12:18:48 2016 +0000"
      },
      "message": "ART: Disallow uses of uninitialized references\n\nThe following instructions accepted uninitialized reference types\nas their arguments:\n - instance-of\n - check-cast\n - throw\n - iput-object (stored value argument)\n - sput-object\n - invoke-* (non-this arguments)\n\nMonitor-enter and monitor-exit are allowed.\n\nBug: 26594149\n\nChange-Id: I2a4decb1fba274b8969b17bc237ac0fd19b93c80\n"
    },
    {
      "commit": "fedd91d50930e160c021d65b3740264f6ffec260",
      "tree": "5f356423e51f3bd71020ba0a5f024c54adc959e7",
      "parents": [
        "97f4bc04b61d5cf78b0820dbf18e999b20d7a108"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 07 14:49:16 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 15:46:55 2016 -0800"
      },
      "message": "Optimizing compiler support for directly calling interface methods\n\nThis teaches the optimizing compiler how to perform invoke-super on\ninterfaces. This should make the invokes generally faster.\n\nBug: 24618811\n\nChange-Id: I7f9b0fb1209775c1c8837ab5d21f8acba3cc72a5\n"
    },
    {
      "commit": "9724c636467d56632a45fdf6353e3d57d1925501",
      "tree": "f28f6ff8146088eef28405a55a7f6ab517120ae0",
      "parents": [
        "4fe6ce5f48687cf24c91ac9865dbad497ed6c074"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Jan 07 15:42:47 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 26 10:23:06 2016 -0800"
      },
      "message": "Enable interface default methods by default.\n\nThis also enables interface static methods.\n\nThis removes the -Xexperimental:default-methods flag and all places\nwhere we explicitly check for its presence.\n\nBug: 24618811\n\nChange-Id: Icd91e377bd6e1a45a1645f810d15de1b0312e31d\n"
    },
    {
      "commit": "7268d47a6d2d44dcd844fcfff4699ad7689308d6",
      "tree": "8c1eeca4ec19312aded394be5696042d1017f997",
      "parents": [
        "f74388daf23522dd4e9ebe6640030f4fd52c52ea"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 20 15:50:01 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 20 15:50:01 2016 -0800"
      },
      "message": "Add a METHOD_SUPER to the MethodType enum.\n\nThis makes some of the code simpler by disambiguating between regular\ninvoke-virtual and invoke-super, which have slightly different\nrequirements.\n\nChange-Id: I50e86e681bb63c617c043367feb5b89e2ddbfc00\n"
    },
    {
      "commit": "705ad49f353d3f90d8b63625aca2c2035bacdbef",
      "tree": "ac70af53158a80bc35c057aefae11428281df9ac",
      "parents": [
        "fae1db92d8433d0f75258c190bcf2c940731f036"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 21 11:36:30 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 12 15:40:31 2016 -0800"
      },
      "message": "Support directly invoking interface default methods\n\nWith the Java 8 Language one is allowed to directly call default\ninterface methods of interfaces one (directly) implements through the\nuse of the super keyword. We support this behavior through the\ninvoke-super opcode with the target being an interface.\n\nWe add 3 tests for this behavior.\n\nCurrently only supports slow-path interpreter.\n\nInvoke-super is currently extremely slow.\n\nBug: 24618811\n\nChange-Id: I7e06e17326f7dbae0116bd7dfefca151f0092bd2\n"
    },
    {
      "commit": "42ef8ab151a3d0cbb42cb43f6841c3708d65fca3",
      "tree": "ba8eb3fdecd226a8c516a86ac418f73f6c0ff254",
      "parents": [
        "170e01a6b59b3242a5afc76c3a03c00ce288150f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 03 17:27:32 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:52:33 2015 -0800"
      },
      "message": "ART: Stash a resolved method late in the verifier\n\nInvoke-interface should only be called on an interface method.\nWe cannot move the check earlier, as there are other checks\nthat must be done that can fail a class hard. So postpone\na push to the dex cache.\n\nClean up the test a bit.\n\nAlso templatize ResolveMethod with a version always checking\nthe invoke type, and on a cache miss check whether type target\ntype is an interface when an interface invoke type was given.\n\nBug: 21869691\nChange-Id: I94cbb23339cbbb3cb6be9995775e4dcefacce7fd\n"
    },
    {
      "commit": "c96205e03bd4f991ad1540df38f9f692ef211b22",
      "tree": "4ae775d15f51efb704ca5b00a2ee4b6fb6615812",
      "parents": [
        "34760f9a97e6a1733edfca1b13199f749106a30f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:25:27 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:27:10 2015 -0800"
      },
      "message": "Revert \"ART: Check invoke-interface earlier in verifier\"\n\nThis reverts commit dae24142127c64551142a50423085aabdb0a6060.\n\nIt is important to check the name of the method being called.\n\nBug: 21869691\n"
    },
    {
      "commit": "53e32d14d7a51198c6ef09120c15bafdd1d055c2",
      "tree": "2386137351c94dcaf0612713134f487fc8f1fdfb",
      "parents": [
        "1d97f949e807e963dd92dcf9ac38def5301d555a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 09 21:03:23 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 09 21:03:23 2015 -0800"
      },
      "message": "ART: Refactor verifier callbacks\n\nChange the return type of MethodVerified to void. It was never\nused anyways.\n\nRemove the callbacks calls from the core of the verifier (Verify()).\nInstead, make the convenience functions do the work, and add a\nparameter to supply the callback so that the verifier becomes\nindependent of the Runtime-stored one.\n\nFix up calls that now need to provide a callback, but leave places\nthat only run the verifier to get metadata (e.g., register type data,\nlock state) without callback. This avoids callback calls when in JIT\nmode.\n\nBug: 26075442\nChange-Id: I2c270f01e4de088771d4d4b19dae4f07d77640f0\n"
    }
  ],
  "next": "dae24142127c64551142a50423085aabdb0a6060"
}
