)]}'
{
  "log": [
    {
      "commit": "b15e8797d2ca6fb480a940887c66dd2aae7c9065",
      "tree": "23bd6e44c31b45fde7d92bbe7620329a61c1fcf5",
      "parents": [
        "79bf0b8e9c704e63029bb3badf9c4872484a827b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 28 12:20:59 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 10 09:46:01 2020 +0000"
      },
      "message": "Verify ART run-tests\u0027 standard output and standard error separately.\n\nIntroduce expected standard error files for ART run-tests. Collect\ntests\u0027 standard output and standard error separately and check them\nagainst the corresponding expectation file.\n\nTest: Run ART run-tests on host and device using `testrunner.py`.\nTest: atest --test-mapping art:all\nTest: atest --test-mapping cts/hostsidetests/jvmti:all\nBug: 171865375\nBug: 147812905\nChange-Id: Ie95bec4a4684ff6791d464124ce8976339432d1f\n"
    },
    {
      "commit": "a073f46104fbce0482fb759d5ccfb32ee39cc973",
      "tree": "985538ce69fa4d9253725cddaca936ddc3eaea86",
      "parents": [
        "5a19854c682a994729f704806d6c0de1de349631"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 28 12:48:24 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Nov 05 18:15:49 2020 +0000"
      },
      "message": "Rename ART run-tests `expected.txt` files as `expected-stdout.txt`.\n\nThis is in preparation for the addition of `expected-stderr.txt` files\nin all ART run-test directories, which will record the expected\nstandard error for each of these tests, and which will be verified\nalong with `expected-stdout.txt`.\n\nTest: Run ART run-tests on host and device using `testrunner.py`.\nTest: atest --test-mapping art:all\nBug: 171865375\nBug: 147812905\nChange-Id: I37e3c4b8409475790e2fc63514cdf57156d47ff4\n"
    },
    {
      "commit": "2731eb474f3f1b9c7598bd477ebbbb1aae28d833",
      "tree": "848224dec52ebec3dcdfbfeda9c756e5fb552603",
      "parents": [
        "14464670d7d6a226b768873f25d63f5d025941ff"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jul 24 12:10:12 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jul 26 21:08:18 2020 +0000"
      },
      "message": "More inclusive language fixes\n\nBug: 161896447\nBug: 161850439\nBug: 161336379\nTest: art/test.py --host\nChange-Id: I1519e22d40cb28f243dd75b12d455cfa844726fc\n"
    },
    {
      "commit": "b1f9c79c550e4d9d77d85ab723b642cd0eb7afad",
      "tree": "99e6c330f7b9c9c4e7c659788e4920ebdd96555a",
      "parents": [
        "b27d874ebc0c067d96994a6ebe3c10eaeb2e4a75"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:10:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:11:52 2018 +0100"
      },
      "message": "Remove all multidex.jpp files.\n\nThese are unused since jack was removed from the tree.\n\nTest: Rely on TreeHugger\nChange-Id: Iaf16bc70ed943d46cd56a3140deb7508c8bf985f\n"
    },
    {
      "commit": "2c64a837e62c2839521c89060b5bb0dcb237ddda",
      "tree": "65475ed2e313ff17354e741bac7e9c85739b8b95",
      "parents": [
        "6cd0005698181e4cef2247b632d396e605d58fa3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 04 11:31:56 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 05 11:27:50 2018 +0000"
      },
      "message": "Change ClassStatus to fit into 4 bits.\n\nIn preparation for extending the type check bit string from\n24 to 28 bits, rewrite ClassStatus to fit into 4 bits. Also\nperform a proper cleanup of the ClassStatus, i.e. change it\nto an enum class, remove the \"Status\" word from enumerator\nnames, replace \"Max\" with \"Last\" in line with other\nenumerations and remove aliases from mirror::Class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 64692057\nBug: 65318848\nChange-Id: Iec1610ba5dac2c527b36c12819f132e1a77f2d45\n"
    },
    {
      "commit": "f6c66c3348a2b64e4b6472827e31f711142006e3",
      "tree": "0795f80e2c07dc79904590ddeb0fbe55ba9e6176",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Thu Dec 17 14:13:00 2015 +0000"
      },
      "committer": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Fri Jun 02 16:53:23 2017 +0100"
      },
      "message": "Tests: never use System.err\n\nAlways print stack traces to System.out, and replace all\nSystem.err.println()\u0027s with System.out.println().\n\nFollow-up of https://android-review.googlesource.com/#/c/187020/ and\nhttps://android-review.googlesource.com/#/c/407032/.\n\nTest: m test-art-host\n      m test-art-target\nChange-Id: I9ab9cd955a8db25b2ec6673790e5bc924f62c88a\n"
    },
    {
      "commit": "72ab684871f870aead76b23cb67deb046107b380",
      "tree": "d4bb40cab65df449246b35ae582234238676b7bb",
      "parents": [
        "e36c51aee58e61e9fc89851b767379c587f050e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 20 19:32:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 24 12:05:02 2017 +0000"
      },
      "message": "Add class status for resolved erroneous classes.\n\nSplit the old ambiguous status mirror::Class::kStatusError\ninto kStatusErrorUnresolved and kStatusErrorResolved. Once\na class has been resolved, IsResolved() shall return true\neven if the class later becomes erroneous. Allow returning\nerroneous class from ClassLinker::EnsureResolved() if it has\nbeen previously resolved. This allows consistent behavior\nfor retrieving classes, immune to multi-threaded races and\nmulti-dex weirdness. It also allows JVMTI to properly report\n\"prepared\" (i.e. resolved) classes that are also erroneous.\n\nThe new behavior is consistent with the RI.\n\nAdd regression tests to 008-exceptions for inconsistent\nbehavior for multi-dex retrieval of erroneous resolved class\n(wrapping or not wrapping the old exception based on which\ndex file is used for lookup) and for a CHECK(IsResolved())\ncrash in ClassLinker::LoadSuperAndInterfaces() (without any\ntests for similar checks that could have previously failed\nonly due to extremely unlikely race conditions; these should\nnow also be fixed).\n\nInconsistency still remains for class verification as shown\nby the new exceptionsForSuperClassInitFailure() test in\n008-exceptions, where interpreter and Optimizing still\ncause different exceptions to be thrown.\n\nNote: This is partially changing behavior implemented for\nbug 28787733. Since we allow the class loader to retrieve an\nerroneous resolved class, the ExceptionInInitializerError is\nnot thrown at all from VMClassLoader_findLoadedClass(), so\nthere is nothing to wrap in ClassNotFoundException.\n\nTest: m test-art-host\nBug: 30627598\nBug: 28787733\nChange-Id: I86cdca00f35a0d6221d2559e3026ac0428a3613c\n"
    },
    {
      "commit": "64daeddb621ec4879d6a723a4748dd8b11023607",
      "tree": "e5c4a8201d153867ddfa44387f5b8cb0a7691263",
      "parents": [
        "7f3b38cc23b638ab84ac01a94e90f0456da3b688"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Mon Dec 14 10:15:04 2015 +0000"
      },
      "committer": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Wed Dec 16 14:26:19 2015 +0000"
      },
      "message": "Make the 008-exceptions test print everything to stdout\n\nPrinting to different streams (stderr and stdout) may cause the\nmessages to be interleaved, making the test fail. Without this patch,\nthis kind of outcome has been observed:\n\n--- expected.txt\t2015-12-09 08:13:50.583294910 +0000\n+++ output.txt\t2015-12-09 08:55:35.635185771 +0000\n@@ -1,15 +1,15 @@\n Got an NPE: second throw\n java.lang.NullPointerException: second throw\n-\tat Main.catchAndRethrow(Main.java:77)\n+Static Init\n+BadError: This is bad by convention: BadInit\n+java.lang.NoClassDefFoundError: BadInit\tat Main.catchAndRethrow(Main.java:77)\n \tat Main.exceptions_007(Main.java:59)\n \tat Main.main(Main.java:67)\n Caused by: java.lang.NullPointerException: first throw\n \tat Main.throwNullPointerException(Main.java:84)\n \tat Main.catchAndRethrow(Main.java:74)\n \t... 2 more\n-Static Init\n-BadError: This is bad by convention: BadInit\n-java.lang.NoClassDefFoundError: BadInit\n+\n BadError: This is bad by convention: BadInit\n Static BadInitNoStringInit\n BadErrorNoStringInit: This is bad by convention\n\nChange-Id: Iaabf5ed593d100abf157adf46c1761338227d2cf\n"
    },
    {
      "commit": "cb086955c2a21270cd2f53a8bce71e577d776506",
      "tree": "be580e6a4050539b2785d6d92cb9e71507c075d2",
      "parents": [
        "accc24985c08e98a27f43bc856fba4c3c48e79e9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 02 16:20:00 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 04 18:01:26 2015 -0800"
      },
      "message": "ART: Change behavior for rethrowing init failures (2)\n\nAlways store the pending exception when making a class erroneous.\nInstead of filtering by ExceptionInInitializerError, add an option\nto the rethrow that enforces a NoClassDefFoundError, which is required\nby the specification.\n\nUse the libcore companion change to add the stored error (if any) as\na cause to the NoClassDefFoundError, which should significantly help\ntracking down issues.\n\nFix run-test 008 to expect spec-compliant behavior. Test that a cause\nhas been set.\n\nBug: 25445103\nChange-Id: I6a0dc54e78312283faf23415887eff387531407f\n"
    },
    {
      "commit": "99babb6add7db19ce7605f6d5e4aee79d52e386f",
      "tree": "116f63fc2f96ad103a5dc121667d4b3df9e6e2ff",
      "parents": [
        "3f922d1f3ccd7a1341f887ac3e8176b5208ecf6d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 02 16:20:00 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 04 12:16:16 2015 -0800"
      },
      "message": "ART: Change behavior for rethrowing init failures\n\nAllow to store a Throwable instance or a throwable class. Handle\nrethrow accordingly.\n\nBug: 25444180\nChange-Id: I703c2c6eaf34ad0e3bc0f5a104d65f2ff1b212ca\n"
    },
    {
      "commit": "bfdcdc1e2c0af34aeaf7b5b4d499975e0c3157be",
      "tree": "17143f52b438284477fa6e3ac8fe74b0d82a5744",
      "parents": [
        "8e58d76eb30a50e38c46bd6277186116937ba396"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 22 18:10:36 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 22 18:10:36 2015 -0700"
      },
      "message": "ART: Fix re-throwing failures of non-convention errors\n\nWhile it is convention that Throwable subclasses should have a\nconstructor with a String argument, that is not rigorously enforced.\nSo if a static initializer throws an error that omits that\nconstructor, we must not provide a message when trying to throw\nagain.\n\nBug: 20495321\nBug: 20497840\nChange-Id: Ia4334fa24223750f90a8f2732f1eb1e738575e8d\n"
    },
    {
      "commit": "1c83cbc4a817acbd7f9abb5b29a2d418a958e6a1",
      "tree": "aae7ea1d5559718d6e264175aa1cb2ae1fc1e9ed",
      "parents": [
        "7dfc30b591aee167f0a38ab61a90894cc76f2066"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 22 18:52:29 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 23 10:03:00 2014 -0700"
      },
      "message": "ART: Make run tests out of oat tests\n\nTransforms all former oat tests into run tests.\n\nChange-Id: I190dd39456454c36e5538a2c044d993965a67533\n"
    }
  ]
}
