)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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"
    }
  ]
}
