)]}'
{
  "log": [
    {
      "commit": "5c93af3cc8894deefbc9cba69ea69526c45842aa",
      "tree": "6f79a408832449163fcb2e320ad992393a2e8f32",
      "parents": [
        "8f70b9672c13a5ca19cf2c54ace3cb2f342f743a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 09 10:51:16 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 09 20:49:04 2019 +0000"
      },
      "message": "Loosen verifier around interface-invoke-super\n\nWe were being overly strict with interface-invoke-super and not\nallowing an interface to invoke-super into its own methods without\ngoing to the interpreter. This causes some scala programs to run\nmostly in the interpreter. Our compiler is able to handle this\ncorrectly so we should allow it without any soft-verification\nfailures.\n\nTest: ./test.py --host\nBug: 140589303\nChange-Id: I40d9510add5bbfd41d2e38b68973fce77880f7e6\n"
    },
    {
      "commit": "4ec4d48940696de077f88f9f8e9abdb178772301",
      "tree": "b43474eded81a67650795b1b0b0fc35e2a12afc7",
      "parents": [
        "7263abc75f8d139f1efcae887870a2f537e45735"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 01 10:00:23 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 27 17:09:27 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIncorporate suggestions from previous changes: some C++ cleanup.\n\nTest: m test-art-host\nChange-Id: If903239bee58858427f0eb3e3e37a1ca767529c5\n"
    },
    {
      "commit": "147a911636402f2658ce60bd3ad62eb197b00f74",
      "tree": "2fb507267d7bad2e906be49c4b18e709e4d706a2",
      "parents": [
        "b90cad58077cd44411c2a1617aec7b6798e6a295"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 31 16:17:10 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Remove FailOrAbort for unnecessary cases\n\nThe dex file verifier now correctly checks that the instruction array is\nnot empty. As such, index zero is always an instruction.\n\nSlightly refactor code for readability.\n\nTest: m test-art-host\nChange-Id: I3141944beef58a409c5ae52ba27fb5ce5945f9d1\n"
    },
    {
      "commit": "b90cad58077cd44411c2a1617aec7b6798e6a295",
      "tree": "fdebb5c0c8e93d8680cb14bca5925483371ca153",
      "parents": [
        "d1abab7110101d65774f9d090850d20aaa07b661"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 31 16:15:41 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Move find-locks code up in the callchain\n\nMove the code into the caller and templatize the caller to save some\ninstructions and branches for the common case.\n\nTest: m test-art-host\nChange-Id: I6eee7b60e3f17db778ab98a49126b206c8547a2c\n"
    },
    {
      "commit": "0134a28ec42f5c96a3dffcf496bf1af05d0942dc",
      "tree": "0b8857236fe1aab89718daee8219c4eb9408ad21",
      "parents": [
        "86bf068459252f58686c71bd24dadd76aba45c8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 29 11:34:55 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nReorder impl::MethodVerifier\u0027s constructor arguments to have all\nsuperclass arguments first. In an effort to simplify additions.\n\nTest: m test-art-host\nChange-Id: Iba119d74b0dd2dc8c4831efa823c191df6975d9d\n"
    },
    {
      "commit": "86bf068459252f58686c71bd24dadd76aba45c8b",
      "tree": "837520d122851c85c2be2297ffe439735ebc00a4",
      "parents": [
        "422a9ebc5b9d780a3201243f02b58652b44d9896"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 29 11:22:44 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 01 17:01:19 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nSome cleanup moving small function definitionss into their\ndeclaration.\n\nTest: m test-art-host\nChange-Id: I0b109572e0f892844966e0c25478d6306b2a5d6f\n"
    },
    {
      "commit": "f1468b53d0427a45011fe6446d189babe0acd6e0",
      "tree": "d6be3e1ed2a56f30d8ae8593655db6d5e4826507",
      "parents": [
        "fef91cc973f193d5b3a5a554b4910f0c548c08ad"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 26 09:22:39 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, require an ArenaPool in the constructor instead of\nexplicitly using the Runtime one.\n\nTest: m test-art-host\nChange-Id: I2a526d869532da732202198fdac68c426008b09a\n"
    },
    {
      "commit": "fef91cc973f193d5b3a5a554b4910f0c548c08ad",
      "tree": "6aa735be1e7ff51073eeb15b70a67a2f1c4037d8",
      "parents": [
        "e0bbab9fe1b073fecae78ca5d269bd0b2a177b4f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 14:13:23 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, replace querrying Runtime::Current() for AoT status\nwith a flag.\n\nTest: m test-art-host\nChange-Id: I91a3ad0208b544f47bb83db96edca6b4f86e5ce5\n"
    },
    {
      "commit": "e0bbab9fe1b073fecae78ca5d269bd0b2a177b4f",
      "tree": "a6152ee32301ac78084be69fc73c8d54134da8b2",
      "parents": [
        "52c468a765f0427dfb5a6627e8087e7b8acc3b8b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 25 12:28:22 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 29 20:10:20 2019 +0000"
      },
      "message": "ART: Verifier cleanup\n\nStart making the method verifier more independent of externalities.\nThis will be implemented as incremental changes.\n\nIn this CL, replace querrying Runtime::Current() for the classlinker\nwith requiring the classlinker to use at construction time.\n\nTest: m test-art-host\nChange-Id: Id0a6a1f01c77bfe4cc9adfb490fc6ebc7bbf6392\n"
    },
    {
      "commit": "ae95ce3c6e5ac0ca96bd6e8d7a3dc36b6ffadbab",
      "tree": "dfeb4c507ee9d9b9cf99a629b25b7a7599a67958",
      "parents": [
        "f2dcba05ca76e0609687cf1e8013bbe983c73b2e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 19 10:04:03 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 22 17:39:02 2019 +0000"
      },
      "message": "ART: Do not handle RETURN monitor-stack issue as throwing\n\nThe IllegalMonitorStateException on mismatch cannot be caught in\nthe method itself, as it logically happens after the RETURN.\n\nBug: 121245951\nBug: 137030260\nTest: m test-art-host\nTest: m\nChange-Id: I981398bb7d235dfcef408b864e281df08eacc835\n"
    },
    {
      "commit": "d84794d235df588814533d96f6e459b72f3a19b1",
      "tree": "be63139f9d94678c6c1f01e2012545580b2d1078",
      "parents": [
        "16a08f6d70e64a1c88ea4a6da1b0cfe1bd4196f2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 18 13:40:03 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 19 15:12:19 2019 +0000"
      },
      "message": "ART: Add option to behave fatally on unmarked kThrow\n\nAdd a runtime option that makes the verifier abort when a runtime\nexception is signaled for an instruction that isn\u0027t marked as such.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Id953fa25fbcc12c1e6a7d74b30b28b81df57e427\n"
    },
    {
      "commit": "16a08f6d70e64a1c88ea4a6da1b0cfe1bd4196f2",
      "tree": "ab9ef002d1cffc3a589281047d5e1da232504994",
      "parents": [
        "22940241f945710613c2657f9d6161302bed935d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 18 10:59:08 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 19 15:12:19 2019 +0000"
      },
      "message": "ART: Factor out runtime-exception saved_line fallback\n\nDo the same for AoT and runtime. This is a minimal regression for\nthe compiler, but allows unified handling, including market scans.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I82087935b1ad08280ab9da3f41d346b73314986a\n"
    },
    {
      "commit": "b3b2db7edeaa09751dab44a7d0339590fd7b1788",
      "tree": "ea922140487594c45e6e95d1e2ce624221977dc7",
      "parents": [
        "b5204f4216557b1f7bfd72be1fd49ec9d0960ecb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 11 15:47:14 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 16 22:13:40 2019 +0000"
      },
      "message": "ART: Use a scoped disable-moving-gc helper in reg_type_test\n\nIn general we cannot use the standard ScopedGCCriticalSection,\nbecause we rely on the RegTypeCache to load classes for the\ntest (in part for test setup convenience, in part as an actual\ntest).\n\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: I00dafc28a39fe97ecee41284fd5d8f3642bf5a2f\n"
    },
    {
      "commit": "b5204f4216557b1f7bfd72be1fd49ec9d0960ecb",
      "tree": "95ca743a14876cda3e8e185ef4613220aba196ce",
      "parents": [
        "4bd5234a05db801892ce28ea0504aebb46d06a25"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 25 12:39:15 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 16 22:13:40 2019 +0000"
      },
      "message": "ART: Add interface class join heuristic\n\nDo not treat interfaces as regular classes. This will always\nlead to a join of java.lang.Object, rejecting semantically\nvalid programs.\n\nWe want to retain IMT dispatch, forcing us to verify interface\nassigment. In the absence of set types, the result is ambiguous\nand not well defined. In a best effort, attempt to find a joint\ninterface by walking the interface tables of the join arguments\nbackwards.\n\nIn the case of two non-interface classes, we still prefer the\nclass hierarchy.\n\nBug: 69826014\nTest: m test-art-host-gtest-reg_type_test\nChange-Id: I7e0086f045e5bb2a7c3ee3464de45fc5b02f4d3f\n"
    },
    {
      "commit": "c658278be744b3b6d1b964a826128f9f1f5662f7",
      "tree": "71f7dd393ebcf67518c03ff32f4209ba2110f4e5",
      "parents": [
        "bfa8b1ea0f7edf84c4137d5a822cc8acaf90acda"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 15:06:18 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 16 01:19:08 2019 +0000"
      },
      "message": "ART: Introduce CompatThrow\n\nAdd an \"virtual\" instruction flag to signal a historical throw\nthat is not captured by kThrow. Both kinds of instructions need\nto capture the work line at the beginning of a verification step.\n\nLong-term, remove CompatThrow.\n\n\"Annotate\" return-object.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I07e9f07da3ebcc9ccd1191ffc2c145b2c83a84f8\n"
    },
    {
      "commit": "bc919af448aef9e8043e56ca83a2aa4ff90b9ad6",
      "tree": "904105c3bd20d6ee9af1fbfcda19f1eaa7ffc42d",
      "parents": [
        "d78122b424c1be24f7e9ac7983af3f43e9d4e294"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 14:09:51 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:52:47 2019 +0000"
      },
      "message": "ART: Disallow unresolved return types after Q\n\nFor apps targeting future releases, do not allow type mismatches\ninvolving unresolved types. The behavior complicates the verifier\nand the runtime and does not conform to regular expected behavior.\n\nHistorically this has been done for app compatibility when non-native\nmultidex was a thing. In that situation, even at runtime when an \"early\"\nclass is being verified a type might not be available because it is\nsupplied by a later injected dex file.\n\nClassloader manipulations in this way are no longer supported. Classes\nhave to be available at verification time to not fail the class.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I9608c79183be7b85b76892498d6a7007a29f2434\n"
    },
    {
      "commit": "d78122b424c1be24f7e9ac7983af3f43e9d4e294",
      "tree": "e3d89743ab77a860b45306530afbb519666aa68a",
      "parents": [
        "d70a97c6d4a0954bed8991bd89a93bd3da9476f6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 14:06:53 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:36:17 2019 +0000"
      },
      "message": "ART: Do not access-check type on instanceof peephole\n\nWhen attempting the instanceof+branch peephole, do not retrieve\nthe cast type with an access check to avoid a posted failure. That\nfailure does not happen, it belongs with the instanceof.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I87e2228bff9f3374e7141e600f24554846ecac32\n"
    },
    {
      "commit": "d70a97c6d4a0954bed8991bd89a93bd3da9476f6",
      "tree": "82612bad0122b0083113edc4702dc3bad4168157",
      "parents": [
        "2808be84a8f86542450670acdb5e6b55498ff5f0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 01 14:00:05 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:30:05 2019 +0000"
      },
      "message": "ART: Monitor-stack merging should not be handled as throwing\n\nMismatched stacks and other issues on merging register lines should\nnot be handled as a pending runtime exception. Actual exceptions\nwill be thrown at monitor-enter/exit and return sites. Both are\nalready covered: the former by being annotated kThrow, the latter\nby explicit checks for the stack (and end of control flow).\n\nThus, Fail() with pending_exc set to false in register line merging.\nThis still triggers lock verification at runtime.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I06acca2920110e3de2a2bed7bae6695788f77449\n"
    },
    {
      "commit": "0d87f99907f01ced713bf2dff97ee6655da077f3",
      "tree": "7e015521b706acdcedf5404f8e2f936e12b74cc4",
      "parents": [
        "4146e064849cd566dfb5d9f851f95fb490ec0836"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 13:19:45 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 11 23:12:52 2019 +0000"
      },
      "message": "ART: Remove VERIFY_ERROR_UNRESOLVED_CATCH\n\nReplace with a more generic SKIP_COMPILER, mark the Fail() calls as not\nthrowing, and replace the standard occurrence with NO_CLASS.\n\nBug: 121245951\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 800 --jit-on-first-use\nChange-Id: I9f601702f27d815840538c04b332a52bf1c58c54\n"
    },
    {
      "commit": "4146e064849cd566dfb5d9f851f95fb490ec0836",
      "tree": "fdf0e0cd034f93fb78b1ac59a656022eb8c76b76",
      "parents": [
        "50037df21707c34beda776263536276fd9fbbe20"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 13:18:04 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 11 23:12:52 2019 +0000"
      },
      "message": "ART: Prepare to remove VERIFY_ERROR_UNRESOLVED_CATCH\n\nAdd a parameter to Fail() that defines whether a runtime exception\nis expected at that point.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Iff98ae24ef095df411804150d41c80493d42c09f\n"
    },
    {
      "commit": "4a30f89d65efa9b85c34bbd7aa23ea4cd38b920d",
      "tree": "95ad8586ef841a3a5750c24a7780b58bf12cac3c",
      "parents": [
        "7a82acc7ee79b198f7b4638a15cb1c3d1625ab6c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 04:57:58 2019 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 04:57:58 2019 +0000"
      },
      "message": "Revert \"ART: Remove VERIFY_ERROR_UNRESOLVED_CATCH\"\n\nThis reverts commit 7a82acc7ee79b198f7b4638a15cb1c3d1625ab6c.\n\nReason for revert: NO_CLASS doesn\u0027t have the right semantics for the compiler\n\nBug: 121245951\nChange-Id: I8dbeb7fbd6a697fe536535f1c696187041d7fcab\nTest: m test-art-host\n"
    },
    {
      "commit": "7a82acc7ee79b198f7b4638a15cb1c3d1625ab6c",
      "tree": "1b534443e584be4bcccddfa533d7d94305d37645",
      "parents": [
        "11410de860d4e6bd6d3cc90aa604575430882302"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 01 13:54:21 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 08 14:52:45 2019 -0700"
      },
      "message": "ART: Remove VERIFY_ERROR_UNRESOLVED_CATCH\n\nInstead add a parameter to Fail() that defines whether a runtime\nexception is expected at that point.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: Id9132eabc26b71a305ccb87f2182b4ae2e5b8c35\n"
    },
    {
      "commit": "4d6ca2e01e5e9b0006b94039f53e552dd0236d02",
      "tree": "1731d3dd4df7790ab21532a8d2bd3be04baef0df",
      "parents": [
        "af213ccb19231a4f46340bf8a791b4f498b8bda4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 01 17:18:37 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 16:00:57 2019 +0000"
      },
      "message": "Deterministic VerifierDeps::Dump().\n\nThis makes is easier to diff oatdump output.\n\nTest: m dump-oat-boot \u0026\u0026 \\\n      grep \u0027Dependencies of \u0027 out/soong/boot.arm.oatdump.txt\n      (framework.jar dex files are ordered properly.)\n\nChange-Id: I55f14950f00e4c3cbdda53ec513837d11ade026e\n"
    },
    {
      "commit": "cc08c50948d8b2a93b53a327717c7b2a146ac754",
      "tree": "e84f5bd858d841d4a485f3578b8fe5514b48b7d4",
      "parents": [
        "b839fbb52a3180bbac16a8f984cb11954a2a1837"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 27 16:28:09 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 29 00:58:23 2019 +0000"
      },
      "message": "ART: Restyle VerifyError\n\nUse shift expressions that are now allowed in enums that auto-generate\noperator\u003c\u003c.\n\nCleanup, and in preparation for additional entries.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I7ea68e5671dd2e2afd77beed056ec5919d807942\n"
    },
    {
      "commit": "43884b23d61dd9c2754ef4e716458f8306b07b94",
      "tree": "5466067e89d3d3d81e069abb43b93118ca5a48bf",
      "parents": [
        "f68b698e4774275e87bc73fa916faca4c6b11744"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 27 14:05:52 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 29 00:58:23 2019 +0000"
      },
      "message": "ART: Coalesce verifier flags into bit struct\n\nMakes it easier to add flags without increasing size or changing\npadding.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I26d0491fb7eb26e441874188a8db9f276ce1aaf8\n"
    },
    {
      "commit": "5dfbe7ae9ed9a1a82446d32118190105a211a2d2",
      "tree": "9ea2b6ab4dd2c75b63087c9431326f592763ad8a",
      "parents": [
        "591b1d26297fff3177a529adf0833d8a5eb2c463"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 25 12:33:29 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 26 18:43:37 2019 +0000"
      },
      "message": "ART: Refactor ClassJoin code\n\nRemove function from header and move to anonymous namespace.\nMake the function smaller by factoring out a larger case.\n\nBug: 69826014\nTest: m test-art-host\nChange-Id: Ida4c11448c13700e9a3412a306a244561fd9f60e\n"
    },
    {
      "commit": "1e52a07b4de0f000028e55c332aa46495f60879c",
      "tree": "1eb7dfdce749461c5a8997cbde49ed6d0fea2aa0",
      "parents": [
        "e0ce8bf743b7fc5816bc4045716d75378ce3b654"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 25 09:12:04 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 25 16:25:13 2019 +0000"
      },
      "message": "Correct Indicies -\u003e Indices\n\nThis is a misspelling that is somewhat common in art/.\nFix up all the instances I could find.\n\nTest: ./test.py --host\nChange-Id: I0a5def6e4126cf4e61efb0619bd59eb45ba7f324\n"
    },
    {
      "commit": "d91f84166ad642bbd135acb8aadd05919ff41d85",
      "tree": "3aeab5845897abbcab5827b2c27e684f6e157219",
      "parents": [
        "90b3457f9c64efba370c51b216dabb164a40b1ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 13 10:11:14 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 17 15:21:00 2019 +0000"
      },
      "message": "ART: Log approximate arena usage for slow verifier runs\n\nAdd ArenaStack::ApproximatePeakBytes and ScopedArenaAllocator::ApproximatePeakBytes\nto get an approximate use when arena tracking is not enabled.\n\nPrint the approximate use for slow verifications.\n\nBug: 110852609\nTest: m test-art-host\nTest: manual\nChange-Id: I529838410cdf4fe8247ddf4a6196a8186b0c4f3a\n"
    },
    {
      "commit": "93adcb53c77f4f04dfebd30b94e8ea9936aa8abb",
      "tree": "bdf638b78c045eed106ace99fbdc64506712d8ea",
      "parents": [
        "01f2e3a488fa06d98e2efbaf3ea8066d8457f216"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 06 20:16:07 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 07 23:05:24 2019 +0000"
      },
      "message": "ART: Remove some compile-time info points\n\nRemove no longer needed compile-time info points in the verifier. Only\ncheck-casts are still reliant on support for elision.\n\nThis reduces the number of pre-populated register lines in a large\napp by 70%, and the number of instructions executed during verification\nby about 2%.\n\nBug: 110852609\nTest: m test-art-host\nChange-Id: Iefa8253749b1a2750f57360e08ddfb502d0478b1\n"
    },
    {
      "commit": "0a7d0b10d2d2dd802f32c5df4026bafc12537625",
      "tree": "6746f6c13be8419e95ab959267a0b93dfadb1468",
      "parents": [
        "6087bc210f5b246476045ca21568f446ad79222a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 04 10:42:29 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 06 20:43:26 2019 +0000"
      },
      "message": "ART: Mark unreachable catch handler code in verifier\n\nArtificially block the method from being compiled as the compiler does not\ntrack unreachable code correctly.\n\nBug: 134061982\nBug: 134429168\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nTest: art/test/testrunner/testrunner.py -b --host -t 800 --jit-on-first-use\nChange-Id: Iaa6abdd8b61e69a8feb74dcd8f47ded27fb4a353\n"
    },
    {
      "commit": "6087bc210f5b246476045ca21568f446ad79222a",
      "tree": "f11b8e4ea6d6015290dceb52de126e39d2e4d76f",
      "parents": [
        "9a45d01b40692d9b9568f5e80d21fc7f51bcac5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 03 15:52:08 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 06 20:43:26 2019 +0000"
      },
      "message": "ART: Handle unresolved catch handler types differently in the verifier\n\nThe move-exception should not trigger a synthetic throw, as that\nmay be caught by another catch handler, while the code is unreachable.\nUse a specific flag and failure instead.\n\nBug: 134061982\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nChange-Id: Ie6859e3a1910171b34882889ebece6cadc9dd508\n"
    },
    {
      "commit": "af52cbeb9b54cd3c3094cdb391041005e5796e77",
      "tree": "b8803696ddf0af29b5cecc6810bfdd3292b07c0c",
      "parents": [
        "8e6bf106a5f6c26dfb7aa4fd0f8e9a4daabcbaee"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 15:05:09 2019 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri May 24 17:06:32 2019 +0000"
      },
      "message": "Use TargetSdkLevel in CalculateVerificationInfo\n\nWe were using api_level\u003d0 (meaning most recent api) for calculating\nthe verification information of a single method dynamically. This\nmight in the future lead to problems if we condition more of\nverification on the API level. To prevent this future problem we will\ninstead use TargetSdkVersion as the API level.\n\nTest: ./test.py --host\n\nChange-Id: Ie87e0b1b6b07b43d2dc84101cb7764cc4087aca9\n"
    },
    {
      "commit": "e2ddce3dec02cf7c9eb5efb2e29c250a5e909995",
      "tree": "df9ee07990149cceffe0496807c0e88f534211ec",
      "parents": [
        "6045bc202f2c470b63c40a5a25db369b5a049c28"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 17:08:35 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 22 17:29:29 2019 +0000"
      },
      "message": "Revert^2 \"Add verifier fallback for JVMTI Get/SetLocalVariable\"\n\nThis reverts commit 99cbfb55fc7ac0f65b1ccdc7076219fcee383b92.\n\nThis unreverts commit e48fd0b4780efadc6b3433fe7a56aa5be2a84325.\n\nWe were incorrectly bounds-checking the register number. We were\ntreating it as unsigned when it was actual signed. Previously this\nwouldn\u0027t matter since normally the debug-info won\u0027t have any\ninformation for negative slots but by falling back to the verifier\nwe hit some check failures.\n\nReason for revert: Fixed underlying issue with bad bounds check.\nBug: 131711256\n\nChange-Id: I0b859ce322f3b23f937b72d735db8f6870c40602\n"
    },
    {
      "commit": "99cbfb55fc7ac0f65b1ccdc7076219fcee383b92",
      "tree": "5420795d367de2d4fbf2f1a73ac2b3f275a5114a",
      "parents": [
        "098e7a67588f39642567b91ecfab117dbaa84d31"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 11:39:45 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 12:23:46 2019 +0000"
      },
      "message": "Revert \"Add verifier fallback for JVMTI Get/SetLocalVariable\"\n\nThis reverts commit e48fd0b4780efadc6b3433fe7a56aa5be2a84325.\n\nReason for revert: Fails libjdwp tests. In particular:\norg.apache.harmony.jpda.tests.jdwp.StackFrame_SetValuesTest\n\nBug: 131711256\nChange-Id: Id46da7c0d26769f8f4bd469cdfb8049f6812295a\n"
    },
    {
      "commit": "e48fd0b4780efadc6b3433fe7a56aa5be2a84325",
      "tree": "5056001e02d8c4494b643c8d53fd32621e127c1c",
      "parents": [
        "abdb4592fa28d6e75f1160f01cde58ad7c3fef37"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 20 10:04:44 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 22 00:29:38 2019 +0000"
      },
      "message": "Add verifier fallback for JVMTI Get/SetLocalVariable\n\nThe JVMTI Get/SetLocalVariable functions used to rely entirely on the\nDex DebugInfo to determine the types of each of the registers. This\ncould lead to problems since, to prevent possible stack corruption, we\nwould not allow stack modification if the data was not present.\n\nIn order to remove this restriction we will instead make use of the\nmethod verifier to ensure the modification is sensible when the\nDebugInfo is not present. Since reconstructing this information using\nthe verifier is quite slow (compared to reading it from a table) we\nwill only do this when the table is missing.\n\nSince the verifier lacks some of the information available when\ncreating the DebugLocalInfo table some semantics will change depending\non if the table is present or not.\n\n - When the DebugLocalInfo table is not present we cannot always\n   distinguish between floats, ints, and other single-register\n   primitive types. For simplicity all single-register primitive\n   types can be modified and read by both the Float and Int versions\n   of the local variable functions.\n\n - Similarly we cannot always distinguish between long and double\n   variables.\n\n - Reference types are checked against what the verifier thinks they\n   need to be according to type unification. This might be more or\n   less specific than the types recorded in the functions source code.\n\n - Constant int/float \u00270\u0027 values and \u0027null\u0027 cannot always be\n   differentiated by the verifier. Therefore, one may not always be\n   able to modify some null or constant 0 registers.\n\nTest: ./test.py --host\nBug: 131711256\n\nChange-Id: I1c9d857ccdec752bfd4ebad76cc9ad96e143866c\n"
    },
    {
      "commit": "efdd1b0c818b9040b506c023d739e7ccd0714f47",
      "tree": "57842a878081a92be4e08a00ecfa1f6e25028b61",
      "parents": [
        "d6d878ef7f452335e6642265605de10220f7809f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 07 12:30:10 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 15:08:17 2019 +0000"
      },
      "message": "ART: Add throughput to verifier duration message\n\nAdd the throughput in bytecodes per second to the duration logging.\n\nBug: 110852609\nTest: m\nTest: manual (-Xverifier-logging-threshold\u003d0)\nChange-Id: I426aefd295e2a1ac190e66d0f12035e894f22080\n"
    },
    {
      "commit": "b34981b0b7a16b084a4ab30ce509ee98bf171e63",
      "tree": "3f9b8aa799d7bd20ac1d40397026030746046599",
      "parents": [
        "b9f1d3e5f109048de0055e9f19f1d5af13040e8f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 06 13:00:40 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 17:09:33 2019 +0000"
      },
      "message": "ART: Fix hidden hard fail in instance field verification\n\nMove the reference type check for the given object upfront so that\nit isn\u0027t hidden by other soft-fail cases.\n\nBug: 122501785\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 800\nChange-Id: I715a859665a9550bc23defa63ba6fbecd13d7531\n"
    },
    {
      "commit": "bfcca58145d796fd05a68645b03229b0f3ce185e",
      "tree": "2456fb8180275a99eba9c45522543b9787991c9f",
      "parents": [
        "99db7bb218e328f8a0a85f540f2c36aa66a23215"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 12:01:55 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 15:13:44 2019 -0700"
      },
      "message": "ART: Add verifier-debug log for exception handler\n\nHelps tracking register state, in the case it is not a merge\nbut the initial setting of the target register line.\n\nBug: 130907607\nTest: m test-art-host\nChange-Id: Idebc230cd5a187b2ba986a25c536a8c2ca552d82\n"
    },
    {
      "commit": "99db7bb218e328f8a0a85f540f2c36aa66a23215",
      "tree": "84143da3dc73a3f9edd2a5e8f2ba525614186396",
      "parents": [
        "fc25ae90c7f2b93ce4cd7a920afaf893c17d08cb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 23:05:47 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 15:13:41 2019 -0700"
      },
      "message": "ART: Templatize internal method verifier class\n\nTemplatize over verifier-debug.\n\nBug: 130907607\nTest: mmma art\nTest: m test-art-host\nChange-Id: Iafde21602541aa3c878883cd793333ecc2121de9\n"
    },
    {
      "commit": "fc25ae90c7f2b93ce4cd7a920afaf893c17d08cb",
      "tree": "0dbdd16fd1de3d2dfc26e49d27d98a18cfc306e8",
      "parents": [
        "d09c0593fb9afc218dee39332e13097f1e95ee10"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 22:22:57 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:16:27 2019 -0700"
      },
      "message": "ART: Refactor verifier\n\nMove implementation to internal class, only keep minimal interface\nthat other classes depend on public.\n\nAn internal impl::anonymous namespace and duplicate MethodVerifier\nname was chosen so as to minimize the patch.\n\nIn preparation for templatization.\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I79de01139b8fbd8b4e828bb0e58faeb8666176d5\n"
    },
    {
      "commit": "d09c0593fb9afc218dee39332e13097f1e95ee10",
      "tree": "472b61e72d6899b59b09b5c7faa30eefc42558f6",
      "parents": [
        "51de69ecd20c1c9bad441359a07582d1bfa26905"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 15:44:05 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:15:57 2019 -0700"
      },
      "message": "ART: Do not expose arena allocator from MethodVerifier\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I807b713215fa948f2cbeab929abb0986ce573702\n"
    },
    {
      "commit": "51de69ecd20c1c9bad441359a07582d1bfa26905",
      "tree": "b8431689598edd4daca2ebec6a53b306f0906b4c",
      "parents": [
        "bb2467b398481a15ddb0b65cfcf3c15ff3cb0b8d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 15:14:14 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 22 10:15:48 2019 -0700"
      },
      "message": "ART: Clean up MethodVerifier\n\nRemove unused methods. Move internal methods to be private.\n\nBug: 130904871\nTest: mmma art\nTest: m test-art-host\nChange-Id: I3b1a6a4495e3ddc4507881659d2c6d6d6049e8f6\n"
    },
    {
      "commit": "7c887c57b1b32b9432c74582ab9a4be43a280ee9",
      "tree": "587e4f7ea18973c01dadbe79af9d46cb9c7b21ed",
      "parents": [
        "a65859d5a1eacbba394f7f4f87a91b101445676d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 19 09:11:48 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 19 20:49:52 2019 +0000"
      },
      "message": "ART: Under verifier-debug, amend the hard-fail message\n\nWhen verifier-debug is enabled, include info messages and verifier\nstate dump in the hard-fail message, which will be included in\nthe VerifyError.\n\nBug: 124804473\nTest: m test-art-host\nTest: manual\nChange-Id: Ib34d7e1f620c120e64737cf7edfd1f99cf67b0f7\n"
    },
    {
      "commit": "2ad6cceed5fd531c86e9da4ebdf2cb6c012382a0",
      "tree": "804103d4e5b34770168d4175cba9942efe6f2074",
      "parents": [
        "b29ecc1a44f2741bd8287c659be1c0854d4f6365"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 11 16:17:39 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 15 17:38:27 2019 +0000"
      },
      "message": "ART: Make LogVerifyInfo newlines consistent\n\nUse an RAII helper to make logging to the verifier\u0027s info_messages_\nconsistent - no caller needs to add a final newline.\n\nTest: m\nTest: manual\nChange-Id: Ic830b816293078873160808fe275b862a672ff47\n"
    },
    {
      "commit": "4a57d5f3c2bb4ce8290ca73f1130ff23b1b3ae5b",
      "tree": "4c21f0554a450e70107590cdb799d2d2fdd5a8c0",
      "parents": [
        "527072e915c58b67005d5e687cf727bf89c7884a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 03 12:31:18 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 03 12:31:18 2019 -0700"
      },
      "message": "ART: Remove old cout usage in method_verifier\n\nLog to regular LOG.\n\nBug: 124804473\nTest: m test-art-host\nTest: manual\nChange-Id: I0ad352f9a20afa1dfd42f343fe1b247714279348\n"
    },
    {
      "commit": "7126c5b47d34b9a4d6d7553b8ea48e5085ee6b41",
      "tree": "eeabacfcf1e75997c2c4755bb84ff63706eba46d",
      "parents": [
        "c088b2efe015d49f10597c515a7d749cb0856f84"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Mar 05 00:02:51 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 11:34:09 2019 +0000"
      },
      "message": "Preverify InMemoryDexClassLoader-loaded classes from vdex\n\nThis patch creates a new subclass of OatFile - OatFileBackedByVdex -\nwhich initializes OatDexClass instances using the verification info in\na vdex file created by a previous instance of the class loader.\nThe OatFile is not backed by an actual .oat file.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692 -t 693\nChange-Id: I3fd055abe17ee9739c07f2e2f4fc2543e4ec8c9e\n"
    },
    {
      "commit": "35a3f6a09931ee631a0377ee3ca98a7fb1f4f61d",
      "tree": "c3bbc93f5d7c5c74b49a03fc9a2609f7a918840e",
      "parents": [
        "3bfc694a4bcc9ef3de19b94a34701c76c6008071"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Mar 04 15:59:06 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Apr 02 19:20:14 2019 +0000"
      },
      "message": "Create vdex file for dex loaded with InMemoryDexClassLoader\n\nPrevious CL introduced a background verification thread for dex bytecode\nloaded with InMemoryDexClassLoader. Extend the logic to collect the\nresults of class verification into an instance of VerifierDeps and dump\nit into a vdex file in the app\u0027s data folder.\n\nThe background thread does not collect full VerifierDeps (e.g.\nassignability dependencies, etc), just a bit vector of whether a class\nwas successfully verified or not.\n\nThe vdex format is extended to include boot classpath checksums and the\nclass loader context it was created for. These are optional and\ncurrently left empty for regular vdex files.\n\nThe generated vdex files are treated as a cache with a limited capacity,\ncurrently capped at 8 files. The least recently used file (in terms of\natime reported by stat()) is unlinked if the cache is full and a new\nvdex is about to be generated.\n\nBug: 72131483\nTest: art/tools/run-libcore-tests.sh\nTest: art/test.py -b -r -t 692 -t 693\nChange-Id: I26080d894d34d8f35f00c7925db569f22f008d2c\n"
    },
    {
      "commit": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\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": "eda46e9cad4271af7188fe0f542cbe88679f4c6e",
      "tree": "9632daf7b7c0600bd9200da65e43f6640c4cfc27",
      "parents": [
        "feb228244619237d110d8817865d7647f37b9b4f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 18 12:38:19 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 20 18:32:10 2019 +0000"
      },
      "message": "Fix vdex fast-verify performance regression\n\nRecent CL I0d06b82e31088c58d4493723a5435309740f1d0c generalized the\nfast-verify class redefinition check by checking that all vdex-verified\nclasses resolve to dex files covered by the vdex and are not duplicates\nof classes in parent class loaders. This introduced a performance and\nallocated memory regression for dex2oat invoked with\ncompiler-filter\u003dverify(-profile).\n\nThis patch removes the regression by acquiring a list of classpath dex\nfiles from the compiler driver and boot classpath dex files from the\nclass linker, avoiding class resolution altogether.\n\nA small performance overhead remains as previously only boot classpath\nwas being searched.\n\nTest: run `dex2oat filter\u003dinterpret-only; dex2oat filter\u003dverify`\n      compare time and allocated memory numbers before CL and after\nChange-Id: Ifd690cdafdc99d3eafb9847d67775fc11a5b5023\n"
    },
    {
      "commit": "feb228244619237d110d8817865d7647f37b9b4f",
      "tree": "5f30c01597761e6552ea5f770443bc12785a9562",
      "parents": [
        "9dcc0733afe9c512e93317291de0b0a7124ef465"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 13 21:25:57 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 20 18:32:10 2019 +0000"
      },
      "message": "Improve `verified`, add `redefined` class status in VerifierDeps\n\nChanges implementation of `unverified_classes_` in VerifierDeps from\nstd::set\u003cdex::TypeIndex\u003e to `verified_classes_` of type std::vector\u003cbool\u003e\nindexed by class def indices. This cleans up the implementation and speeds\nup access during fast-verify. Encoding remains the same - a set of indices\nof unverified classes - only these are now class def indices.\n\nA second bit vector `redefined_classes_` is added, also indexed by class\ndef indices. It records classes that were not verified because they were\neclipsed by classes that took precedence during resolution. This allows\nVerifierDeps::VerifyInternalClasses to succeed when a class redefined\nnow was also redefined when the deps were being created because the\nclass was treated as external and dependencies on it were recorded.\n\nTest: m test-art-gtest-verifier_deps_test\nChange-Id: I7bcbe947c3c74535306e6dbb5b288076f320a7bc\n"
    },
    {
      "commit": "1e70b89afe0e022ec51210ea0da1e0706e194fd0",
      "tree": "1c2b9d0c52e008795ec122b4b904c85c103b3e31",
      "parents": [
        "61a9328e807426636d3e29699cd978d4a7a345c0",
        "6c70224ebd667b52a862f850893f6528af63f3e8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 11 10:27:11 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 11 10:27:11 2019 +0000"
      },
      "message": "Merge changes Id4ffa9f9,I1bb5d05d\n\n* changes:\n  Replace MergeSets() with std::set::merge().\n  Replace StringPiece with std::string_view.\n"
    },
    {
      "commit": "6c70224ebd667b52a862f850893f6528af63f3e8",
      "tree": "43e1ed17ee7fdfd7081cb07e11700b77c38a5a52",
      "parents": [
        "8581e2a234b562880c1d6c6b5ad14d23f7b597ed"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 16:17:33 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 08 17:19:20 2019 +0000"
      },
      "message": "Replace MergeSets() with std::set::merge().\n\nAnd clear up ownership of the VerifierDeps being merged\nby using std::unique_ptr\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 123750182\nChange-Id: Id4ffa9f9fa1968fa762b9e825f25827240f6d45d\n"
    },
    {
      "commit": "e0f8bb99ad5c6f33d530f1157e1a116c42970deb",
      "tree": "0bc6b20a848b0d15dc25e601386c70581c137516",
      "parents": [
        "3b241361b639c297c99a1b00f40e89ad7fd184b8",
        "e512556ab85987c52e4be1fcd6d7a1d15a1b0fb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 08 10:24:41 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 08 10:24:41 2019 +0000"
      },
      "message": "Merge \"Replace StringPiece with std::string_view in profman.\""
    },
    {
      "commit": "e512556ab85987c52e4be1fcd6d7a1d15a1b0fb6",
      "tree": "16e82b22829a269dcb7b8c305bb0a44c6f74c58e",
      "parents": [
        "2f34e59c10c30ea24fa5f4bc4e3d5a9dc6469c34"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 17:38:26 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 07 12:29:35 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in profman.\n\nAnd in dexoptanalyzer and hiddenapi, see below.\n\nThe parsing helpers in utils.h were mostly unused, only\nprofman was calling one of them, so move that helper to\nprofman and rewrite and fix it, remove the other helpers.\nThis exposed dependency of dexoptanalyzer and hiddenapi\non StringPiece indirectly included from utils.h, thus we\nreplace it with std::string_view also in those tools.\n\nDuring the rewrite, avoid using std::string_view::data()\nas a null terminated string, prefer to fall back to the\noriginal null terminated raw option instead.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: Ibeec8069a5d82ea556e03e4577812f94dca6f387\n"
    },
    {
      "commit": "8e1ca6103de597cec698b2337d19a94d17ae8338",
      "tree": "c485c00a7a74406670b36b937a150f72468a0565",
      "parents": [
        "3a8761f8451276300350bcfa50910105e88505df",
        "8fd6722f5840385462a31bd701426b3749ac1031"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 07 09:50:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 09:50:53 2019 +0000"
      },
      "message": "Merge \"Generalize vdex class redefinition check\""
    },
    {
      "commit": "8fd6722f5840385462a31bd701426b3749ac1031",
      "tree": "7e5f202ed5596815c3638173273ab7d490c25636",
      "parents": [
        "ac52000e86077b3c45c192ec259d72413599ff11"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 05 18:13:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 06 17:34:57 2019 +0000"
      },
      "message": "Generalize vdex class redefinition check\n\nThe check introduced in CL If0c56b1970d8ebe701d198ffccec52f586aea9e6\nskips fast verification if an apk\u0027s class is overshadowed by a class in\nboot classpath because the vdex dependencies do not contain intra-apk\ndependencies.\n\nHowever, the change only checks for presence of a duplicate class in the\nboot classloader, while a duplicate class could be in any of the parent\nclassloaders. Fix this and move the check into VerifierDeps to make it\na proper part of the verification process.\n\nThe CL also refactors VerifierDeps::ValidateDependencies to output\nan error string for better logging.\n\nBug: 122968669\nTest: test/testrunner/testrunner.py -t 719\nTest: m test-art-gtest-verifier_deps_test\nChange-Id: I0d06b82e31088c58d4493723a5435309740f1d0c\n"
    },
    {
      "commit": "e027d727b833930f1bd0029bc1b2cf750d8af5da",
      "tree": "0bb05206b8c019798bd3ffede02fb9243d08e615",
      "parents": [
        "ac52000e86077b3c45c192ec259d72413599ff11"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 10:13:49 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 11:56:16 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in class.h.\n\nTranslate the std::string_view to StringPiece where\nneeded for comparing with Signature until we change\nthe Signature::operator\u003d\u003d() to take std::string_view.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I9699f13882353d84dc69e6b8e30d12dac4bace24\n"
    },
    {
      "commit": "b0f16e6fca217b67e0b47da49896781dba429130",
      "tree": "c176db28304cf2dbaa1b5f003c635736a15a229b",
      "parents": [
        "59ae4f949c26266a60ba0318995b46b4308312bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 16:17:37 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 04 16:38:16 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in RegType.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I888a268bbec4eb0e5a19b0bc2a4a97e3492feda5\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": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\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": "125a3a4604f7d543334ee6b3d6fd15d0a6e5897a",
      "tree": "d4c572017ae0bc1c311b865cce6d8d9592f141dd",
      "parents": [
        "025059b5bc5974717e94d95cf2d82ff1ad51e75d",
        "2337d53846d9d2e7f82f8cf64ff25585ad010339"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 31 23:40:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 31 23:40:07 2018 +0000"
      },
      "message": "Merge changes I207718d6,I700ef52e\n\n* changes:\n  ART: Restrict some checks in the verifier to P+\n  ART: Add API level to verifier\n"
    },
    {
      "commit": "f73cacaae3d8f89327d8886b37792a849cabd9ac",
      "tree": "79047e31d512d065db47af7e68fa155c1f638f11",
      "parents": [
        "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 17:19:07 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:09:40 2018 +0100"
      },
      "message": "Remove superfluous \u0027virtual\u0027 specifiers in ART.\n\nRemove \u0027virtual\u0027 specifier on methods already bearing the \u0027override\u0027\nspecifier.\n\nTest: mmma art\nChange-Id: I114930969a5ca048d88de9ecd18e2c6403593e31\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\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"
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "ce75049c31e7064b00104ca7f65fe12faeabc391",
      "tree": "6f7bb5977a99db0d89c74238576956f0aa1d4dad",
      "parents": [
        "0495fb053094181de232e3fa390806a9110ba208"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Fri Jul 13 17:07:25 2018 +0300"
      },
      "message": "Revert \"Revert \"Handle a special case of lock aliasing during lock verification\"\"\n\nThis reverts commit 753a055b5398fcf00d2633565452679c8fb93e9d.\n\nReason for revert: Fixed failing tests\n\nTest: m test-art-host\n\nChange-Id: I4a8be656288199108c05c9d302393e1efa41a7a4\n"
    },
    {
      "commit": "97c465ca6ee4c76766f8abaa3a98ee0329019c5c",
      "tree": "ea4236d021cfa3df45e27efe1556732a06c6737b",
      "parents": [
        "91b6befbb0a323ccbdce5f0631e260346e04f045",
        "753a055b5398fcf00d2633565452679c8fb93e9d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 20:05:48 2018 +0000"
      },
      "message": "Merge \"Revert \"Handle a special case of lock aliasing during lock verification\"\""
    },
    {
      "commit": "753a055b5398fcf00d2633565452679c8fb93e9d",
      "tree": "e334f68df51c6078fd51f293a38146c6fcb6c106",
      "parents": [
        "82898ed01eedfb82a5b4adfe1327b827210af3ca"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:20 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 05 20:05:20 2018 +0000"
      },
      "message": "Revert \"Handle a special case of lock aliasing during lock verification\"\n\nFails run-test with --tracing or --debuggable.\n\nThis reverts commit 82898ed01eedfb82a5b4adfe1327b827210af3ca.\n\nChange-Id: I8005a1fbe63c6508d9abd5bea77679201c71ab46\n"
    },
    {
      "commit": "91b6befbb0a323ccbdce5f0631e260346e04f045",
      "tree": "ceb3c5608472a396f4f090c315c5cf16386fabd1",
      "parents": [
        "4a72f8b1baec1fb93105e381edb1bad60e372540",
        "82898ed01eedfb82a5b4adfe1327b827210af3ca"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 05 16:32:16 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 16:32:16 2018 +0000"
      },
      "message": "Merge \"Handle a special case of lock aliasing during lock verification\""
    },
    {
      "commit": "82898ed01eedfb82a5b4adfe1327b827210af3ca",
      "tree": "c801d41b2491271324a06343efc8618d5ea063a2",
      "parents": [
        "dc53f1616d656a757fb26039f387b7ee44ff2f1d"
      ],
      "author": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu May 31 23:42:20 2018 +0300"
      },
      "committer": {
        "name": "Alexey Grebenkin",
        "email": "a.grebenkin@samsung.com",
        "time": "Thu Jul 05 12:41:54 2018 +0300"
      },
      "message": "Handle a special case of lock aliasing during lock verification\n\nCheck whether the two instructions immediately before a monitor-enter\nare const-class, establishing previously untracked lock aliasing\nin a low-overhead manner.\n\nTest: m test-art-host\nChange-Id: I94c187cbc422f8f0c13b688b09a5d9579a735b56\n"
    },
    {
      "commit": "e383d23918db4eede30c3d78589d4639de3ec446",
      "tree": "a103f54ec49fac8d5cd15661f5c2d0cb5dab32e5",
      "parents": [
        "dbf540399a2aaddad00b1233b80808c80dc0d443"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 12:29:51 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 17:09:45 2018 -0700"
      },
      "message": "ART: Mask garbage-memory warnings\n\nAdd invariants or NOLINT to let clang-analyzer understand that\nthere\u0027s no garbage involved.\n\n(The analysis itself is too expensive to force it on for all\n local builds.)\n\nTest: mmma art\nChange-Id: I6148d743321248195abb3a8f646e63941f11f9a9\n"
    },
    {
      "commit": "4c8e12e66968929b36fac6a2237ca4b04160161e",
      "tree": "d8bbfd72a978c69ef2eef98c37e7869673c52295",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 18 08:33:20 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 11 10:57:17 2018 +0100"
      },
      "message": "ART: Adds an entrypoint for invoke-custom\n\nAdd support for the compiler to call into the runtime for\ninvoke-custom bytecodes.\n\nBug: 35337872\nTest: art/test.py --host -r -t 952\nTest: art/test.py --target --64 -r -t 952\nTest: art/test.py --target --32 -r -t 952\nChange-Id: I821432e7e5248c91b8e1d36c3112974c34171803\n"
    },
    {
      "commit": "18e2687c4126d66870d61d6548abc2c7661a66cc",
      "tree": "06eff605df9259dde8170c8efb48b11df4108eb3",
      "parents": [
        "2607d6c47114a18ccf4a532b20e1099d1dd8fcca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 17:19:02 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 07 22:13:48 2018 -0700"
      },
      "message": "Refactor ClassAccessor to use an index instead of ClassDef pointer\n\nRemoves a separate class_def_idx being required for getting the index\nof a ClassAccessor foreach loop.\n\nBug: 79758018\nTest: test-art-host-gtest\n\nChange-Id: Ie3010a17669f24cf492c678b55bdddba7ec62ea8\n"
    },
    {
      "commit": "1f1cb9f2f0945dbcf6b79d0795b035233dfd9131",
      "tree": "fc5f72ef884e0eaa92f515a90cfd997b0938208a",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 09:22:46 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 20:41:12 2018 +0000"
      },
      "message": "Revert \"Revert \"Move runtime/ to ClassAccessor\"\"\n\nFixed misplaced UnhideAccessFlags to be outside of a conditional\nthat the code item is null / not deduped. This fixes an issue\nwhere these methods would not have had their access flags restored.\n\nBug: 77709234\nBug: 79758018\nBug: 91962648\n\nThis reverts commit cc7e20f9ec7b4a7a57f7196e5e8be67a727f21d3.\n\nTest: test-art-host\nTest: atest FrameworksUiServicesTests\nTest: atest CtsInlineMockingTestCases\n\nChange-Id: I7e5712cdcccef81e19ce81d26743c517b0b8a67d\n"
    },
    {
      "commit": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "a8bba7d0853b372aea3ed3ea154fb2b2a23c2c9d",
      "tree": "973a89870e0cc8912401503ebab1b709a9df5ba0",
      "parents": [
        "65e463cf7ea91003ef030c8a819ae4596c9b820f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 15:18:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 09:48:59 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ClassLinker::FindClass(), fix 1 stale reference use.\n\nThread::CreateAnnotatedStackTrace() was using a stale\nreference `aste_array_class`.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I191907c0053456bb57de425aa6ccd9668df818a2\n"
    },
    {
      "commit": "acb906d7f907b79ef1e6038d7104a5569e81a1ac",
      "tree": "5004be84fa88b8829881efed9ebf2d578b21086f",
      "parents": [
        "5924a4a73f1a2dcf83877062d67c297a9496b326"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 10:23:49 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 14:48:02 2018 +0100"
      },
      "message": "Remove mirror::String::java_lang_String_.\n\nAnd simplify ClassLinker::InitWithoutImage().\nAnd finish ObjPtr\u003c\u003e-ification of annotation processing.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I882a6c2f2b2a88d6ba34e4759bac4a6caa54cafa\n"
    },
    {
      "commit": "2cffc5d2807096c0b7a07b89f5dda6920c6429f5",
      "tree": "3949ab54fa34ba6297aa0074daeba43f560ca9bc",
      "parents": [
        "adbceb73b19cfad3ff9011390415a680382a21ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 15:40:56 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 12:50:32 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify RegTypeCache, fix 1 stale reference use.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: If8674fc712d9bc4d7d2fef1d154192b31b153627\n"
    },
    {
      "commit": "adbceb73b19cfad3ff9011390415a680382a21ec",
      "tree": "b7d4c12fb8cc8d4f9091d48d8e2c35a06b7a8e26",
      "parents": [
        "aab8bc928a8eff425d5e5755fde75b1cb55998a9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 14:34:14 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 17:48:45 2018 +0100"
      },
      "message": "Remove GcRoot\u003c\u003e static from Throwable and related classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8115e6413a07419ec261af3ec5068833b72b5218\n"
    },
    {
      "commit": "c7aa87e1666ac48ddf9149cfdfd64b026b3969e5",
      "tree": "32d5d74718cc558e13642873e55724782ac9df22",
      "parents": [
        "0278be74269fcfe4f2517d449f2bd53472f9b2f9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 15:19:52 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:37:45 2018 +0100"
      },
      "message": "Remove static_class_ from Method/VarHandle and CallSite.\n\nAnd add MethodHandle to the class roots to avoid extra\nindirection through MethodHandleImpl.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Iaf172f3732677f2b4509e8297e6e9af5fb81a89f\n"
    },
    {
      "commit": "537a4fed85530ac29fe5ff173c4b77538d8bbd0b",
      "tree": "dc7a7e699145082827e17034a66260a10d1b9609",
      "parents": [
        "00e15d651e705640d4fdf206faf8317d69b20758"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 15 13:57:58 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue May 15 16:35:59 2018 +0100"
      },
      "message": "ART: Add VarHandle accessors to invoke-polymorphic entrypoint\n\nRemoves the need to interpret methods containing VarHandle accessor\nmethods. Whilst there are VarHandle accessors that the compiler does\nnot support, this will be the fallback path.\n\nBug: 71781600\nTest: art/test.py --host -r -t 712\nChange-Id: I40314b773882faed554c31b7f34c0e319dcf8d45\n"
    },
    {
      "commit": "06d10a78506fae7e033795cda7b1d9d0e1f1fff5",
      "tree": "91f94a605395776710f3d14298613a803158f3aa",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 08:53:38 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 16:49:55 2018 +0100"
      },
      "message": "ART: Add dex::ProtoIndex\n\nTest: m -j32 test-art-host\nChange-Id: Ic2d2a7a43be1b8590b97cdf3729200b043ffc6a3\n"
    },
    {
      "commit": "dbaa5c7ba8935cf87ceb40a4054f9842929e9a51",
      "tree": "5037625c80cb97a0e13026dc450db28e59ff72ca",
      "parents": [
        "51dda39549033b3c50a7fce5522ffc81325db54b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 08:22:46 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 11:55:30 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-handle\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I67f461c819a7d528d7455afda8b4a59e9aed381c\n"
    },
    {
      "commit": "18259d7fb7164a5e029df4f883b3a79ccc2403e8",
      "tree": "ba378bfdef4127bb0607215186e3b150fd38bcdf",
      "parents": [
        "922501b4bbf724e4259477a27764291684eedffb"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 12 11:18:23 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 15:04:09 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-type\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I4b3d3969d455d0198cfe122eea8abd54e0ea20ee\n"
    },
    {
      "commit": "4525e0b62cc808a49b4cd2c826bb52a768779e72",
      "tree": "aba9be998bb3684dff53b4b56c0568fb7187502e",
      "parents": [
        "a8503d9696f37ff66b23016f3374ecbe59774dc6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 05 16:57:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:30:45 2018 +0100"
      },
      "message": "Fix verifier/linker IncompatibleClassChangeError with hidden API\n\nThe verifier and class linker will attempt to find a method with\nthe wrong type if it could not be found with the original type,\ni.e an interface method on a regular class and vice versa.\n\nThis logic did not previously take hidden API restrictions into\naccount and would result in bogus error messages to the user or\ndebug crashes.\n\nBug: 64382372\nBug: 77464273\nTest: art/test.py -r -t 674-hiddenapi\nMerged-In: If8327a70dd73b90249da3d9e505f0c6f89838f8e\nChange-Id: If8327a70dd73b90249da3d9e505f0c6f89838f8e\n(cherry picked from commit 54a99cfcf3d3463404fdf4152523dcc69b8648d7)\n"
    },
    {
      "commit": "5713f668ea0374a1c3020fb466aa0ef6e8c3be7f",
      "tree": "2e1be3cb7c5863374ed15163529f3e029c7f0226",
      "parents": [
        "3896e437d1964fda0120aa249de264de6ef91143"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Tue Apr 24 08:55:18 2018 -0700"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Tue Apr 24 13:18:56 2018 -0700"
      },
      "message": "Use named constant instead of magic number in RegisterLine\n\nTest: host\nChange-Id: I61a8cd8378c9fd6eeafffe2a01fa38f25c01dca8\n"
    },
    {
      "commit": "b58dcecb477668f192d98a964b5397ca98bdd5fe",
      "tree": "8b6df7e2a138b6e04b87bbbd41fe2f5d4470ab8d",
      "parents": [
        "6c3533991522d036cbb5a656c44f63bf633a2925",
        "9c4a015cf01989597fd899011dba310b704dacaa"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 11 15:27:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 11 15:27:40 2018 +0000"
      },
      "message": "Merge \"Move more runtime code to libartbase, libdexfile\""
    },
    {
      "commit": "9c4a015cf01989597fd899011dba310b704dacaa",
      "tree": "17101dd177beb28c1d28c8eddab645bc7d1af984",
      "parents": [
        "6485701497edf2fd4e5296c3715929ad44ea9752"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 05 12:23:54 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Apr 09 23:30:08 2018 +0000"
      },
      "message": "Move more runtime code to libartbase, libdexfile\n\nMove some code that logically belongs to libartbase or libdexfile to\nthose places respectively.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: Idfded5d24b40d8587011681e6235b6672846da19\n"
    },
    {
      "commit": "f5c537efc5c35a91283ce1df188a0c70947d3cb4",
      "tree": "4e355f8d9c0334c47b5ad37e6ea63da7ff86909c",
      "parents": [
        "c83e7fe38da1e94fa98f05454d96c38f5de639a4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 09 18:33:55 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 09 18:53:57 2018 +0100"
      },
      "message": "Add extra logging for bug 77342775.\n\nTest: testrunner.py --host --64 --optimizing\nTest: Repeat with disabled filtering to Lorg/apache/http/,\n      manually expect failure messages.\nBug: 77342775\nChange-Id: I98b1e4fb77dc5c6b57a91c7dda19e1a4b15c29be\n"
    },
    {
      "commit": "3215fff7ef8fa3c2250b91158560eacc613a4671",
      "tree": "50d6fe7aff3f8fae31dcf2ca020f5079f49a592f",
      "parents": [
        "6371249ce05032db5d8c4c7ec96bf7fd7264c42f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 03 17:10:12 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 04 14:47:57 2018 -0700"
      },
      "message": "Separate Malloc and MemMap ArenaPools\n\nMake ArenaPool an abstract base class and leave MallocArenaPool\nimplementation with it.  This enables arena_allocator to be free\nof MemMap, Mutex, etc., in preparation to move the remaining collections\nout of runtime/base to libartbase/base.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      build and boot\n\nChange-Id: Ief84dcbfb749165d9bc82000c6b8f96f93052422\n"
    }
  ],
  "next": "69b1cf13e56a0f192fc40fa38382f072683e063c"
}
