)]}'
{
  "log": [
    {
      "commit": "2cb2527d4136f681b8e79352c546e65431ceb10c",
      "tree": "2e6429eff103ac8006f564238e381f4ec6e0a841",
      "parents": [
        "f7e4c3d58d3ce7f38e4591acb9928513928c39c4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 15 14:24:29 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 13:32:32 2021 +0000"
      },
      "message": "verifier: Remove support for precise constants and RegisterTrackingMode.\n\nThese features were used when we were creating GC maps and\ndeoptimization information with the quick compiler. Quick compiler has\nbeen removed, so we can remove these features.\n\nTest: test.py\nChange-Id: I633a7ada761b280b90e2d7c53cd5fbf2ae1d701d\n"
    },
    {
      "commit": "8f21748bf127012947ed48c40948df3f2d9c85ef",
      "tree": "70d287634fd0b3a2d43ad8de7738c9703eb0a2a6",
      "parents": [
        "ce5c830aede3313ceb22f7b2ca6c30e5b8432972"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 14 17:16:36 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 16 09:44:43 2021 +0000"
      },
      "message": "Mark move constructors/assignements as `noexcept`.\n\nAnd unmark `HashSet` copy constructor and copy assignment.\n\nTest: m\nChange-Id: Ia419f3036b2880815be446395e81c7e543388bd9\n"
    },
    {
      "commit": "9e050ab1a061d9660eb0c1daa01a823ad75b0f05",
      "tree": "714f2ba3b11406310416e85357f45450634846b2",
      "parents": [
        "4f990714b13e0b4446305a5411648a1a9ae42a7a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 14:59:25 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 17:13:08 2021 +0000"
      },
      "message": "Remove the need of VerifiedMethod in the compiler.\n\nThe compiler only needs to know if a method is compilable or not. So\njust record a set of uncompilable methods (in some cases, we cannot have\nan ArtMethod, but the method can still be compiled).\n\nTest: test.py\nBug: 28313047\nChange-Id: Ic4235bc8160ec91daa5ebf6504741089b43e99cb\n"
    },
    {
      "commit": "7744b69abf073101b09b9043f0f0eb109768fcfe",
      "tree": "6598234dc0a9b2327729705cf61f836e3e777d58",
      "parents": [
        "eacf044aae6d7d515ac988dceedaadbf53916b60"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 06 16:19:32 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 14 13:17:09 2021 +0000"
      },
      "message": "Remove dual verification in RedefineClasses.\n\nAlso clean up the ClassVerifier interface with now just one method and\nthe removal of VerifierCallbacks.\n\nTest: test.py\nBug: 28313047\nChange-Id: I1a87dd1757cfdeec0d482f82dacd7cac43545964\n"
    },
    {
      "commit": "2ec38232c632a2c7f3069f02d5c4d7036f14575b",
      "tree": "2500a6189a53a6bccb1b475d7e8a45ce4acd01ec",
      "parents": [
        "81909865f1d82314b72d09d1ad1f4545efd809e7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 02 16:36:29 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 09 11:55:11 2021 +0000"
      },
      "message": "Clean up verifier interface.\n\nRemove verifier_callbacks and ArtMethod as argument. The verifier can\noperate without them.\n\nThis allows removing the bogus DexCache::SetResolvedType in ti_redefine.\n\nAlso turn runtime throw failures into VerifyError, for cleaner interface\nwith users of the verifier.\n\nTest: test.py\nBug: 28313047\nChange-Id: I9ba1300f198aaf482ed43061465daea789ea732b\n"
    },
    {
      "commit": "cd133d85874d94cd05b5ba11389c851550e6d8f4",
      "tree": "514f7f1fa4bfaa9038e5c98a299543ccbb4bfdd6",
      "parents": [
        "971068dcaf5955634679dbfaf7b562ed52aff772"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 25 16:10:39 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 02 15:27:21 2021 +0000"
      },
      "message": "Verifier cleanups.\n\n- For apps \u003c\u003d S, keep the behavior of not analyzing an unreachable\n  handler. If \u003e\u003d T, we analyze it to simplify handling in the compiler.\n- Remove VERIFY_ERROR_SKIP_COMPILER and fold uncompilable methods into\n  checking HasInstructionThatWillThrow.\n\nTest: test.py\nBug: 28313047\nChange-Id: I20b65cf50def2a4a95617a03142575b8591ae0ec\n"
    },
    {
      "commit": "44dc8a300adb63b1bf465de555b7f8cce0481bb3",
      "tree": "095bc4801079f46f36a474db3e05dded5f7971f8",
      "parents": [
        "c9df5ce4cca760b27e9650363eaba5b92d87324c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jun 21 15:23:49 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 30 13:04:57 2021 +0000"
      },
      "message": "verifier: do not infer an instruction will throw.\n\nTurning a regular instruction into a throwing one has currently\nundesirable consequences:\n1) It leads to inconsistencies between the AOT verification and the\n   runtime verification.\n2) It treats the following code dead and does not analyze it. We treat\n   this as an non-compilable method as it\u0027s a lot simpler for the\n   compiler to consider all code verified.\n3) It prevents verification optimizations like doing one-pass\n   analysis over the code.\n\nTo be AOT / runtime consistent and follow RI behavior, stop considering\nsuch instructions as throwing.\n\nWe make this API version dependent for app compatibility reasons.\n\nTest: test.py\nBug: 28313047\nChange-Id: I9c847043d1f431f642731a70f651c93ef22fdf86\n"
    },
    {
      "commit": "f8b5288ab53fa3dbc95ddc22264c53165fdefbdd",
      "tree": "2fdee1be7012bc73d6776d508619f8c0ef4feeaa",
      "parents": [
        "d7b416118ab6820fb1fbe93ca194c4a748b9fa59"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 25 17:00:30 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 30 12:14:25 2021 +0000"
      },
      "message": "Remove experimental flag in verifier.\n\nWe don\u0027t use it anymore. If we add new opcodes in the future, we can\ntest by disabling the verifier (something which was hard to do at the\ntime).\n\nTest: test.py\nBug: 28313047\nChange-Id: Idce9a520995d12fdfc3bd314bc06b542492a0ab8\n"
    },
    {
      "commit": "2ef367acf3f95ee4c0459b73c3b18613cfa7d74d",
      "tree": "193c094b51ab441159f04e40324d4ac51e1d32f9",
      "parents": [
        "833d76f4bdca60ed06a76b3d248ea643efafb844"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 10 14:14:03 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 14 16:46:48 2021 +0000"
      },
      "message": "Ensure verifier deps in the vdex file are 4-byte aligned.\n\nIt simplifies the encoding / decoding logic.\n\nTest: 663-odd-dex-size\nBug: 186405713\nChange-Id: I26bcf2b6cfa16548a520a501e6e1b38c238eb1df\n"
    },
    {
      "commit": "8078996ff904d3038f774c6c355796cfa42d67b2",
      "tree": "a8e5659963b3b558b46c19d9de9e9947b0cd48df",
      "parents": [
        "e059ef1ca72c1750f104194d6333931ee62120a9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 30 16:50:39 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 05 07:42:38 2021 +0000"
      },
      "message": "Handle a potential race when verifying dex files in the background.\n\nIn case the runtime has verified a class already, explicitly still\nperform another verification in order to get the verifier_deps\npopulated.\n\nTest: test.py\nChange-Id: I17dcec9545dab1b0cae170b584cd091f00145344\n"
    },
    {
      "commit": "61c624239ced1203d1c77cbeb5a57f9ad2c5c73d",
      "tree": "63e392ba73e02ddb7fb8fc73ca87bf47d6452332",
      "parents": [
        "1dab575cd635706f03d510763cb4ea1b115a2cee"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 27 16:22:48 2021 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 28 10:44:11 2021 +0000"
      },
      "message": "Remove RETURN_VOID_NO_BARRIER byte-code.\n\nUnused and obsolete quickened byte-code.\n\nBug: 170086509\nTest: test.py -b --host --64\nChange-Id: I1e917c189da7bf64418412522676dc6b081d5c0b\n"
    },
    {
      "commit": "c76fbf024f6571d699738fb6b5b9953453d6cc13",
      "tree": "3ecbbe74eeb299315ffe1294a3d341246069b596",
      "parents": [
        "97af733e2744a3682792195052d9111ffd8ad23a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 06 08:59:17 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 06 16:21:53 2021 +0000"
      },
      "message": "Fix script when using --verify-soft-fail and --jit.\n\nWe were wrongly passing --assume-verified as compiler filter.\n\nAlso remove some obsolete code in the verifier exposed by\n636-wrong-static-access.\n\nTest: 636-wrong-static-access\nBug: 177799064\nChange-Id: I2ff15089b114bb7c482381c0f9364db869b1902d\n"
    },
    {
      "commit": "c5cd58914325c7fcfd89b1a5bf4daa475c2d83ef",
      "tree": "847a50eaa8331baf617f0fc3161cf36b7fc28680",
      "parents": [
        "b3f5c5008770d22a24db6a66bf97bd5a9d32b4ff"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Mar 23 08:09:15 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Mar 27 13:19:58 2021 +0000"
      },
      "message": "Remove QUICK bytecodes.\n\nRemove the deprecated unofficial (not part of the spec) bytecodes.\nThis frees the 16 bytecodes for future use.\n\nBug: 170086509\nTest: m test-art-host-gtest\nTest: test.py -r -b --host\nChange-Id: I9f6d8a2c21b88f883c8fdc1eb67b24620f313d56\n"
    },
    {
      "commit": "4924ea9ad98832f0ec7db841defca82331ee1b13",
      "tree": "66864c55d26b70d054e339518ec1890cd203e69a",
      "parents": [
        "4312f74ccf65a5abbab53c017b3f2b030c89f65a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 23 08:25:31 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 23 14:50:24 2021 +0000"
      },
      "message": "Remove Vdex::GetQuickenedInfoOf and all its users.\n\nTest: test.py\nBug: 170086509\nChange-Id: I1e1a4abf71245c0fd37f951c9af85f62feba18ca\n"
    },
    {
      "commit": "5b0b2e1b5d60514b829f99aed5712dcae3647115",
      "tree": "45b58e4e97de2112fd0903a7de0d6a5a86ff3ba6",
      "parents": [
        "f0407cf39600b2e87ee6c18f066df2987bd4ba29"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 19 14:48:40 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 22 14:03:36 2021 +0000"
      },
      "message": "Explictly pass VerifierDeps when asking for class verification.\n\nThis will simplify creating and populating VerifierDeps at runtime,\nwhich is needed for doing and saving background verifcation of secondary\ndex files.\n\nTest: test.py\nBug: 158463186\nChange-Id: Ic17913ebd173700e866ba9309bf6ae131fcbc423\n"
    },
    {
      "commit": "e7ff7ef6e5dc2bbb52f3f5c96f14535e5fc1dca0",
      "tree": "36006d79d8f572639ad727c3de5794d658187a12",
      "parents": [
        "a4c87959ccac3500182f4ab91f7e5f37489a791f"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Mar 17 16:42:24 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 20:33:49 2021 +0000"
      },
      "message": "[metrics] Add ClassVerificationCount\n\nTrack how many classes we verify at runtime.\n\nTest: gtests\nBug: 170149255\nChange-Id: I72f0a4933820f54acdeef70478129d2320e91afd\n"
    },
    {
      "commit": "5de5efef38f52f248d1e1c88fdcf3d211aabe712",
      "tree": "fb991b4dbee4d9afecad141bc75dab14893633a1",
      "parents": [
        "18af6447e5963265f6e7e61d6630064f66891f94"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 15 21:23:00 2021 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 18 16:51:21 2021 +0000"
      },
      "message": "Remove pointer-size arguments from DexCache.\n\nThe DexCache is always allocated at runtime now and thus\nit always has runtime pointer-size. Remove the dead code.\n\nTest: m test-art-host-gtest\nChange-Id: Ic21dc20649e1fd70f8981602d75b5690065aec20\n"
    },
    {
      "commit": "6df4511a2cf9ffae0294c1e5136c27ff84cfd1cb",
      "tree": "a29efde60f8ffb947679113d524ae9f6169e0338",
      "parents": [
        "354fbd7e8d38d7888c6c2610cc14cfa55f468fbb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Feb 07 21:51:58 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 16 09:27:59 2021 +0000"
      },
      "message": "Use vdex assignability types at runtime.\n\nWhen the oat file mentions the class needs to be verified at runtime,\ncheck whether the vdex has assignability types. If it has, and the\nchecks are successful, then the class is verified. Otherwise do a full\nverification to report the actual verification error.\n\nTest: test.py\nBug: 176960283\nChange-Id: I2ba14b72c1d8be3d33f7a699721496a8c15c39f2\n"
    },
    {
      "commit": "5c48df9895530fb26666c6d79d155ef3886d7a83",
      "tree": "8d9ca6d6eb89d7ec38642a42636fd8bda91522fa",
      "parents": [
        "9ebc0660f4c736b01994d34d3ad2a1171f41f048"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 09 11:47:10 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 09 16:18:38 2021 +0000"
      },
      "message": "[verifier]: flag instruction that will throw at runtime\n\nWe\u0027ve accidentally changed the verifier behavior in:\nhttps://android-review.googlesource.com/c/platform/art/+/1561956\n\nWe need to preserve the behavior of marking an instruction that will\nthrow at runtime, so that the code following it is not looked at. This\nmeans that if there are verification failures in that \"dead code\", they\nwon\u0027t make the class not verified.\n\nTest: 819-verification-runtime\nBug: 179227478\nBug: 179245053\nChange-Id: I4526a98b9479f47102fb00bd65bb943fe6aa9c8e\n"
    },
    {
      "commit": "480d98182efa33179f1773c791dc8f4bed62ef2b",
      "tree": "e352691c80cd341dcfb55ef31d3f2044362c9416",
      "parents": [
        "10592e30a959d4ebe90f5ba4b6237ec0cacddc6c"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Jan 27 23:41:45 2021 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 01 19:09:57 2021 +0000"
      },
      "message": "[metrics] Move core metrics code to libartbase\n\nWe would like to be able to use ART\u0027s metrics system in places where\nwe do not have access to the runtime. This CL splits the metrics code\ninto the core implementation of the counters and histograms and the\nbackground reporting thread. The reporting thread was the only part\nthat had dependencies on the runtime, so this remains in the runtime.\n\nThe bulk of the metrics code moves to libartbase so that it can be\nused in more contexts.\n\nBug: 178099697\nTest: m test-art-host-gtest\nChange-Id: I26a4fe326371686d5857ad49ba98569f5c55f84a\n"
    },
    {
      "commit": "d1728bfca62a0757000ef3aa0388b5e51269a2a2",
      "tree": "04d75ba364e3ce0c39735a38083383408f9f7cf4",
      "parents": [
        "36e4d1d398a1526c6bc5eba12b32279dc07749d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 12 14:02:29 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 14:48:53 2021 +0000"
      },
      "message": "Add a kTypeChecksFailure.\n\nThis is to distinguish between a soft failure due to type checks, or a\nsoft failure due to other reasons.\n\nA follow-up CL will start using that information and use the type checks\nin the vdex file to perform fast verification at runtime.\n\nTest: test.py\nBug: 176960283\n\nChange-Id: I04bff9ff26033f41e9439d366667a9aec1f339a0\n"
    },
    {
      "commit": "35a37200c6819015a5a66ec0bfdfb9d6ab3f2e0e",
      "tree": "0c0a2eb79b258bc9d024ab6d682320f9ee6d1d77",
      "parents": [
        "3a1ca400758302f44a95ae8255ca7c012d651d73"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 17:53:32 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 01 09:57:26 2021 +0000"
      },
      "message": "Reland \"Remove obsolete code in the verifier.\"\n\nThis reverts commit 7572e76a368e56da139648a5f2e0a92b25a581e2.\n\nBug: 176960283\nBug: 178731135\n\nReason for revert: Fixed access checks of mterp on array allocations\n\nChange-Id: I5c2e321e392714bb6921f3b02e32a79ebfd4e22a\n"
    },
    {
      "commit": "7572e76a368e56da139648a5f2e0a92b25a581e2",
      "tree": "ef650023a2d33e6cc373a25449d8fd5a534a511e",
      "parents": [
        "42bee50518ebd23ff2107df86ed0a98737291cc2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 10:14:54 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 29 14:06:45 2021 +0000"
      },
      "message": "Revert \"Remove obsolete code in the verifier.\"\n\nThis reverts commit 22538e4672348c56d4d44d6113bedd6b47d0abd0.\n\nBug: 176960283\nBug: 178731135\n\nReason for revert: Fails some vm-tests\n\nChange-Id: I60f44fe1ca963b08018fd9ab4ca352dfd8a8b1cb\n"
    },
    {
      "commit": "22538e4672348c56d4d44d6113bedd6b47d0abd0",
      "tree": "186ff7dff13bcd944297e17d9a98f16216b60d7c",
      "parents": [
        "7203b2052c1b77a369a2fa5647529576f57de0cc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 27 15:40:02 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 28 13:56:18 2021 +0000"
      },
      "message": "Remove obsolete code in the verifier.\n\nWe now handle verification errors depending on their kind after the\nmethod has been verified.\n\nTest: test.py\nBug: 176960283\nChange-Id: Ib1c5fde157d516907f176e16fda00fe05ac25ff1\n"
    },
    {
      "commit": "04ea42c39bff591b4a82622f847c34237c8bc69e",
      "tree": "564a26f86fc2ec6e58c7da27dd11d06648b615ed",
      "parents": [
        "ee7bfb2a2931b5db36511146df7865c16287b2d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 10:04:56 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 27 13:26:11 2021 +0000"
      },
      "message": "Add a new kind of verifier error with unresolved type checks.\n\nDifferentiate between missing a class for, eg allocation, and missing a\nclass for a type check which would be a hard failure at runtime if the\ntype check was not successful.\n\nTest: test.py\nBug: 176960283\nChange-Id: I36f64b2b221ba42c987e1e5809a921e7644a3456\n"
    },
    {
      "commit": "c3c4417c5362b301dc8602d47c860379919a2145",
      "tree": "137fb4a8dc9d759953582f9a270c01d0ea666be7",
      "parents": [
        "4ebb99c2ecdd64b2364a44c4925b76f4bfa5d293"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 10:03:39 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 08 12:08:47 2021 +0000"
      },
      "message": "Refactor code around the verifier.\n\n- For classes that are not resolved, we were doing verification but were\n  not recording the outcome - fix that.\n- Clear the verifier deps (for space reasons) only when a class is hard\n  fail or needs to be verified at runtime.\n\nTest: test.py\nBug: 176960283\nChange-Id: If19c0e6171ce945a6cd56ba4a42fbb8e2a5ccee7\n"
    },
    {
      "commit": "54ed0150a42297a1a5e477d6569619193fcbffd0",
      "tree": "9ba815d49f5222b47f6d81127379c11b8876ba3a",
      "parents": [
        "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:29:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 09:09:26 2021 +0000"
      },
      "message": "Handle VERIFY_ERROR_INSTANTIATION in compiler and nterp.\n\nNterp always supported it, but the compiler was missing a check.\n\nTest: test.py\nTest: 600-verifier-fails\nChange-Id: I8675ca6f61c68c4152212c81843da8248781f18a\n"
    },
    {
      "commit": "bd570591eab2d683eb634ac057dbf9f0e1337f8c",
      "tree": "b50ac19257a71cd9efb2ce596764b445a89cae87",
      "parents": [
        "bde70600e1bfa837fa48ea8da350f60b50272aa6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:37:44 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 16:31:10 2021 +0000"
      },
      "message": "Handle missing methods in compiler and nterp.\n\nNterp already supported it, but there was a missing check in the\ncompiler.\n\nTest: test.py\nTest: 552-invoke-non-existent-super\n\nChange-Id: Ife9f3f6782f09bd9780940bcb78160aa11db12d2\n"
    },
    {
      "commit": "5bcdd17a43fda7ac27968b13f6969133fae40b37",
      "tree": "85a3bd26695ec872bbf5675f303557d38c8805a2",
      "parents": [
        "cb5f97df7fd3d40a6c92fa46ba98894d5d327efb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:40:14 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 14:35:51 2021 +0000"
      },
      "message": "Remove unused VERIFY_ERROR_NO_FIELD.\n\nTest: test.py\nChange-Id: I72f547c4336e5f60aa762f205323ee8aef023c5f\n"
    },
    {
      "commit": "b677affde680c730aa22fab4d7eeb9fabb38d3c0",
      "tree": "92b8a23ee7a5f05c81d34f555dd13d196101aee7",
      "parents": [
        "ef28d24d7625943cc2b53e10bbece86a305b3ffd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:07:10 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 13:06:18 2021 +0000"
      },
      "message": "Support VERIFY_ERROR_CLASS_CHANGE in nterp and compiler.\n\nThey were always supported.\n\nTest: test.py\nChange-Id: I2ef6ee279ad14740e1a59adc486ef078ad511d83\n"
    },
    {
      "commit": "5e82b184ef51672df491374f81cd6a69b40a133c",
      "tree": "5c859773d931d5e1525a58ae1a91fe0bb879b322",
      "parents": [
        "73366109eec37b75f77f24e6e52832047508b34f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 08 08:57:36 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 14 13:41:03 2020 +0000"
      },
      "message": "Make it a verification error to misuse FastNative and CriticalNative.\n\nBug: 175016705\nTest: 004-JniTest\nChange-Id: I10a1d6d29ebab105a2dd55ed796742c13c221ae2\nMerged-In: I10a1d6d29ebab105a2dd55ed796742c13c221ae2\n(cherry picked from commit 80f8973cb13feff2336345719066e0a65eb48ca7)\n"
    },
    {
      "commit": "e4f2215df60f0408d37ec796ececaa32b860d37a",
      "tree": "44aa9093d846a27a1681e60ebcc5d07f7b1a41c3",
      "parents": [
        "86d6cd53385eae365f16f45e1a5947cc6595eb63"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Tue Nov 17 15:23:33 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 04 22:14:15 2020 +0000"
      },
      "message": "[metrics] Move metrics code to runtime\n\nThe background reporting thread is going to need tighter ties to the\nRuntime object, so it makes sense to bring the rest of the metrics code\nunder runtime. Since these are mostly runtime metrics, this is a more\nlogical place for them anyway.\n\nTest: m test-art-host-gtest-art_runtime_tests\nBug: 170149255\nChange-Id: Ib425041c41a5283237af8dd9978582e605a89a31\n"
    },
    {
      "commit": "dc75b3f0d2f7363ad7a7f9356bc931486e17e4f5",
      "tree": "2f11c32969faec050d3c1aaca3dfb1bc183adea4",
      "parents": [
        "7b55065f9fd05e9610871e1598972fc8fd45e9ea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 18 09:06:25 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 18 12:01:30 2020 +0000"
      },
      "message": "Fix braino when adjusting alignment.\n\nIssue spotted by Greg Kaiser.\n\nTest: ./art/test/testrunner/run_build_test_target.py -j80 art-heap-poisoning\nBug: 112676029\nChange-Id: I3cbe772c5806b11132a282c1db2ccd198b5bbace\n"
    },
    {
      "commit": "07b62e3d0808cc0890717a3a589c1f7b1ac51e5c",
      "tree": "d15c79302f3498278e9d22c6319e8e02a3087973",
      "parents": [
        "a07de551da5147f3635c665a31f262cf65647118"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 07 15:54:08 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 16 17:35:42 2020 +0000"
      },
      "message": "Change vdex format to easily access verification data per class.\n\nSee changes in vdex_file.h to see the changes in format.\nAlongside, remove the redefined_classes_ set, which is not needed now\nthat we record verification data per class.\n\nTest: test.py\nBug: 112676029\n\nChange-Id: I7cc1e9ba465303f105cddec4ce86c4efaaed7e7b\n"
    },
    {
      "commit": "8411c5ddb824bae1d3202a3bc2e42c77d351e916",
      "tree": "dfac3f21998c8b7dad2971db355420dc58b057fc",
      "parents": [
        "e7f659f029e2625585fc7aac42e8688ca28fe5b2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 08:30:22 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 13:31:34 2020 +0000"
      },
      "message": "Record all type assignability checks in the verifier.\n\nWe used to only record at boot classpath boundaries. But due to making vdex\nverification per class at runtime, we now need to record all checks.\n\nThis means when before we would look at the superclass chain of an app\u0027s\nclass to find the one in the boot claspath, we now will encode the class directly.\n\nTest: test.py\nBug: 112676029\nChange-Id: I58a18ed13c2d3fdc41a37f56624cc4b24f58bf80\n"
    },
    {
      "commit": "1960c42c5df95f3011c020b07328d03716532037",
      "tree": "839c5085cc89586081bb20dc873fb549daf2bea0",
      "parents": [
        "85b125f4ac9c687e3bd217f9c6eab999be104c17"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 04 08:45:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 05 09:18:57 2020 +0000"
      },
      "message": "Change vdex format to store per-class assignable types.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6cd784381efb13a2c669ab77fe2c2b3e5da838f9\n"
    },
    {
      "commit": "4f99524cff963c91a66f30f22c19dae28db01740",
      "tree": "a70968889297449049f80b11198189a5c435aa44",
      "parents": [
        "de91ca90389e4b41ed27b320a6c43ff56a6d75ff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 14:29:30 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 02 16:21:53 2020 +0000"
      },
      "message": "Add unresolved types in verifier deps.\n\nWe need to record all assignability checks that the verifier does, so we\nreproduce them at runtime.\n\nWe ignore those assignability checks for now when validating a vdex file\nas the class that uses the unresolved types will be marked as soft fail.\n\nTest: test.py\nBug: 112676029\nChange-Id: I21697e976ce56d3905576407b6326863915cc271\n"
    },
    {
      "commit": "096bef8285e1a4d2a2b89cb5a5f59c63ee2e7b65",
      "tree": "1e67eca126f08985f3d43c97b2f5df94a8e1e846",
      "parents": [
        "66474c2878e0c91fbcffba8271bc20a3cf760642"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Mon Oct 19 12:04:39 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 22 17:40:25 2020 +0000"
      },
      "message": "[metrics] Refactor reporting\n\nBug: 170149255\nTest: m test-art-host-gtest-art_libartbase_tests\nChange-Id: Ic02dd94f55fb782e1ffb59789bf95e7f53f1f8e8\n"
    },
    {
      "commit": "938a0670d551d81d5f0710d0d565167b42227337",
      "tree": "dde8d8711384a1caf464c86f2c5944cbfdff61f8",
      "parents": [
        "5b041c05d6b73b73c43a425dc4ff3b784722c4a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 16:03:42 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 14:38:43 2020 +0100"
      },
      "message": "Remove the checkcast quickening optimization.\n\nQuickening is now disabled, and the optimization uses VerifierDeps\npost-verification, which we plan on not supporting for future verifier\nimprovements.\n\nTest: test.py\nBug: 112676029\nChange-Id: Ie9004b27c93e1189e6c1142494e79cd84b05400c\n"
    },
    {
      "commit": "5b041c05d6b73b73c43a425dc4ff3b784722c4a2",
      "tree": "0425b87cf343b8a45182c053d7e300623b64d419",
      "parents": [
        "8bea400eec977e433ad3453c5a21f74955afbc2a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 15:17:53 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 21 13:23:28 2020 +0000"
      },
      "message": "Remove unassignable_types from vdex.\n\nThese were used in case a class went from \"verified-at-runtime\" to\n\"verified\". With go/nterp, we\u0027re re not going to handle this situation\nand we should only record what types the verifier expects to be\nassignable.\n\nTest: test.py\nBug: 112676029\nChange-Id: I6ffa61cef3aa767dfccadbdfdd5432e72e143ca3\n"
    },
    {
      "commit": "6ebe40fce5927e3f40ec1d375590648d48d458f0",
      "tree": "677e3c908d87a92becbf23ecfbad6779852c2947",
      "parents": [
        "801f6a7b003659251bf2386febb0030f04697750"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 14 16:37:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 08:30:15 2020 +0000"
      },
      "message": "Remove field/method/class resolution metadata in vdex.\n\nThey can now be handled at runtime with access checks.\n\nBug: 112676029\nTest: test.py\nChange-Id: I08c838334fb0dc94e58fa24463f49633ef7989fc\n"
    },
    {
      "commit": "4bb09001683e00a9d0d34f685f2ec60004c0c1ef",
      "tree": "283e8c3c77c34a13b020275b031148cd46f1de9b",
      "parents": [
        "ae7168e19f886ed43ed200f9b0e769613df485f9"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Wed Sep 30 11:42:34 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 12 18:12:00 2020 +0000"
      },
      "message": "[metrics] Implement JitMethodCompileTime histogram\n\nJitMethodCompileTime keeps track of how long methods take to compile in\nJIT mode.\n\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: Ic0e5f365d9e7eb7bc0ebcf49d23972adcd6dfb36\n"
    },
    {
      "commit": "a79872b016ea95b6ec530ae1ac35f3c5b0d9997f",
      "tree": "4e2f5c06efcaa3d508931862a504f2d52fa4d70c",
      "parents": [
        "1cd030f76e6ee07888aadca25ba24119fefb31b8"
      ],
      "author": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 01 13:09:53 2020 -0700"
      },
      "committer": {
        "name": "Eric Holk",
        "email": "eholk@google.com",
        "time": "Thu Oct 08 16:16:38 2020 -0700"
      },
      "message": "[metrics] Add metrics to Runtime, implement ClassVerificationTotalTime\n\nThis creates the main metrics struct and makes it readily accessible for\nART components that want to start collecting metrics. It also implements\nthe ClassVerificationTime metric.\n\nTest: m test-art-host-gtest-art_runtime_tests\nTest: m test-art-host-gtest-art_libartbase_tests\nBug: 170149255\nChange-Id: I33b5b2dd40127074619750d6730db220e3ed1257\n"
    },
    {
      "commit": "346fd964a826cfb5626582452b7519c04aee2f8a",
      "tree": "49fb6cf2ab865391ba4027389b0049474df38c7b",
      "parents": [
        "d3ee902ed06b635eedebc796543a67299eb6cd05"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 27 16:51:00 2020 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 28 11:13:37 2020 +0000"
      },
      "message": "More inclusive language in the runtime\n\nTest: m\nBug: 161896447\nBug: 161850439\nBug: 161336379\nChange-Id: Iabc29fa43b4b5a403699d6bca95e9a2cb8945d77\n"
    },
    {
      "commit": "aacf977a3b3af644a7e2eb58d8e56a23d1f3d215",
      "tree": "6a595bf88f3124e61c826bcd72520dd406664f1e",
      "parents": [
        "4ef451aecd4008ccee2ebf6136a70ed6a5c14717"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 22 21:51:00 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 23 13:18:06 2020 +0000"
      },
      "message": "Reword some comments to be more inclusive\n\nAlso corrects a typo s/He/We/.\n\nBug: 161336379\nBug: 161850439\nBug: 161896447\nTest: m\nChange-Id: Ie8e37310eb777b7ee41a13f8894e99795c29a98a\n"
    },
    {
      "commit": "fa88d5228d0cafda62d94d989542801f19ac8573",
      "tree": "a1d1bb7f8e26d4f14e1913d258ed458fcaf5b51f",
      "parents": [
        "93e4df7eac750db34ed99d691cc5c251fb80a107"
      ],
      "author": {
        "name": "Rock.Yeh",
        "email": "rock.yeh@mediatek.com",
        "time": "Tue Jun 23 21:29:19 2020 +0800"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 30 09:48:46 2020 +0000"
      },
      "message": "Add an execution time log for VerifyClass\n\nSome APK gets a very small duration of VerifyClass. We cannot use\nsystrace to profile it because the value is too small. The log\nmeasurement can get a better precise value.\n\nTest APK: com.babycloud.hanju\nSystrace enable\nVerifyClass count: 1122\nQ: 365.864ms\nR: 411.979ms\n\nSystrace disable\nVerifyClass count: 1122\nQ: 325.234ms\nR: 337.045ms\nVia above results, systrace disable can get a better precise value.\n\nSample:\n06-23 21:14:06.338  5199  5199 I babycloud.hanj: VerifyClass took\n1.509ms, class: androidx.fragment.app.FragmentTransition\n\nTest: boot\nTest: Launch APP\n\nChange-Id: I4375b42f07bc48987c3c4ffa1c155c2c748a7a65\n"
    },
    {
      "commit": "9974e3cdc1564edc3143b90d7bb2a416f1f887e7",
      "tree": "4f9746e6b237b2a17cc1e2543a141817d4946c19",
      "parents": [
        "2d19902c3d140c7b9b1d7ae905bd1023a4e649a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 10 16:27:06 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 11 10:06:12 2020 +0000"
      },
      "message": "Clean up generated operator\u003c\u003c(os, enum).\n\nPass enums by value instead of const reference.\n\nDo not generate operator\u003c\u003c sources for headers that have no\nenums or no declarations of operator\u003c\u003c. Do not define the\noperator\u003c\u003c for flag enums; these were unused anyway.\n\nAdd generated operator\u003c\u003c for some enums in nodes.h . Change\nthe operator\u003c\u003c for ComparisonBias so that the graph\nvisualizer can use it but do not use the generated\noperator\u003c\u003c yet as that would require changing checker tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ifd4c455c2fa921a9668c966a13068d43b9c6e173\n"
    },
    {
      "commit": "1715efa0b46d57d587237829d1c0695aaca2c344",
      "tree": "61e7013808a8fa9c45384fa8d84bd7f3eb1eaf34",
      "parents": [
        "9922f00cf68aac69209216a0726a45eb6338763c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 05 18:34:49 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 09 12:28:42 2020 +0000"
      },
      "message": "Add a new class status for verified with access checks.\n\nAt runtime, we won\u0027t run the verifier for those classes, but run with\naccess checks enabled in the interpreter.\n\nBug: 157265232\nTest: test.py\n\nChange-Id: Ia087c3b6f9fcbd295307333e524945d844ef54dc\n"
    },
    {
      "commit": "5868adaefe72cc8bcdcd8325c40f712375a506d1",
      "tree": "a1d4328902c4e860fe69c4e4bb34052de2530df3",
      "parents": [
        "5a62af5dc9e9bafeffcac7820e1a5b7586e58477"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 12 11:50:34 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 13 08:00:22 2020 +0000"
      },
      "message": "Move implementations from class_root.h to -inl.h .\n\nMake it possible to include the definition of enum ClassRoot\nwithout pulling in a lot of other headers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ic90fdd70bfe0c5428a5c9a0d7901ea7e15b03488\n"
    },
    {
      "commit": "c390879443dea479fb5b317237ee455d76136be2",
      "tree": "931674a0c3c6a2db7ae82d44477724c55d623afb",
      "parents": [
        "b47b978486572492140b63b0c8c5daa58dc28d41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 06 14:52:04 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 15 08:10:37 2020 +0000"
      },
      "message": "Do not crash for broken stored VerifierDeps.\n\nPropagate the error to the callers. Also avoid filling in\nunused data structures when we want only verified classes.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 151220989\nChange-Id: I3ad0d725251037006128c1f631e6bd6dcec3a592\n"
    },
    {
      "commit": "e8ed866d391291e80f5d267cce1b5f913dcfc0fe",
      "tree": "ff0a5eb60e729089da76b167c152eff23c7e9d80",
      "parents": [
        "edccd3cc6d0b60bcf87295774b0728fd8755c329"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 13:55:44 2020 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 16 14:27:14 2020 +0000"
      },
      "message": "Add MOVE_EXCEPTION to compat throw\n\nIn some apps, move-exception soft fail and be handled like a throw.\nAdd it to compat throw to avoid verifier aborts.\n\nBug: 146178710\nTest: make\nChange-Id: I9068260044fda4508314dab49bfee5215a2d96b0\n"
    },
    {
      "commit": "c2d0c9627b969ba988c8817d1b765b1cb61a61f3",
      "tree": "be3d4547d2a0a42d4085355383c509b0cb55f587",
      "parents": [
        "0c262edd22824f4465e0cb08879b7eea89d3fac0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 23 14:14:25 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 28 23:46:26 2019 +0000"
      },
      "message": "Perform reverify with shared mutator-lock.\n\nDespite comments that seemed to indicate otherwise the verifier is not\ncapable of running with a strong mutator-lock in all circumstances.\nSpecifically it relies on being able to allocate exceptions in a\nnumber of situations (for example when a field could not be found but\nthe class could). This could lead to problems when trying to\nreverify a class. To fix this we changed the reverify step to happen\noutside of the strong mutator-lock and instead temporarily mark the\nredefined methods with every verifier fail flag. The new verification\nwill then be performed and the flags reset (after suspending\neverything).\n\nThis also fixes a related issue where performing the verification\nwith an exclusive mutator lock changed how elements in the dex-cache\nwere populated, causing the dex-cache to break invariants about\nmethods always having their classes be present. This could cause\ncrashes in some circumstances (for example test 1990).\n\nTest: ./test.py --host\nTest: go/lem\nBug: 142876078\n\nThis partially reverts commit b1eebde9469914ad634a6dc3746ddfb222595609\nThis partially reverts commit db55a1121b2437765e732c8bbedf914f8a52f624\n\nChange-Id: I0f1e8c47118cc84c8f23c4068944069ac74f5ea3\n"
    },
    {
      "commit": "b1eebde9469914ad634a6dc3746ddfb222595609",
      "tree": "c34ad8df86b5c2f3b66e21ecd41352a02f3944d5",
      "parents": [
        "2a21cc6849df474afc63eff21913637c313efdf5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 22 16:30:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 22 17:00:09 2019 +0000"
      },
      "message": "Revert^2 \"Class redefinition sometimes needs to update verification\"\n\nWe were incorrectly preventing dex2oat from suspending during\nverification. This caused a major regression in memory use and\ncompilation speed.\n\nThis reverts commit 2cf00ede148bd9d77c291d4c0cb23edd5a9c36b4.\n\nReason for revert: Fixed issue causing AOT slowdown.\nTest: go/lem\nTest: go/lem-allight-unrevert-verify-check\nTest: ./test.py --host\nBug: 142876078\n\nChange-Id: If699f71a06818856358859ed5e4e01e0ffc1c1a4\n"
    },
    {
      "commit": "2cf00ede148bd9d77c291d4c0cb23edd5a9c36b4",
      "tree": "c59d055e9f611d1e9b7bdd36ce3756cc090b86c7",
      "parents": [
        "776d0015730e1c00c86119a5db2fe606867ae3a7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 22 08:10:44 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 22 08:34:02 2019 +0000"
      },
      "message": "Revert \"Class redefinition sometimes needs to update verification\"\n\nThis reverts commit db55a1121b2437765e732c8bbedf914f8a52f624.\n\nBug: 142876078\n\nReason for revert: up to 10x regressions on vdex-based compilation.\n\nChange-Id: Ib034c02617db2c8e4e15bc386631a612256f0ad4\n"
    },
    {
      "commit": "db55a1121b2437765e732c8bbedf914f8a52f624",
      "tree": "9b1be00c3684703e6a062052a634daa859068333",
      "parents": [
        "697fe5cc6ce0e9c72c3681152a99a5d5bab4253c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 17 10:32:47 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 18 15:51:34 2019 +0000"
      },
      "message": "Class redefinition sometimes needs to update verification\n\nIn cases where class redefinition moves a class from having no\nverification failures to having soft verification failures we need to\nupdate the methods with new verification class flags. For example if\na method is modified to have unbalanced monitors we need to make sure\nthat future invokes of that method count locks and use the\ninterpreter.\n\nPreviously we would simply keep the same verification state as the\noriginal implementation, causing us to try to compile in situations\nthe compiler cannot handle or leave monitors in inconsistent states.\n\nTest: ./test.py --host\nBug: 142876078\nChange-Id: I8adf59158639bdf237d691b20fad223f0a34db1f\n"
    },
    {
      "commit": "5c93af3cc8894deefbc9cba69ea69526c45842aa",
      "tree": "6f79a408832449163fcb2e320ad992393a2e8f32",
      "parents": [
        "8f70b9672c13a5ca19cf2c54ace3cb2f342f743a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 09 10:51:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 09 20:49:04 2019 +0000"
      },
      "message": "Loosen verifier around interface-invoke-super\n\nWe were being overly strict with interface-invoke-super and not\nallowing an interface to invoke-super into its own methods without\ngoing to the interpreter. This causes some scala programs to run\nmostly in the interpreter. Our compiler is able to handle this\ncorrectly so we should allow it without any soft-verification\nfailures.\n\nTest: ./test.py --host\nBug: 140589303\nChange-Id: I40d9510add5bbfd41d2e38b68973fce77880f7e6\n"
    },
    {
      "commit": "4ec4d48940696de077f88f9f8e9abdb178772301",
      "tree": "b43474eded81a67650795b1b0b0fc35e2a12afc7",
      "parents": [
        "7263abc75f8d139f1efcae887870a2f537e45735"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 01 10:00:23 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 27 17:09:27 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIncorporate suggestions from previous changes: some C++ cleanup.\n\nTest: m test-art-host\nChange-Id: If903239bee58858427f0eb3e3e37a1ca767529c5\n"
    },
    {
      "commit": "147a911636402f2658ce60bd3ad62eb197b00f74",
      "tree": "2fb507267d7bad2e906be49c4b18e709e4d706a2",
      "parents": [
        "b90cad58077cd44411c2a1617aec7b6798e6a295"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 31 16:17:10 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Remove FailOrAbort for unnecessary cases\n\nThe dex file verifier now correctly checks that the instruction array is\nnot empty. As such, index zero is always an instruction.\n\nSlightly refactor code for readability.\n\nTest: m test-art-host\nChange-Id: I3141944beef58a409c5ae52ba27fb5ce5945f9d1\n"
    },
    {
      "commit": "b90cad58077cd44411c2a1617aec7b6798e6a295",
      "tree": "fdebb5c0c8e93d8680cb14bca5925483371ca153",
      "parents": [
        "d1abab7110101d65774f9d090850d20aaa07b661"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 31 16:15:41 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Move find-locks code up in the callchain\n\nMove the code into the caller and templatize the caller to save some\ninstructions and branches for the common case.\n\nTest: m test-art-host\nChange-Id: I6eee7b60e3f17db778ab98a49126b206c8547a2c\n"
    },
    {
      "commit": "0134a28ec42f5c96a3dffcf496bf1af05d0942dc",
      "tree": "0b8857236fe1aab89718daee8219c4eb9408ad21",
      "parents": [
        "86bf068459252f58686c71bd24dadd76aba45c8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 29 11:34:55 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nReorder impl::MethodVerifier\u0027s constructor arguments to have all\nsuperclass arguments first. In an effort to simplify additions.\n\nTest: m test-art-host\nChange-Id: Iba119d74b0dd2dc8c4831efa823c191df6975d9d\n"
    },
    {
      "commit": "86bf068459252f58686c71bd24dadd76aba45c8b",
      "tree": "837520d122851c85c2be2297ffe439735ebc00a4",
      "parents": [
        "422a9ebc5b9d780a3201243f02b58652b44d9896"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 29 11:22:44 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nSome cleanup moving small function definitionss into their\ndeclaration.\n\nTest: m test-art-host\nChange-Id: I0b109572e0f892844966e0c25478d6306b2a5d6f\n"
    },
    {
      "commit": "f1468b53d0427a45011fe6446d189babe0acd6e0",
      "tree": "d6be3e1ed2a56f30d8ae8593655db6d5e4826507",
      "parents": [
        "fef91cc973f193d5b3a5a554b4910f0c548c08ad"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 26 09:22:39 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, require an ArenaPool in the constructor instead of\nexplicitly using the Runtime one.\n\nTest: m test-art-host\nChange-Id: I2a526d869532da732202198fdac68c426008b09a\n"
    },
    {
      "commit": "fef91cc973f193d5b3a5a554b4910f0c548c08ad",
      "tree": "6aa735be1e7ff51073eeb15b70a67a2f1c4037d8",
      "parents": [
        "e0bbab9fe1b073fecae78ca5d269bd0b2a177b4f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 14:13:23 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, replace querrying Runtime::Current() for AoT status\nwith a flag.\n\nTest: m test-art-host\nChange-Id: I91a3ad0208b544f47bb83db96edca6b4f86e5ce5\n"
    },
    {
      "commit": "e0bbab9fe1b073fecae78ca5d269bd0b2a177b4f",
      "tree": "a6152ee32301ac78084be69fc73c8d54134da8b2",
      "parents": [
        "52c468a765f0427dfb5a6627e8087e7b8acc3b8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 12:28:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, replace querrying Runtime::Current() for the classlinker\nwith requiring the classlinker to use at construction time.\n\nTest: m test-art-host\nChange-Id: Id0a6a1f01c77bfe4cc9adfb490fc6ebc7bbf6392\n"
    },
    {
      "commit": "ae95ce3c6e5ac0ca96bd6e8d7a3dc36b6ffadbab",
      "tree": "dfeb4c507ee9d9b9cf99a629b25b7a7599a67958",
      "parents": [
        "f2dcba05ca76e0609687cf1e8013bbe983c73b2e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 19 10:04:03 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 22 17:39:02 2019 +0000"
      },
      "message": "ART: Do not handle RETURN monitor-stack issue as throwing\n\nThe IllegalMonitorStateException on mismatch cannot be caught in\nthe method itself, as it logically happens after the RETURN.\n\nBug: 121245951\nBug: 137030260\nTest: m test-art-host\nTest: m\nChange-Id: I981398bb7d235dfcef408b864e281df08eacc835\n"
    },
    {
      "commit": "d84794d235df588814533d96f6e459b72f3a19b1",
      "tree": "be63139f9d94678c6c1f01e2012545580b2d1078",
      "parents": [
        "16a08f6d70e64a1c88ea4a6da1b0cfe1bd4196f2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 18 13:40:03 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 19 15:12:19 2019 +0000"
      },
      "message": "ART: Add option to behave fatally on unmarked kThrow\n\nAdd a runtime option that makes the verifier abort when a runtime\nexception is signaled for an instruction that isn\u0027t marked as such.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Id953fa25fbcc12c1e6a7d74b30b28b81df57e427\n"
    },
    {
      "commit": "16a08f6d70e64a1c88ea4a6da1b0cfe1bd4196f2",
      "tree": "ab9ef002d1cffc3a589281047d5e1da232504994",
      "parents": [
        "22940241f945710613c2657f9d6161302bed935d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 18 10:59:08 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 19 15:12:19 2019 +0000"
      },
      "message": "ART: Factor out runtime-exception saved_line fallback\n\nDo the same for AoT and runtime. This is a minimal regression for\nthe compiler, but allows unified handling, including market scans.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I82087935b1ad08280ab9da3f41d346b73314986a\n"
    },
    {
      "commit": "b3b2db7edeaa09751dab44a7d0339590fd7b1788",
      "tree": "ea922140487594c45e6e95d1e2ce624221977dc7",
      "parents": [
        "b5204f4216557b1f7bfd72be1fd49ec9d0960ecb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 11 15:47:14 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 16 22:13:40 2019 +0000"
      },
      "message": "ART: Use a scoped disable-moving-gc helper in reg_type_test\n\nIn general we cannot use the standard ScopedGCCriticalSection,\nbecause we rely on the RegTypeCache to load classes for the\ntest (in part for test setup convenience, in part as an actual\ntest).\n\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: I00dafc28a39fe97ecee41284fd5d8f3642bf5a2f\n"
    },
    {
      "commit": "b5204f4216557b1f7bfd72be1fd49ec9d0960ecb",
      "tree": "95ca743a14876cda3e8e185ef4613220aba196ce",
      "parents": [
        "4bd5234a05db801892ce28ea0504aebb46d06a25"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 25 12:39:15 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 16 22:13:40 2019 +0000"
      },
      "message": "ART: Add interface class join heuristic\n\nDo not treat interfaces as regular classes. This will always\nlead to a join of java.lang.Object, rejecting semantically\nvalid programs.\n\nWe want to retain IMT dispatch, forcing us to verify interface\nassigment. In the absence of set types, the result is ambiguous\nand not well defined. In a best effort, attempt to find a joint\ninterface by walking the interface tables of the join arguments\nbackwards.\n\nIn the case of two non-interface classes, we still prefer the\nclass hierarchy.\n\nBug: 69826014\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: I7e0086f045e5bb2a7c3ee3464de45fc5b02f4d3f\n"
    },
    {
      "commit": "c658278be744b3b6d1b964a826128f9f1f5662f7",
      "tree": "71f7dd393ebcf67518c03ff32f4209ba2110f4e5",
      "parents": [
        "bfa8b1ea0f7edf84c4137d5a822cc8acaf90acda"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 15:06:18 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 16 01:19:08 2019 +0000"
      },
      "message": "ART: Introduce CompatThrow\n\nAdd an \"virtual\" instruction flag to signal a historical throw\nthat is not captured by kThrow. Both kinds of instructions need\nto capture the work line at the beginning of a verification step.\n\nLong-term, remove CompatThrow.\n\n\"Annotate\" return-object.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I07e9f07da3ebcc9ccd1191ffc2c145b2c83a84f8\n"
    },
    {
      "commit": "bc919af448aef9e8043e56ca83a2aa4ff90b9ad6",
      "tree": "904105c3bd20d6ee9af1fbfcda19f1eaa7ffc42d",
      "parents": [
        "d78122b424c1be24f7e9ac7983af3f43e9d4e294"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 14:09:51 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:52:47 2019 +0000"
      },
      "message": "ART: Disallow unresolved return types after Q\n\nFor apps targeting future releases, do not allow type mismatches\ninvolving unresolved types. The behavior complicates the verifier\nand the runtime and does not conform to regular expected behavior.\n\nHistorically this has been done for app compatibility when non-native\nmultidex was a thing. In that situation, even at runtime when an \"early\"\nclass is being verified a type might not be available because it is\nsupplied by a later injected dex file.\n\nClassloader manipulations in this way are no longer supported. Classes\nhave to be available at verification time to not fail the class.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I9608c79183be7b85b76892498d6a7007a29f2434\n"
    },
    {
      "commit": "d78122b424c1be24f7e9ac7983af3f43e9d4e294",
      "tree": "e3d89743ab77a860b45306530afbb519666aa68a",
      "parents": [
        "d70a97c6d4a0954bed8991bd89a93bd3da9476f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 14:06:53 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:36:17 2019 +0000"
      },
      "message": "ART: Do not access-check type on instanceof peephole\n\nWhen attempting the instanceof+branch peephole, do not retrieve\nthe cast type with an access check to avoid a posted failure. That\nfailure does not happen, it belongs with the instanceof.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I87e2228bff9f3374e7141e600f24554846ecac32\n"
    },
    {
      "commit": "d70a97c6d4a0954bed8991bd89a93bd3da9476f6",
      "tree": "82612bad0122b0083113edc4702dc3bad4168157",
      "parents": [
        "2808be84a8f86542450670acdb5e6b55498ff5f0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 01 14:00:05 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:30:05 2019 +0000"
      },
      "message": "ART: Monitor-stack merging should not be handled as throwing\n\nMismatched stacks and other issues on merging register lines should\nnot be handled as a pending runtime exception. Actual exceptions\nwill be thrown at monitor-enter/exit and return sites. Both are\nalready covered: the former by being annotated kThrow, the latter\nby explicit checks for the stack (and end of control flow).\n\nThus, Fail() with pending_exc set to false in register line merging.\nThis still triggers lock verification at runtime.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I06acca2920110e3de2a2bed7bae6695788f77449\n"
    },
    {
      "commit": "0d87f99907f01ced713bf2dff97ee6655da077f3",
      "tree": "7e015521b706acdcedf5404f8e2f936e12b74cc4",
      "parents": [
        "4146e064849cd566dfb5d9f851f95fb490ec0836"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 13:19:45 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 11 23:12:52 2019 +0000"
      },
      "message": "ART: Remove VERIFY_ERROR_UNRESOLVED_CATCH\n\nReplace with a more generic SKIP_COMPILER, mark the Fail() calls as not\nthrowing, and replace the standard occurrence with NO_CLASS.\n\nBug: 121245951\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 800 --jit-on-first-use\nChange-Id: I9f601702f27d815840538c04b332a52bf1c58c54\n"
    },
    {
      "commit": "4146e064849cd566dfb5d9f851f95fb490ec0836",
      "tree": "fdf0e0cd034f93fb78b1ac59a656022eb8c76b76",
      "parents": [
        "50037df21707c34beda776263536276fd9fbbe20"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 13:18:04 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 11 23:12:52 2019 +0000"
      },
      "message": "ART: Prepare to remove VERIFY_ERROR_UNRESOLVED_CATCH\n\nAdd a parameter to Fail() that defines whether a runtime exception\nis expected at that point.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Iff98ae24ef095df411804150d41c80493d42c09f\n"
    },
    {
      "commit": "4a30f89d65efa9b85c34bbd7aa23ea4cd38b920d",
      "tree": "95ad8586ef841a3a5750c24a7780b58bf12cac3c",
      "parents": [
        "7a82acc7ee79b198f7b4638a15cb1c3d1625ab6c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 04:57:58 2019 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 04:57:58 2019 +0000"
      },
      "message": "Revert \"ART: Remove VERIFY_ERROR_UNRESOLVED_CATCH\"\n\nThis reverts commit 7a82acc7ee79b198f7b4638a15cb1c3d1625ab6c.\n\nReason for revert: NO_CLASS doesn\u0027t have the right semantics for the compiler\n\nBug: 121245951\nChange-Id: I8dbeb7fbd6a697fe536535f1c696187041d7fcab\nTest: m test-art-host\n"
    },
    {
      "commit": "7a82acc7ee79b198f7b4638a15cb1c3d1625ab6c",
      "tree": "1b534443e584be4bcccddfa533d7d94305d37645",
      "parents": [
        "11410de860d4e6bd6d3cc90aa604575430882302"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 01 13:54:21 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 08 14:52:45 2019 -0700"
      },
      "message": "ART: Remove VERIFY_ERROR_UNRESOLVED_CATCH\n\nInstead add a parameter to Fail() that defines whether a runtime\nexception is expected at that point.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Id9132eabc26b71a305ccb87f2182b4ae2e5b8c35\n"
    },
    {
      "commit": "4d6ca2e01e5e9b0006b94039f53e552dd0236d02",
      "tree": "1731d3dd4df7790ab21532a8d2bd3be04baef0df",
      "parents": [
        "af213ccb19231a4f46340bf8a791b4f498b8bda4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 01 17:18:37 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 16:00:57 2019 +0000"
      },
      "message": "Deterministic VerifierDeps::Dump().\n\nThis makes is easier to diff oatdump output.\n\nTest: m dump-oat-boot \u0026\u0026 \\\n      grep \u0027Dependencies of \u0027 out/soong/boot.arm.oatdump.txt\n      (framework.jar dex files are ordered properly.)\n\nChange-Id: I55f14950f00e4c3cbdda53ec513837d11ade026e\n"
    },
    {
      "commit": "cc08c50948d8b2a93b53a327717c7b2a146ac754",
      "tree": "e84f5bd858d841d4a485f3578b8fe5514b48b7d4",
      "parents": [
        "b839fbb52a3180bbac16a8f984cb11954a2a1837"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 27 16:28:09 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 29 00:58:23 2019 +0000"
      },
      "message": "ART: Restyle VerifyError\n\nUse shift expressions that are now allowed in enums that auto-generate\noperator\u003c\u003c.\n\nCleanup, and in preparation for additional entries.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I7ea68e5671dd2e2afd77beed056ec5919d807942\n"
    },
    {
      "commit": "43884b23d61dd9c2754ef4e716458f8306b07b94",
      "tree": "5466067e89d3d3d81e069abb43b93118ca5a48bf",
      "parents": [
        "f68b698e4774275e87bc73fa916faca4c6b11744"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 27 14:05:52 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 29 00:58:23 2019 +0000"
      },
      "message": "ART: Coalesce verifier flags into bit struct\n\nMakes it easier to add flags without increasing size or changing\npadding.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I26d0491fb7eb26e441874188a8db9f276ce1aaf8\n"
    },
    {
      "commit": "5dfbe7ae9ed9a1a82446d32118190105a211a2d2",
      "tree": "9ea2b6ab4dd2c75b63087c9431326f592763ad8a",
      "parents": [
        "591b1d26297fff3177a529adf0833d8a5eb2c463"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 25 12:33:29 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 18:43:37 2019 +0000"
      },
      "message": "ART: Refactor ClassJoin code\n\nRemove function from header and move to anonymous namespace.\nMake the function smaller by factoring out a larger case.\n\nBug: 69826014\nTest: m test-art-host\nChange-Id: Ida4c11448c13700e9a3412a306a244561fd9f60e\n"
    },
    {
      "commit": "1e52a07b4de0f000028e55c332aa46495f60879c",
      "tree": "1eb7dfdce749461c5a8997cbde49ed6d0fea2aa0",
      "parents": [
        "e0ce8bf743b7fc5816bc4045716d75378ce3b654"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 25 09:12:04 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 25 16:25:13 2019 +0000"
      },
      "message": "Correct Indicies -\u003e Indices\n\nThis is a misspelling that is somewhat common in art/.\nFix up all the instances I could find.\n\nTest: ./test.py --host\nChange-Id: I0a5def6e4126cf4e61efb0619bd59eb45ba7f324\n"
    },
    {
      "commit": "d91f84166ad642bbd135acb8aadd05919ff41d85",
      "tree": "3aeab5845897abbcab5827b2c27e684f6e157219",
      "parents": [
        "90b3457f9c64efba370c51b216dabb164a40b1ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 13 10:11:14 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 17 15:21:00 2019 +0000"
      },
      "message": "ART: Log approximate arena usage for slow verifier runs\n\nAdd ArenaStack::ApproximatePeakBytes and ScopedArenaAllocator::ApproximatePeakBytes\nto get an approximate use when arena tracking is not enabled.\n\nPrint the approximate use for slow verifications.\n\nBug: 110852609\nTest: m test-art-host\nTest: manual\nChange-Id: I529838410cdf4fe8247ddf4a6196a8186b0c4f3a\n"
    },
    {
      "commit": "93adcb53c77f4f04dfebd30b94e8ea9936aa8abb",
      "tree": "bdf638b78c045eed106ace99fbdc64506712d8ea",
      "parents": [
        "01f2e3a488fa06d98e2efbaf3ea8066d8457f216"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 06 20:16:07 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 07 23:05:24 2019 +0000"
      },
      "message": "ART: Remove some compile-time info points\n\nRemove no longer needed compile-time info points in the verifier. Only\ncheck-casts are still reliant on support for elision.\n\nThis reduces the number of pre-populated register lines in a large\napp by 70%, and the number of instructions executed during verification\nby about 2%.\n\nBug: 110852609\nTest: m test-art-host\nChange-Id: Iefa8253749b1a2750f57360e08ddfb502d0478b1\n"
    },
    {
      "commit": "0a7d0b10d2d2dd802f32c5df4026bafc12537625",
      "tree": "6746f6c13be8419e95ab959267a0b93dfadb1468",
      "parents": [
        "6087bc210f5b246476045ca21568f446ad79222a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 04 10:42:29 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 06 20:43:26 2019 +0000"
      },
      "message": "ART: Mark unreachable catch handler code in verifier\n\nArtificially block the method from being compiled as the compiler does not\ntrack unreachable code correctly.\n\nBug: 134061982\nBug: 134429168\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nTest: art/test/testrunner/testrunner.py -b --host -t 800 --jit-on-first-use\nChange-Id: Iaa6abdd8b61e69a8feb74dcd8f47ded27fb4a353\n"
    },
    {
      "commit": "6087bc210f5b246476045ca21568f446ad79222a",
      "tree": "f11b8e4ea6d6015290dceb52de126e39d2e4d76f",
      "parents": [
        "9a45d01b40692d9b9568f5e80d21fc7f51bcac5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 03 15:52:08 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 06 20:43:26 2019 +0000"
      },
      "message": "ART: Handle unresolved catch handler types differently in the verifier\n\nThe move-exception should not trigger a synthetic throw, as that\nmay be caught by another catch handler, while the code is unreachable.\nUse a specific flag and failure instead.\n\nBug: 134061982\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nChange-Id: Ie6859e3a1910171b34882889ebece6cadc9dd508\n"
    },
    {
      "commit": "af52cbeb9b54cd3c3094cdb391041005e5796e77",
      "tree": "b8803696ddf0af29b5cecc6810bfdd3292b07c0c",
      "parents": [
        "8e6bf106a5f6c26dfb7aa4fd0f8e9a4daabcbaee"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 15:05:09 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 24 17:06:32 2019 +0000"
      },
      "message": "Use TargetSdkLevel in CalculateVerificationInfo\n\nWe were using api_level\u003d0 (meaning most recent api) for calculating\nthe verification information of a single method dynamically. This\nmight in the future lead to problems if we condition more of\nverification on the API level. To prevent this future problem we will\ninstead use TargetSdkVersion as the API level.\n\nTest: ./test.py --host\n\nChange-Id: Ie87e0b1b6b07b43d2dc84101cb7764cc4087aca9\n"
    },
    {
      "commit": "e2ddce3dec02cf7c9eb5efb2e29c250a5e909995",
      "tree": "df9ee07990149cceffe0496807c0e88f534211ec",
      "parents": [
        "6045bc202f2c470b63c40a5a25db369b5a049c28"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 17:08:35 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 17:29:29 2019 +0000"
      },
      "message": "Revert^2 \"Add verifier fallback for JVMTI Get/SetLocalVariable\"\n\nThis reverts commit 99cbfb55fc7ac0f65b1ccdc7076219fcee383b92.\n\nThis unreverts commit e48fd0b4780efadc6b3433fe7a56aa5be2a84325.\n\nWe were incorrectly bounds-checking the register number. We were\ntreating it as unsigned when it was actual signed. Previously this\nwouldn\u0027t matter since normally the debug-info won\u0027t have any\ninformation for negative slots but by falling back to the verifier\nwe hit some check failures.\n\nReason for revert: Fixed underlying issue with bad bounds check.\nBug: 131711256\n\nChange-Id: I0b859ce322f3b23f937b72d735db8f6870c40602\n"
    },
    {
      "commit": "99cbfb55fc7ac0f65b1ccdc7076219fcee383b92",
      "tree": "5420795d367de2d4fbf2f1a73ac2b3f275a5114a",
      "parents": [
        "098e7a67588f39642567b91ecfab117dbaa84d31"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 11:39:45 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 12:23:46 2019 +0000"
      },
      "message": "Revert \"Add verifier fallback for JVMTI Get/SetLocalVariable\"\n\nThis reverts commit e48fd0b4780efadc6b3433fe7a56aa5be2a84325.\n\nReason for revert: Fails libjdwp tests. In particular:\norg.apache.harmony.jpda.tests.jdwp.StackFrame_SetValuesTest\n\nBug: 131711256\nChange-Id: Id46da7c0d26769f8f4bd469cdfb8049f6812295a\n"
    },
    {
      "commit": "e48fd0b4780efadc6b3433fe7a56aa5be2a84325",
      "tree": "5056001e02d8c4494b643c8d53fd32621e127c1c",
      "parents": [
        "abdb4592fa28d6e75f1160f01cde58ad7c3fef37"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 20 10:04:44 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 22 00:29:38 2019 +0000"
      },
      "message": "Add verifier fallback for JVMTI Get/SetLocalVariable\n\nThe JVMTI Get/SetLocalVariable functions used to rely entirely on the\nDex DebugInfo to determine the types of each of the registers. This\ncould lead to problems since, to prevent possible stack corruption, we\nwould not allow stack modification if the data was not present.\n\nIn order to remove this restriction we will instead make use of the\nmethod verifier to ensure the modification is sensible when the\nDebugInfo is not present. Since reconstructing this information using\nthe verifier is quite slow (compared to reading it from a table) we\nwill only do this when the table is missing.\n\nSince the verifier lacks some of the information available when\ncreating the DebugLocalInfo table some semantics will change depending\non if the table is present or not.\n\n - When the DebugLocalInfo table is not present we cannot always\n   distinguish between floats, ints, and other single-register\n   primitive types. For simplicity all single-register primitive\n   types can be modified and read by both the Float and Int versions\n   of the local variable functions.\n\n - Similarly we cannot always distinguish between long and double\n   variables.\n\n - Reference types are checked against what the verifier thinks they\n   need to be according to type unification. This might be more or\n   less specific than the types recorded in the functions source code.\n\n - Constant int/float \u00270\u0027 values and \u0027null\u0027 cannot always be\n   differentiated by the verifier. Therefore, one may not always be\n   able to modify some null or constant 0 registers.\n\nTest: ./test.py --host\nBug: 131711256\n\nChange-Id: I1c9d857ccdec752bfd4ebad76cc9ad96e143866c\n"
    },
    {
      "commit": "efdd1b0c818b9040b506c023d739e7ccd0714f47",
      "tree": "57842a878081a92be4e08a00ecfa1f6e25028b61",
      "parents": [
        "d6d878ef7f452335e6642265605de10220f7809f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 07 12:30:10 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 15:08:17 2019 +0000"
      },
      "message": "ART: Add throughput to verifier duration message\n\nAdd the throughput in bytecodes per second to the duration logging.\n\nBug: 110852609\nTest: m\nTest: manual (-Xverifier-logging-threshold\u003d0)\nChange-Id: I426aefd295e2a1ac190e66d0f12035e894f22080\n"
    },
    {
      "commit": "b34981b0b7a16b084a4ab30ce509ee98bf171e63",
      "tree": "3f9b8aa799d7bd20ac1d40397026030746046599",
      "parents": [
        "b9f1d3e5f109048de0055e9f19f1d5af13040e8f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 06 13:00:40 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 17:09:33 2019 +0000"
      },
      "message": "ART: Fix hidden hard fail in instance field verification\n\nMove the reference type check for the given object upfront so that\nit isn\u0027t hidden by other soft-fail cases.\n\nBug: 122501785\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nChange-Id: I715a859665a9550bc23defa63ba6fbecd13d7531\n"
    },
    {
      "commit": "bfcca58145d796fd05a68645b03229b0f3ce185e",
      "tree": "2456fb8180275a99eba9c45522543b9787991c9f",
      "parents": [
        "99db7bb218e328f8a0a85f540f2c36aa66a23215"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 12:01:55 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 15:13:44 2019 -0700"
      },
      "message": "ART: Add verifier-debug log for exception handler\n\nHelps tracking register state, in the case it is not a merge\nbut the initial setting of the target register line.\n\nBug: 130907607\nTest: m test-art-host\nChange-Id: Idebc230cd5a187b2ba986a25c536a8c2ca552d82\n"
    },
    {
      "commit": "99db7bb218e328f8a0a85f540f2c36aa66a23215",
      "tree": "84143da3dc73a3f9edd2a5e8f2ba525614186396",
      "parents": [
        "fc25ae90c7f2b93ce4cd7a920afaf893c17d08cb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 23:05:47 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 15:13:41 2019 -0700"
      },
      "message": "ART: Templatize internal method verifier class\n\nTemplatize over verifier-debug.\n\nBug: 130907607\nTest: mmma art\nTest: m test-art-host\nChange-Id: Iafde21602541aa3c878883cd793333ecc2121de9\n"
    },
    {
      "commit": "fc25ae90c7f2b93ce4cd7a920afaf893c17d08cb",
      "tree": "0dbdd16fd1de3d2dfc26e49d27d98a18cfc306e8",
      "parents": [
        "d09c0593fb9afc218dee39332e13097f1e95ee10"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 22:22:57 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:16:27 2019 -0700"
      },
      "message": "ART: Refactor verifier\n\nMove implementation to internal class, only keep minimal interface\nthat other classes depend on public.\n\nAn internal impl::anonymous namespace and duplicate MethodVerifier\nname was chosen so as to minimize the patch.\n\nIn preparation for templatization.\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I79de01139b8fbd8b4e828bb0e58faeb8666176d5\n"
    },
    {
      "commit": "d09c0593fb9afc218dee39332e13097f1e95ee10",
      "tree": "472b61e72d6899b59b09b5c7faa30eefc42558f6",
      "parents": [
        "51de69ecd20c1c9bad441359a07582d1bfa26905"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 15:44:05 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:15:57 2019 -0700"
      },
      "message": "ART: Do not expose arena allocator from MethodVerifier\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I807b713215fa948f2cbeab929abb0986ce573702\n"
    },
    {
      "commit": "51de69ecd20c1c9bad441359a07582d1bfa26905",
      "tree": "b8431689598edd4daca2ebec6a53b306f0906b4c",
      "parents": [
        "bb2467b398481a15ddb0b65cfcf3c15ff3cb0b8d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 15:14:14 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:15:48 2019 -0700"
      },
      "message": "ART: Clean up MethodVerifier\n\nRemove unused methods. Move internal methods to be private.\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I3b1a6a4495e3ddc4507881659d2c6d6d6049e8f6\n"
    },
    {
      "commit": "7c887c57b1b32b9432c74582ab9a4be43a280ee9",
      "tree": "587e4f7ea18973c01dadbe79af9d46cb9c7b21ed",
      "parents": [
        "a65859d5a1eacbba394f7f4f87a91b101445676d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 09:11:48 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 19 20:49:52 2019 +0000"
      },
      "message": "ART: Under verifier-debug, amend the hard-fail message\n\nWhen verifier-debug is enabled, include info messages and verifier\nstate dump in the hard-fail message, which will be included in\nthe VerifyError.\n\nBug: 124804473\nTest: m test-art-host\nTest: manual\nChange-Id: Ib34d7e1f620c120e64737cf7edfd1f99cf67b0f7\n"
    },
    {
      "commit": "2ad6cceed5fd531c86e9da4ebdf2cb6c012382a0",
      "tree": "804103d4e5b34770168d4175cba9942efe6f2074",
      "parents": [
        "b29ecc1a44f2741bd8287c659be1c0854d4f6365"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 11 16:17:39 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 15 17:38:27 2019 +0000"
      },
      "message": "ART: Make LogVerifyInfo newlines consistent\n\nUse an RAII helper to make logging to the verifier\u0027s info_messages_\nconsistent - no caller needs to add a final newline.\n\nTest: m\nTest: manual\nChange-Id: Ic830b816293078873160808fe275b862a672ff47\n"
    },
    {
      "commit": "4a57d5f3c2bb4ce8290ca73f1130ff23b1b3ae5b",
      "tree": "4c21f0554a450e70107590cdb799d2d2fdd5a8c0",
      "parents": [
        "527072e915c58b67005d5e687cf727bf89c7884a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 03 12:31:18 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 03 12:31:18 2019 -0700"
      },
      "message": "ART: Remove old cout usage in method_verifier\n\nLog to regular LOG.\n\nBug: 124804473\nTest: m test-art-host\nTest: manual\nChange-Id: I0ad352f9a20afa1dfd42f343fe1b247714279348\n"
    }
  ],
  "next": "7126c5b47d34b9a4d6d7553b8ea48e5085ee6b41"
}
