)]}'
{
  "log": [
    {
      "commit": "520c9b7649cdfcc12e1df414055c383335f54b69",
      "tree": "4549853d6508804f86763418d51778351eb0ab74",
      "parents": [
        "f9795d1ebd30105a91089815068b512ff63b8ae5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 04 16:31:53 2021 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 05 11:50:36 2021 +0000"
      },
      "message": "verifier: Clean up `RegisterLine::SetRegisterType*()`.\n\nIn `RegisterLine::SetRegisterTypeWide()`, replace the pair\ncheck with a DCHECK() as all callers pass valid pairs.\n\nIn `RegisterLine::SetRegisterType()`, the non-pair check was\nneeded only by a single caller (the only one that checked\nthe return value), so move the check to that caller and use\na DCHECK() instead.\n\nRemove the now unnecessary `verifier` argument from these two\nfunctions and change return type to `void`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 28313047\nChange-Id: Iabeb6fdb61d3bf2713bf7c5a72288fff54a35754\n"
    },
    {
      "commit": "4b0c9b91de2731675b6121a33c192585ba988992",
      "tree": "ad34b290f6b0b74fc7cad1a68bd9bb3384b0f645",
      "parents": [
        "dae0c24dc2fcee41121609987ef0757112a4271c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 29 15:58:44 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 04 13:09:16 2021 +0000"
      },
      "message": "Remove the notion of soft failure within the verifier.\n\nBug: 28313047\nTest: test.py\nChange-Id: I58b9fb74161f24e095ae049f3c2886713f3213d5\n"
    },
    {
      "commit": "03ce70a18e860abe5ab2e2198cb928e43a732e9c",
      "tree": "ae45bc5d0e976582985f29f63c5703f1a4f643da",
      "parents": [
        "2a973fcbea04cfb871ae9e412df2301e1d24214c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 27 14:44:03 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 28 07:15:59 2021 +0000"
      },
      "message": "Better handling of unresolved fields in VerifyISFieldAccess.\n\nEven if we cannot resolve a class / field, we know we can look in the\ndex file for finding a field of the class being verified.\n\nTest: 831-unresolved-field\nBug: 28313047\nChange-Id: Ie6c3e05c8df064becc3dae913b82859875d171ef\n"
    },
    {
      "commit": "ad0daef0da6be2cb613b879437d607c7b2ff2dbe",
      "tree": "c9518484309538d093e2ebc935080ef10937ed23",
      "parents": [
        "39e2979b92c25fc825944bda346216395d326395"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 20 14:58:58 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 21 10:27:23 2021 +0000"
      },
      "message": "An incompatible field type assignment is always an error.\n\nEither make it conditional type check for unresolved types, or a fatal\nerror.\n\nTest: test.py\nBug: 28313047\nChange-Id: Iec06306d6d2c89bc6c871b03e1469de0cf2b8ebb\n"
    },
    {
      "commit": "19444a693ad87be31bb9fb00e310122f6d1bb67a",
      "tree": "2f3174aec601651633c4864191c4b89945e5643c",
      "parents": [
        "18c72c6f62f9d8e2675a3da452a97b46c4bd2182"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 18:26:13 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 07 17:16:58 2021 +0000"
      },
      "message": "It\u0027s a hard failure if return types cannot match.\n\nRemove unused CanAssignArray method.\n\nTest: test.py\nBug: 28313047\nChange-Id: I5b172b65d262f81a85a899e169c248a722d1e4cf\n"
    },
    {
      "commit": "18c72c6f62f9d8e2675a3da452a97b46c4bd2182",
      "tree": "c88386e68e4110622bd2f835923d081f86e8881a",
      "parents": [
        "b05bf89967e904fcde3da871704b0bed3a012958"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 15:02:47 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 07 14:24:29 2021 +0000"
      },
      "message": "Change soft failure into more precise missing method.\n\nTest: test.py\nBug: 28313047\nChange-Id: I82563f15266dc8c225f41cae47523d6bc8a2f832\n"
    },
    {
      "commit": "ebefce33baed0dccd5ab703bff37cb14c3da8572",
      "tree": "8535e9d6029adcea0f9d1fda0ca1da798edbe5ca",
      "parents": [
        "adc11b1350658af7acef4b72af785ae1ec3ae2bf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 14:47:17 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 07 12:43:32 2021 +0000"
      },
      "message": "Make it a hard failure if we could not find a catch clause.\n\nTest: test.py\nBug: 28313047\nChange-Id: Ib80c771cc9d730909d00792c1f1d28b9c46f1a24\n"
    },
    {
      "commit": "adc11b1350658af7acef4b72af785ae1ec3ae2bf",
      "tree": "5823847a964d586a47240de5bdb571afa45a5882",
      "parents": [
        "87565852303a0c807f2ee6cdd33cef02a80b72bd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 14:19:28 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 07 10:36:37 2021 +0000"
      },
      "message": "Turn unconditional soft failure into a hard failure.\n\nThe failure isn\u0027t going to change at runtime.\n\nTest: test.py\nBug: 28313047\nChange-Id: I15fa1b4d85fc3742e2b1d643779a4f6ac005d97f\n"
    },
    {
      "commit": "87565852303a0c807f2ee6cdd33cef02a80b72bd",
      "tree": "d9d80eb4c889d23753540857c91a0cabbc8843ce",
      "parents": [
        "1728bb7791ce6c0da95a31932e83cf4a462a7cd6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 17:54:43 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 07 08:03:38 2021 +0000"
      },
      "message": "verifier: the throw bytecode must have a throwable class as input.\n\nOtherwise it\u0027s a hard failure.\n\nRemove soft failure test as soft failures are going away.\n\nTest: test.py\nBug: 28313047\nChange-Id: Ifb49b9d966dc2eff5b1f8eb7ade15d402f6ef5f1\n"
    },
    {
      "commit": "1728bb7791ce6c0da95a31932e83cf4a462a7cd6",
      "tree": "0907395952b28b896a69dc14083a93e5df40d51f",
      "parents": [
        "3a8dfcf7915cbfb479c9d296ebd3354a3e96baba"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 14:54:02 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 17:25:51 2021 +0000"
      },
      "message": "Turn soft failure into hard failure.\n\nIf we cannot guarantee the assignability at compile-time, neither can we\nat runtime.\n\nTest: test.py\nBug: 28313047\nChange-Id: I42070a523a003f067370e739f1d808610dfefbaa\n"
    },
    {
      "commit": "3a8dfcf7915cbfb479c9d296ebd3354a3e96baba",
      "tree": "a8d3d466d90c5bb5322823a8bdc69f40e7bb216d",
      "parents": [
        "e172a80e18f5c4db7aad1b0ff2cc5ae04983c234"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 14:29:39 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 17:05:20 2021 +0000"
      },
      "message": "Catch clauses should only have throwable types.\n\nTest: test.py\nBug: 28313047\nChange-Id: I48bc06b408e4f80cc52293e0c71331d2e15f753d\n"
    },
    {
      "commit": "e172a80e18f5c4db7aad1b0ff2cc5ae04983c234",
      "tree": "8a53a6b1eb5a058ef57f8aac9b8cde8d87d34c4d",
      "parents": [
        "59193a6871c3f55190362742b5e495372a28f47d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 14:24:13 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 14:24:13 2021 +0000"
      },
      "message": "Revert \"Cleanup return type checks with arrays.\"\n\nThis reverts commit 59193a6871c3f55190362742b5e495372a28f47d.\n\nBug: 28313047\nBug: 199056476\n\nReason for revert: Braino, missing hard failure.\n\nChange-Id: I6b8e4ce1dfa4f4a7d5eb44dfd496ac1a92ce6f85\n"
    },
    {
      "commit": "59193a6871c3f55190362742b5e495372a28f47d",
      "tree": "160f0b95000ffdaa35151877065fe472177572ae",
      "parents": [
        "f6fe36332a339c4e0ea8281f8bb41cbc384bca96"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 17:48:20 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 10:33:34 2021 +0000"
      },
      "message": "Cleanup return type checks with arrays.\n\nIt\u0027s always a hard fail if array classes are not assignable.\n\nTest: test.py\nBug: 28313047\nChange-Id: Ia471681cac531b53d1dc29111a6d04b1fd5b61ad\n"
    },
    {
      "commit": "f6fe36332a339c4e0ea8281f8bb41cbc384bca96",
      "tree": "8a53a6b1eb5a058ef57f8aac9b8cde8d87d34c4d",
      "parents": [
        "0700b69cb0c81c3590726be7fbe5b98531cec76b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 23 17:43:53 2021 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 06 10:15:52 2021 +0000"
      },
      "message": "Relax failure on return type for unresolved types.\n\nBe consistent and don\u0027t make it a hard failure, but an unresolved\ntype check that will execute at runtime.\n\nTest: test.py\nBug: 28313047\nChange-Id: Ifdc78c2a7113e7afbf2ad44184b48b3c716036d6\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "179b7c61ea6769b99f70c80a7a89cbb212423ec2",
      "tree": "06130898bfb2d8c3f71f4fe181277f20e1942726",
      "parents": [
        "c8b7d445e02b752a68d824e2bc69658dfb76288a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:38:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 25 16:54:37 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify String allocations, fix stale refs.\n\nObjPtr\u003c\u003e-ify String allocation functions and related code\nand remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr(). Fix\nstale reference uses in reference_table_test and stub_test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I42927fb8b7240e5132188f73318b2ccb218748fd\n"
    },
    {
      "commit": "a43ba3da86c046c545a988f3d40f53c24a525f83",
      "tree": "a66479561d9f14a9b19e31a9a6851f81ae50673c",
      "parents": [
        "e37b7915908dba10e90c39a3a82cb0cd1dc05f5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 13 15:49:20 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 15 16:11:36 2019 +0000"
      },
      "message": "ART: Add ClassVerifier\n\nRemove class handling from MethodVerifier.\n\nTest: m test-art-host\nChange-Id: I0e125e0c8a852936ed7cff0f349a7fde97f62826\n"
    },
    {
      "commit": "43e43251a011c05c21fe120ba791313b6ea53d5d",
      "tree": "29dc4d668d4887f807213fb5b5c69b2e9578a8a0",
      "parents": [
        "b9b995738c8f53d68446d14553c1befd487877e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 12:06:57 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:03:16 2019 -0800"
      },
      "message": "ART: Handle clobbering in verifier peephole\n\nBug: 121191566\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nTest: m test-art-host\nChange-Id: I1c983fca5f92570f9dba4fb8ef3bcd3c7d3854f2\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "dc39d32cc0c72af00b58c58077fb2cad6774df03",
      "tree": "ae3cce77bb8540717273fca4aad880e6b5a238bc",
      "parents": [
        "ff71e663a08b4218fc9d08f8e65ad7da84a4ab99"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:26:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:31:03 2018 -0700"
      },
      "message": "Revert^2: \"ART: Restrict some checks in the verifier to P+\"\n\nReinstate old behavior for apps targeting earlier releases.\n\nThis reverts commit 5ff2596da427351308992a1677348e460a398591.\n\nBug: 111969862\nBug: 113863780\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: I4fd967271cf43e21af34739a08907a1a7953539a\n"
    },
    {
      "commit": "ff71e663a08b4218fc9d08f8e65ad7da84a4ab99",
      "tree": "eac052f9eb2a23f395338bf08d6e526a45375b89",
      "parents": [
        "77bb25b037d120ecbf5e7bbd90be6375b9e61957"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:25:12 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 04 09:27:43 2018 -0700"
      },
      "message": "Revert \"ART: Restrict some checks in the verifier to P+\"\n\nThis reverts commit 2337d53846d9d2e7f82f8cf64ff25585ad010339.\n\nChangeset is incomplete and triggers debug errors.\n\nBug: 111969862\nTest: n/a\nChange-Id: I74b5feb054403696433be24147b5484f2c3d27e9\n"
    },
    {
      "commit": "2337d53846d9d2e7f82f8cf64ff25585ad010339",
      "tree": "713afb905bc3da0d96bf4e2962b582474147ee17",
      "parents": [
        "6cc23acba91d26d7afd6bc681004ac5865a8a163"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 18:58:25 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 18:58:25 2018 -0700"
      },
      "message": "ART: Restrict some checks in the verifier to P+\n\nReinstate old behavior for apps targeting earlier releases.\n\nBug: 111969862\nTest: m test-art-host\nTest: cts-tradefed run commandAndExit cts --m vm-tests-tf\nChange-Id: I207718d65f906817d20d5b32b53011530b616fab\n"
    },
    {
      "commit": "6cc23acba91d26d7afd6bc681004ac5865a8a163",
      "tree": "d5b6850d7ce511658a33ca417764eac92cafe2d1",
      "parents": [
        "e9dce6a280057315a8a58ed46190c9a893c90fba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 15:22:43 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 24 15:22:43 2018 -0700"
      },
      "message": "ART: Add API level to verifier\n\nPass API level to verifier. In preparation for API-level dependent\nchecks.\n\nBug: 111969862\nTest: m test-art-host\nChange-Id: I700ef52e28436a7fda8b9d9ef29841110ed6d3bb\n"
    },
    {
      "commit": "0b0ffc1429fde6fbf9bac20b8582e71ff1569451",
      "tree": "8da642e25c1e0dce946290389a9860092da184d1",
      "parents": [
        "72fb8639a61e100dcc39645c35a5c3e394ab0eba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 01 14:41:27 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 01 14:58:21 2018 -0700"
      },
      "message": "ART: Add parameter for verifier timing log threshold\n\nMake the old 100ms timing threshold configurable.\n\nBug: 111857793\nTest: m test-art-host\nTest: manual\nChange-Id: I6c3d0c05acbe9d35d71999522077d5768c4e6c20\n"
    },
    {
      "commit": "b07dcdba37e9a5652b7754a6bd9c3538880d6668",
      "tree": "15524fb0505323ec78bf4d8841245da6fe61d6ee",
      "parents": [
        "6250dfa22577160b270f3f3165260739707cf7d3",
        "c945e0d410ca8d4e9ba09272e8727a3192f1e449"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 20 13:06:30 2018 +0000"
      },
      "message": "Merge changes I87f2999f,I8af0e845\n\n* changes:\n  Remove ArtMethod\u0027s declaring class state checks.\n  ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n"
    }
  ],
  "next": "d93e374e273dd45f5d829399da1d4201bf46057e"
}
