)]}'
{
  "log": [
    {
      "commit": "bb550e415da77e7e21c8f800657984c145bb42e1",
      "tree": "0596ce5d5b1b2f58cef50f8ef133febdd053399c",
      "parents": [
        "adfa1ad73a3a557bdec67d59894139b2727aaa7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 21 17:04:13 2021 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 26 09:10:12 2021 -0700"
      },
      "message": "Fix issue with Partial LSE and casts/instanceof\n\nIf PartialLSE encounters an instanceof or check-cast before the\nescapes it could not correctly handle it. Due to how java language\ncode is typically developed and compiled this is generally not a\nproblem but could lead to incorrect codegen on release builds or\nDCHECK failures on debug builds. This fixes the issues by (1) causing\npartial LSE to consider check-cast and instance-ofs to be escaping.\nThis also updates the instruction simplifier to be much more\naggressive in removing instance-of and check-casts.\n\nTest: ./test.py --host\nBug: 186041085\nChange-Id: Ia513c4210a87a0dfa92f10adc530e17ee631d006\n"
    },
    {
      "commit": "a84cd9e0ed902a3b23c03db85072caae0933ed1c",
      "tree": "b1410c3dd3042beedabb011374f7a98c77739b94",
      "parents": [
        "046cecfed5a4df1e180e3491ba7b566bf50a2026"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 09 14:08:36 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 10 00:21:09 2020 +0000"
      },
      "message": "Fix small bug in checker.py\n\nChecker used the wrong object to get a field causing a crash when a\ntest-function is not able to be found instead of an error message.\n\nTest: manual\nTest: ./test.py --host\n\nChange-Id: I979d1fe02077ebf848a8a7c16bc210aae5ca6b3e\n"
    },
    {
      "commit": "908759b00ba0d84445636cc7cfcaf830b45e7b73",
      "tree": "29ca9107962529dfa8ac38d356e249140535b50a",
      "parents": [
        "694f0129e6bf106d9f9a7c3bfb3b1cf499e8469b"
      ],
      "author": {
        "name": "Daniil Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Tue Nov 03 09:43:07 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Nov 04 17:16:53 2020 +0000"
      },
      "message": "Nicer error formatting for invalid Checker regular expressions\n\nTest: as there are hopefully no invalid regexes right now,\n      here is error message from the regex from https://android-review.googlesource.com/c/platform/art/+/1458282\n      reintroduced by hand\n\nInvalid regex \"\\i\\d+\" at Main.java:33, compiling fails with error bad escape \\i at position 0\n\nBug: 162408889\nChange-Id: I8a9f66c3b7f175d15a308430a584c1db5ed4e7bb\n"
    },
    {
      "commit": "4a128a1d33758b5c7b7179dd6779ae120453a94c",
      "tree": "07e8c8c823b7f6dc7a49fb0408984612b50d0d46",
      "parents": [
        "463d03e93071be1efe6c5b65dbf7cbbe1b793eee"
      ],
      "author": {
        "name": "Daniil Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Thu Oct 15 00:46:06 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 22 17:22:18 2020 +0000"
      },
      "message": "Reformat Checker according to recent Google styleguide\n\nTest: art/tools/checker/run_unit_tests.py\nTest: Run any Checker test with atest or mts\nChange-Id: I0452429fa43356d93ca748879bad14ef23609f40\n"
    },
    {
      "commit": "d4220f1736892687ffdec31648f95d9cb5478ae6",
      "tree": "2679e856337a977013da2812a2dabef5fab28ac0",
      "parents": [
        "4258f9e2f19016e04a71ec2b5349b707f8f47a18"
      ],
      "author": {
        "name": "Daniel Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Tue Oct 13 15:04:20 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 14 08:02:51 2020 +0000"
      },
      "message": "Revert^2 \"Port Checker to python 3\"\n\nThis reverts commit 5409408a41045c7f178e362311eb51dab992d6db.\n\nReason for revert: The original issue (b/170308859) is fixed by\nhttps://android-review.googlesource.com/c/platform/art/+/1458282.\n\nTest: art/tools/checker/run_unit_tests.py\nTest: art/test/testrunner/testrunner.py --host\nBug: 170308859\nBug: 162408889\n\nChange-Id: Ibc4539403ea77a9e718c830466459e6354ef0f23\n"
    },
    {
      "commit": "bfe8fc80767511676eae739e0924377dfc6c6089",
      "tree": "266db200bfb812ebe6b5ed9ab3ab9accb67081fe",
      "parents": [
        "7e9fc9d6d1622192f118bab771784eedfb66c60e"
      ],
      "author": {
        "name": "Daniil Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Mon Oct 05 15:07:15 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 08:23:13 2020 +0000"
      },
      "message": "Restore cfg file printing in Checker as an option\n\nTest: run checker with test that is expected to fail\nChange-Id: I14ca5e6bed38e2677cdf4b2eb4b79a6594af6f13\n"
    },
    {
      "commit": "5409408a41045c7f178e362311eb51dab992d6db",
      "tree": "4f5ed9d9ac417dfd69fd18f64412b2272c448e05",
      "parents": [
        "961f2954c12cfd66970a3150f2e3ef9b2567300f"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 07 17:44:41 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 07 17:44:41 2020 +0000"
      },
      "message": "Revert \"Port Checker to python 3\"\n\nThis reverts commit 961f2954c12cfd66970a3150f2e3ef9b2567300f.\n\nReason for revert: Breaks some Checker tests on the ART Buildbot (see b/170308859).\n\nBug: 170308859\nBug: 162408889\nChange-Id: If531b015c2aa23d4e64e9e349982dc72cf8dc093\n"
    },
    {
      "commit": "961f2954c12cfd66970a3150f2e3ef9b2567300f",
      "tree": "3a10e0b5a0f9c9ec5f9f43116cd9d918e5376853",
      "parents": [
        "8d34a182fea1b24f7b8361b55e930cb953cf3fb2"
      ],
      "author": {
        "name": "Daniil Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Tue Oct 06 16:29:38 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 07 11:52:15 2020 +0000"
      },
      "message": "Port Checker to python 3\n\nThe porting only required very minor changes,\nmostly related to the change of the meaning of the str type\n\nTest: ./run_unit_tests.py\nTest: atest art-run-test-583-checker-zero\n\nBug: 162408889\nChange-Id: I9199a740ef19bfadddd6c52c0906e3a843c3ac2e\n"
    },
    {
      "commit": "952c0904d46f4170c6a2578c19a702a0499e57f4",
      "tree": "305ef886ebd4ebb465b9bf22aad451c82eedff12",
      "parents": [
        "74850a81e78882ae132da1666c1ffe0dcfde9a18"
      ],
      "author": {
        "name": "Daniil Riazanovskiy",
        "email": "riazanovskiy@google.com",
        "time": "Tue Sep 15 15:46:46 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Sep 18 11:25:14 2020 +0000"
      },
      "message": "Don\u0027t print the whole input file in case of Checker failure\n\nPrinting whole input is not particulary useful. It is usually big, so printing it slows down testing, and can be accessed via other means.\n\nTest: run checker with test that is expected to fail\n\nChange-Id: I3ee55d1585696044d7a0829b6a565d7892d964d9\n"
    },
    {
      "commit": "2446feb60919ceb09b5cab388291a86ccdc9be10",
      "tree": "c5293d846db8b93e3a3fc660ba5d07e5a56be4af",
      "parents": [
        "2091019e6c3ca07454b97730f29bb7200fa9d46e"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Jul 27 12:25:49 2020 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 28 13:36:12 2020 +0000"
      },
      "message": "Dump ISA into .cfg\n\nThe optimizing compiler dumps ISA features into .cfg which can be used\nby the checker. A new tool perf2cfg needs to know ISA a CFG corresponds\nto. The tool uses this to check that input perf data has the same ISA.\n\nThis CL implements in the compiler dumping ISA in addition to ISA features:\n\nbegin_compilation\n  name \"isa:some_isa isa_features:feature1,-feature2\"\n  method \"isa:some_isa isa_features:feature1,-feature2\"\n  date 1580721972\nend_compilation\n\nBug: 147876827\nTest: ./art/tools/checker/run_unit_tests.py\nTest: test.py --target --optimizing --jit --interpreter\nTest: test.py --host --optimizing --jit --interpreter\nChange-Id: I189eae0f4de61e6a49c01d925e7136b5f7027c91\n"
    },
    {
      "commit": "40b0614be3296e163654c4e293793d00bcf36a5a",
      "tree": "5dcd9dd7d93d14b83c82cb90674df9353280189d",
      "parents": [
        "52fe49e87902fb231201874f52c4993e6fe611e9"
      ],
      "author": {
        "name": "Fabio Rinaldi",
        "email": "fabio.rinaldi@linaro.org",
        "time": "Wed Feb 12 16:18:50 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 22 10:44:31 2020 +0000"
      },
      "message": "Checker: Add function isaHasFeature\n\nDevelopers are now able to use hasIsaFeature(\"feature_name\") to\ncheck if an instruction set feature was used at compile time.\n\nChecker will retrieve the list of features from the .cfg file. It\nexpects them to be dumped at the beginning of the file as a fake\ncompilation block in the following form:\n\nbegin_compilation\n  name \"isa_features:feature1,-feature2\"\n  method \"isa_features:feature1,-feature2\"\n  date 1580721972\nend_compilation\n\nDumping that is optional. hasIsaFeature() will always return False\nif that pass is not found.\n\nAuthor:    Fabio Rinaldi\nCommitter: Artem Serov\n\nBug: 147876827\nTest: ./art/tools/checker/run_unit_tests.py\nTest: test.py --target --optimizing\nChange-Id: I4ce15d853025f9863d7981b33b761cfc799fed50\n"
    },
    {
      "commit": "06d98541e56f1f6163d1c1684e072c7c115c3f27",
      "tree": "88e10e540476c2755f72cc485f0eb8c320386e9b",
      "parents": [
        "a21054bf142a223a36c64a9f6d845e64f3cf6f67"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 20 16:34:27 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 04 08:53:43 2020 +0000"
      },
      "message": "Checker: Support IF, ELIF, ELSE, FI\n\nIt is now possible to add conditional statements in tests in the\nfollowing form:\n\n/// CHECK-IF:   condition1\n///             CHECK: foobar01\n/// CHECK-ELIF: condition2\n///             CHECK: foobar02\n/// CHECK-ELSE:\n///             CHECK: foobar03\n/// CHECK-FI:\n\n- Conditions are Python statements evaluated with `eval`.\n- They can contain references to previously defined variables\n  (\u003c\u003cMyVar\u003e\u003e).\n- Nested branching is supported.\n\nCredits: the initial implementation of the patch was written by David\nBrazdil (dbrazdil@google.com). It incuded support for IF, ELSE and FI.\nFurthermore, this patch includes a test case\n(2231-checker-heap-poisoning) mostly written by Roland Levillain\n(rpl@google.com).\nThe CL adds support for ELIF, CHECK-NEXT and CHECK-DAG in branches,\ntests and documentation.\n\nAuthor:    Fabio Rinaldi\nCommitter: Artem Serov\n\nTest: art/tools/checker/run_unit_tests.py\nTest: test.py --target --optimizing with tweaks to env\n      ART_HEAP_POISONING (set it to True or False) and\n      ART_READ_BARRIER_TYPE (set it equal or not equal to \u0027TABLELOOKUP\u0027)\nTest: test.py --host --optimizing with the same tweaks\nBug: 147876827\nChange-Id: I73f87781b9e7862d5735c6160ac351610fc9bd92\n"
    },
    {
      "commit": "8b934b1fe61469280613e46fe54055021a6332cc",
      "tree": "e2389d3ee223fc6920350e7483d0d21f8dc20502",
      "parents": [
        "b3146d08773fdf715c87be746fb3f0d74914b0c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 19 15:39:25 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun May 24 11:23:17 2020 +0000"
      },
      "message": "Checker: Refactor line-matching algorithm\n\nRefactor Checker\u0027s algorithm which matches statements against\nC1visualizer output. Evaluation of DAG and NOT statements previously\nrelied on statements which need to be evaluated in the same scope\nto be adjacent in the Checker test source code. This refactoring\nlifts this constraint in anticipation of adding control-flow\nstatements which will break up the DAG/NOT groups.\n\nCredits: this patch was originally written by David Brazdil\n(dbrazdil@google.com) and remained practically untouched.\n\nAuthor:    Fabio Rinaldi\nCommitter: Artem Serov\n\nBug: 147876827\nTest: art/tools/checker/run_unit_tests.py\nChange-Id: I9b00aca2cba9db74ff1b6e3f202ca21b41c0838e\n"
    },
    {
      "commit": "9bbed3c7d892c59606a729c56752fe782b1d8c48",
      "tree": "e34d0778135cdd0a77c547980146f676cec3c0e0",
      "parents": [
        "ec64f202c6ab6dd825cd5bb9dd98a0fb37570dba"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 18 12:35:11 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 28 18:13:04 2020 +0000"
      },
      "message": "Checker: Rename assertions to statements\n\nCredits: this patch was originally written by David Brazdil\n(dbrazdil@google.com) and remained untouched.\n\nAuthor:    Fabio Rinaldi\nCommitter: Artem Serov\n\nBug: 147876827\nTest: art/tools/checker/run_unit_tests.py\nChange-Id: Ib166fe4160508fc8c9ff0dbf0590ecd89b94c247\n"
    },
    {
      "commit": "be0d3cff84c69c497487d39c4022d604a7907d5b",
      "tree": "15364a8eb252f9645bb1cf3f9fe9d2017f1ed5fa",
      "parents": [
        "5945de03b6f6b35bcf6a575b2291e29ae7a2b1ee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 10:52:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 20 07:15:30 2020 +0000"
      },
      "message": "Remove remaining MIPS support.\n\nWith the exception of dwarf support in libelffile.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 147346243\nChange-Id: Ib25acbc98aa7f63ce49a7ed2f81a4a64d48eac39\n"
    },
    {
      "commit": "30a11eb467147003bf87fd3ac8638d8b60f357d7",
      "tree": "f3046bb0b36e15339f38e32d5f5363be3017039e",
      "parents": [
        "1c5b1ea14b3bf799eeaa27f583a72c5856771142"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 28 16:04:01 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 30 13:57:28 2020 +0000"
      },
      "message": "[checker]: Dump the CFG when we fail.\n\nTest: checker tests.\nBug: 147094528\nChange-Id: Ia51a511b6528ebe7d624b26773f575e29d24954c\n"
    },
    {
      "commit": "92706a8a541521d586736287f0dc6b7f338acff0",
      "tree": "d151f41fe697845e4b1cb96dd42a5440bf47dd70",
      "parents": [
        "93b57b9b168eaa61ad01d097f083a73eba575dbe"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Nov 30 11:46:45 2017 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Dec 01 15:25:34 2017 -0800"
      },
      "message": "Introduced CHECK-START-{x,y,z} syntax.\n\nRationale:\nMany of our tests repeat CHECK-START-x with following\nchecker lines for various architectures if some, but\nnot all architectures match the checker lines. This\nis tedious and error-prone. No more of that nonsense!\nThis CL introduces a syntax that allows specifying\nsubsets of architectures with a single block!\n\nBug: 62352954\n\nTest: test-art-host test-art-target\nChange-Id: Ife18b3ef9eaa2540166ace045c165ba252b31c6b\n"
    },
    {
      "commit": "d4c077ad698166539bb2195df915d0362de35c0c",
      "tree": "f8cd7362c32b62a9e0257f88660af4fa00540a6c",
      "parents": [
        "cf0f8560f41467331427418584687830932e66ed"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 04 14:56:36 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Apr 04 14:56:36 2016 +0100"
      },
      "message": "Have Checker print lines of unmatched test cases.\n\nChange-Id: I8ea7eee4c29f23ad10fb4d49ca927fdde39c1ef9\n"
    },
    {
      "commit": "0f73bda41a849734587a8df6428402beb65c2bc0",
      "tree": "2276f7ff35029fee2d8fc8bcb7259d2df96eadeb",
      "parents": [
        "8c55011b897817ecf3d85d3f50a387e509653073"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 02 16:09:46 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 02 16:33:01 2016 +0000"
      },
      "message": "Improve Checker error messages\n\nNow prints the offending Checker line and variable values.\n\nChange-Id: Id4395083de6ddddbd69f66cb7ba38c943146799a\n"
    },
    {
      "commit": "f652cecb984c104d44a0223c3c98400ef8ed8ce2",
      "tree": "ec0cc193eccdd11a79f42f957a856d2ba57699e1",
      "parents": [
        "b8b44983f861cfeeca66c624dd0f2a3fa71b4992"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Aug 25 16:11:42 2015 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Oct 22 18:51:13 2015 +0200"
      },
      "message": "MIPS: Initial version of optimizing compiler for MIPS32\n\nChange-Id: I370388e8d5de52c7001552b513877ef5833aa621\n"
    },
    {
      "commit": "5cc343d7239f9b1faf3ddf592cd5172a1371d276",
      "tree": "e79165c2b9f167ac06dca02dd88112a22f95505c",
      "parents": [
        "19631f327a77873db897156ffad1574811f1d94e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 08 11:35:32 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 08 12:20:27 2015 +0100"
      },
      "message": "ART: Checker tests for --debuggable\n\nChecker was disabled for --debuggable because the code was not compiled\nwith Optimizing. Now that it is, we might want to write Checker tests\nonly for this mode. With this patch, CHECK-START(-ARCH)-DEBUGGABLE\ntests will only be invoked on output of debuggable compilation.\nExisting CHECK-START(-ARCH) tests will not be invoked.\n\nChange-Id: I00c864f77b038af913d0d22ba7cf5655687f7c7c\n"
    },
    {
      "commit": "8ff495e15074d621371b4e9d46ba399563315819",
      "tree": "7977b502e2716b8fd21b56e7a308e75c764ec6d4",
      "parents": [
        "5e7cd7bf59501d6f1f90910a9da87effae7b9328"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 16:59:24 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:01:14 2015 +0100"
      },
      "message": "Fix formatting comment in Checker\n\nChange-Id: Idf5cf2d4be12a56777039aca3aa1c8563bcb9089\n"
    },
    {
      "commit": "b34c35ee8fe1516118d1d172a5e05b263ccbd93d",
      "tree": "6f85a19dd90ea57278d3afceedec9702f8163330",
      "parents": [
        "83f8b5bb9e9c52791a02a84d7b0889cab898efe4"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 11:46:04 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 12:54:19 2015 +0100"
      },
      "message": "ART: Expression evaluation in Checker\n\nIt can be useful for tests to evaluate small `assert`-like expressions.\nThis patch adds such support to Checker, with a new CHECK-EVAL line.\nSee README file for more details.\n\nChange-Id: I184f7c8e8b53f7e93cfb08fcf9630b4724fa5412\n"
    },
    {
      "commit": "5e2c8d323fbab4db8a71041ff94b6baf3953bca9",
      "tree": "12030091e7359b656abe46f601aa5230b1dec880",
      "parents": [
        "1f3f766d3b365d01f36b85dc19d40f754fa48533"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Thu Aug 06 14:49:28 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 06 15:32:28 2015 +0100"
      },
      "message": "Introduce arch-specific checker tests.\n\n- The \u0027.cfg\u0027 output is now created on target.\n- Arch-specific checker tests can be created by inserting a\n  suffix. For example:\n      /// CHECK-START-ARM64: int Main.foo(int) register (after)\n      /// CHECK-DAG:   \u003c\u003cArg:i\\d+\u003e\u003e     ParameterValue\n\nChange-Id: I55cdb37f8e806c7ffdde6b676c8f44ac30b59051\n"
    },
    {
      "commit": "74e1cc0a688bab7713efe0e313c9ed6793233a84",
      "tree": "0d77e8a6a801ba57d71cded7779a048779c2da49",
      "parents": [
        "e6e38ce021ef5e0d326d76172307c000e0e6fab3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 22 13:37:27 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 22 15:20:31 2015 +0100"
      },
      "message": "When a Checker assertion cannot be parsed, display it.\n\nChange-Id: Ib667c7aa24b2753f0963ed6b1f9f4227a9e586f4\n"
    },
    {
      "commit": "c0903013a4362fae659abb708f23be2789259499",
      "tree": "eaa65f5b89a01a874af234b282db064e2ae9ec65",
      "parents": [
        "c4977a58b1feca22a83fd5239aa266c7ce16ab87"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jun 15 14:57:29 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jun 15 14:58:00 2015 +0100"
      },
      "message": "Fix error message description in Checker\n\nChange-Id: Ieaecd430b096f91cc41af6354ee82176fe60a037\n"
    },
    {
      "commit": "a06d66a4ee60926127b9498b7ff0b3e37a24fccf",
      "tree": "87ec5d72211d5c3446e1d80ee71eda77faffd6b3",
      "parents": [
        "b4e2fbbed28c3bcdb8fd0fee5a201ba78e1edf28"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 28 11:14:54 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 28 11:57:49 2015 +0100"
      },
      "message": "ART: Distinguish Checker lines from comments\n\nIn order to prevent tests passing due to lines with hard-to-spot\nformatting errors begin ignored, e.g. by forgetting the colon after\n\"//CHECK\", Checker will now require its assertions to start with \"///\"\nor \"##\", respectivelly for Java and Smali. Such lines will never be\nignored and will fail the test unless successfully parsed.\n\nChange-Id: I0da9a8f13eb96d950af8c85df17d1899a853a299\n"
    },
    {
      "commit": "711411957a433555eda4bcf8d1f05aabf04425e8",
      "tree": "f82f3365199fb8561eb7394cbfcd5d73e72405d7",
      "parents": [
        "01cb410f4ad23135671d821ba36c269f8c82affa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 19 18:29:40 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 21 11:25:54 2015 +0100"
      },
      "message": "ART: Implement next-line assertions in Checker\n\nSome tests require verifying an exact sequence of lines in the graph\ndump. This was already possible by inserting \u0027CHECK-NOT: {{.*}}\u0027\nbetween the individual lines, but hardly a convenient way of doing so.\nThis patch introduces a new \u0027CHECK-NEXT\u0027 kind of assertions that\nreplaces the old method and will become useful for testing assembly.\n\nChange-Id: I1bb951707bda44320166dc7ef828866a6957a113\n"
    },
    {
      "commit": "6423cf5ef0ddf82722a6ed77ad3908fc8802d8cf",
      "tree": "d5741d4b3519afc936a2820f8fa407392b7b0edf",
      "parents": [
        "bacadb05b8b74dc91f05ee3899cbd9b2ea5dab7e"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 20 14:57:54 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu May 21 10:14:46 2015 +0100"
      },
      "message": "ART: Refactor and simplify matching in Checker\n\nChange-Id: Ib8a2b51488f66a7239e799f5fa5910b4ac2dfe08\n"
    },
    {
      "commit": "dbad6e86bc0d0e77006cd405c7738606d4b6f550",
      "tree": "34596332a58e4b74cea461a2f2d2f49dd4ae99f1",
      "parents": [
        "267cb1ad587b5f545c36eac8f96cd57bdc4ada95"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 20 12:19:40 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 20 12:20:04 2015 +0100"
      },
      "message": "ART: Add missing Checker file\n\nChange-Id: I97a7ff931644a6a062ba76abb759fd02d1c52530\n"
    },
    {
      "commit": "c4de9436bbfe3a9c9adf48085b9344ad9a37c14b",
      "tree": "bd2dca0a52db40fd1afb4acf991652a5bde07a81",
      "parents": [
        "27e542bd3c5430e4bf6fe265eb7e15eb4e401b77"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 20 11:03:22 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed May 20 11:42:16 2015 +0100"
      },
      "message": "ART: Immutable `variables` dictionary in Checker\n\nPython\u0027s lack of read-only references makes passing state information\nto other functions unsafe. This patch adds an immutable dictionary\nclass to Checker and uses it when passing around current values of\nvariables.\n\nChange-Id: I54f2eac54d4d59e16daa74364e6d91a6cc953f6f\n"
    },
    {
      "commit": "4e9aac12cf5f88d565d0856a6f842f6c9280056d",
      "tree": "fbdc16f6e296904ab311a1470f96d2435d7da899",
      "parents": [
        "cfee0507f26375fe048ed35f402e61f904db0095"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 17:45:17 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 19 17:28:31 2015 +0100"
      },
      "message": "ART: Stricter matching of Checker lines\n\nThis patch refactors the MatchLines function of Checker and changes it\nso that regular expressions must match entire words of C1vis output.\nPreviously, this could lead to false positives because assertion \u0027xyz\u0027\ntranslated to \u0027xyz.*\u0027 and hence testing for id \u0027i12\u0027 could be satisfied\nby the presence of \u0027i123\u0027.\n\nChange-Id: Iaeb486c53519b450ea0cd40042ff3048b38d5a7b\n"
    },
    {
      "commit": "d56dd2b4f6bb808b34e3d3341ce0dd699de70d45",
      "tree": "35b8597aff5440e1701001134a58c4c22d5ae549",
      "parents": [
        "17f1bc531ea2f8c1a6fac3def13dee1b901949dd"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 14:50:13 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 18 14:50:13 2015 +0100"
      },
      "message": "ART: Rephrase test comments, update Checker README\n\nAddressing minor comments on a previous CL.\n\nChange-Id: Ic011adc578111fc162480ed09723ff5d48690fe5\n"
    },
    {
      "commit": "c2c48ffdd623b4e58b34115d1521b0988a42b217",
      "tree": "56a7aea7fa187c388592e3d6df60be9c8edbfd0e",
      "parents": [
        "1cad536d675846ac9c110b5b3a412dfc55ace3ed"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 14:24:31 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 15 14:50:51 2015 +0100"
      },
      "message": "ART: Change Checker syntax for variables\n\nThis patch changes the syntax for defining and referencing variables\nfrom square brackets \u0027[[VAR]]\u0027 to angle brackets \u0027\u003c\u003cVAR\u003e\u003e\u0027. This is\ndone in order to avoid clashes when matching against lists enclosed\nin square brackets.\n\nChange-Id: Ib9560b07bdc7bd641fd1eb6143c0063e0783f1eb\n"
    },
    {
      "commit": "a8b85b22ef239f39e608b298fb7acea377a89355",
      "tree": "03a705d68e40af87bf45b75234b002fc8c38ce1d",
      "parents": [
        "c8c6aa96bb9d484903391baa1a95bce86c057ae3"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 14 17:30:21 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 14 17:30:21 2015 +0100"
      },
      "message": "Fix minor checker bug\n\nChange-Id: I8fd4cf4ae61c1175cba834479dd69cbde326a08a\n"
    },
    {
      "commit": "2c27f2ccf316aebf96cf365d33d2834a8206444d",
      "tree": "6342ab4849749944b4fe442238f9c24c4088c11e",
      "parents": [
        "2d999e0588b008ec68a9fbda97dd32fd03c22364"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 12 18:06:38 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 12 18:10:57 2015 +0100"
      },
      "message": "ART: Split Checker into smaller files\n\nChecker code has become too messy and incomprehensible. This patch\nsplits it into more manageable and better structured units.\nFunctionality remains unchanged.\n\nResubmission of change I870c69827d2be2d09196a51382a3f47f31cd2ba3 due\nto omission of file \u0027tools/checker/file_format/common.py\u0027.\n\nChange-Id: I277a4aa65a2e3b54f0e89901fdb9f289f55a325f\n"
    }
  ]
}
