)]}'
{
  "log": [
    {
      "commit": "b40d361019897e8b8484b772ccc0be433abafb5f",
      "tree": "cfb4498ee5757be7cec06f8e4a866e7faabfadba",
      "parents": [
        "a98d9e76ed2486db9a7490a6e421a509ab2f6e2d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 15:49:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 26 15:49:42 2018 -0700"
      },
      "message": "ART: Finish old move of OatDexFile\n\nThe class has been made standalone so it can be forward-declared,\nbut not all nested references had been updated.\n\nTest: mmma art\nChange-Id: Idc5f0af24af17dcae286dee290f729ba61693a11\n"
    },
    {
      "commit": "29cf32bb64dc61c4f755661939630775bd36419d",
      "tree": "fbba0dca090e6ca590c3ce5dfdf3c369c3483446",
      "parents": [
        "cd5c181baa6f919c1156a7b640b99056baf124d5"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jun 26 17:43:05 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Tue Jun 26 17:43:05 2018 +0000"
      },
      "message": "Revert \"Delay init of classes of pre-allocated exceptions.\"\n\nThis reverts commit cd5c181baa6f919c1156a7b640b99056baf124d5.\n\nReason for revert: To fix build breakage\n\nChange-Id: I4ee1a28d3aeb630975ea60ae5606fc92bc5c4652\n"
    },
    {
      "commit": "cd5c181baa6f919c1156a7b640b99056baf124d5",
      "tree": "fabcaebc6c0baa43001c7ed3f72edfffbf1cad32",
      "parents": [
        "fad8ad743e27b5d809f4e7d71d50fe3726cc7b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 22 14:14:19 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 26 16:45:03 2018 +0100"
      },
      "message": "Delay init of classes of pre-allocated exceptions.\n\nSupport non-trivial Throwable.\u003cclinit\u003e() used by upstream\nOpenJDK.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nBug: 109925024\nChange-Id: I7ad732a6fd267319de16d8a003e80d1d26f5e7cc\n"
    },
    {
      "commit": "a316f9129a698ccb995b035f8781f93c58981893",
      "tree": "a55c64c376f7cd54018a6de209102464f9b9d38b",
      "parents": [
        "74f2ccc9fad3cfd8e04d24aceba1c58ce08884dc",
        "baac7e44445286bb2a048ff24a14a65c537dd9b9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 11 19:13:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 19:13:39 2018 +0000"
      },
      "message": "Merge \"\"Revert^4 \"Make adbconnection start automatically for debuggable apps (on target)\"\""
    },
    {
      "commit": "74f2ccc9fad3cfd8e04d24aceba1c58ce08884dc",
      "tree": "ba0051646cb8e8192f690259475101b61101d5c3",
      "parents": [
        "9fdd0125538fe63458aec68c4a40b025759bcf7c",
        "05e34f4cb8c9db165d1008721e874b9dd3db024b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 15:02:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 11 15:02:44 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "05e34f4cb8c9db165d1008721e874b9dd3db024b",
      "tree": "c41d397ef5cfb9d7918fceadcda3195a0d0d91de",
      "parents": [
        "428d80e3a49f732b39bb0c71cfde26451e3fdf4d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 24 13:19:05 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jun 11 14:03:37 2018 +0100"
      },
      "message": "Revert^2 \"Remove support for Valgrind in ART.\"\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nThis reverts commit 8b362a87d52a6668ffd2283ef6ffc274315f41c8.\n\nChange-Id: I23c76845e6ccf766f19b22b58a0d5161f60842a9\nTest: art/test.py\nTest: art/test/testrunner/run_build_test_target.py art-asan\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "baac7e44445286bb2a048ff24a14a65c537dd9b9",
      "tree": "838047521312068499b0183ceb93f958a40f93f0",
      "parents": [
        "cf8e60fceee8b622b63f022e7b37f7df0f604320"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 15:30:11 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 08:45:39 2018 -0700"
      },
      "message": "\"Revert^4 \"Make adbconnection start automatically for debuggable apps (on target)\"\n\nNeeded to tell run-jdwp-tests.sh not to load adbconnection since it\nmight not be present.\n\nThis reverts commit fb57a6528d73e6ddbccf3049f08f6fa400e6dcd1.\n\nReason for revert: Added -XjdwpProvider:none to run-jdwp-tests.sh\n\nBug: 109505014\nTest: ./art/tools/run-libjdwp-tests.sh\n\nChange-Id: I43941f7048ae5b64c6cbe7a8e7c273d47596192c\n"
    },
    {
      "commit": "fb57a6528d73e6ddbccf3049f08f6fa400e6dcd1",
      "tree": "e334f68df51c6078fd51f293a38146c6fcb6c106",
      "parents": [
        "7b39a39258311ad6c3da5934746a186c185c3f4f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 08 09:40:19 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 08 09:40:19 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"Make adbconnection start automatically for debuggable apps (on target)\"\"\n\nThis reverts commit 7b39a39258311ad6c3da5934746a186c185c3f4f.\n\nFails jdwp tests on target.\n\nBug: 109505014\nChange-Id: Ib8a278bc8c8137e1f1397e3e881d652504fea96f\n"
    },
    {
      "commit": "7b39a39258311ad6c3da5934746a186c185c3f4f",
      "tree": "754ff7de04f56baa11e0185d549ddfc5af42f1fb",
      "parents": [
        "dc53f1616d656a757fb26039f387b7ee44ff2f1d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 06 14:18:24 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 07 11:24:36 2018 -0700"
      },
      "message": "Revert^2 \"Make adbconnection start automatically for debuggable apps (on target)\"\n\nThis reverts commit b2926c0cdbd30af7529b90fe20b24010f844ccc1.\n\nWe were trying to start with adbconnection but that was not always\navailable on devices. This could cause tests to fail.\n\nBug: 109505014\nReason for revert: Fixed issue causing target tests to sometimes fail.\nTest: ./test.py --target\n\nChange-Id: I0bb9cd2dce87145a8a9c372e2f015e36a3276369\n"
    },
    {
      "commit": "f75613cb7c5cda6a4603ab7041d6f98ec62a80cd",
      "tree": "5d253108db708da20e0bbf55a5f3d8e2f8bce4d7",
      "parents": [
        "2b40dd35c65ad644d448611750f5b577e97594a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 05 12:51:04 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 07 14:24:02 2018 +0100"
      },
      "message": "Keep objects for Integer.valueOf() intrinsic alive.\n\nKeep boot image objects referenced by the intrinsic alive\nthrough boot image roots, so that they can never be dead as\nthe intrinsic would still be able to resurrect them later.\n\nNote that currently the GC considers all boot image objects\nlive forever. That risks leaking memory and should be fixed.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 71526895\nChange-Id: Iec25cc27e9c5c4bd3c5711991e3111bfb19ef182\n"
    },
    {
      "commit": "9c3965f30236cd233bf1e0a44e7a66b305efde95",
      "tree": "8f48ba4b7254b42061b020c930b4a89384008cd4",
      "parents": [
        "7bdc591cc1deef132254ce662d6f61909800d4c3",
        "b2926c0cdbd30af7529b90fe20b24010f844ccc1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 06 07:37:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 06 07:37:02 2018 +0000"
      },
      "message": "Merge \"Revert \"Make adbconnection start automatically for debuggable apps (on target)\"\""
    },
    {
      "commit": "b2926c0cdbd30af7529b90fe20b24010f844ccc1",
      "tree": "3a6d17746e17213a04368d6140d246063f2316b2",
      "parents": [
        "5af3f503f3ad5a24dc1acac3070f7dcda4b6593d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 06 05:49:44 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 06 05:49:44 2018 +0000"
      },
      "message": "Revert \"Make adbconnection start automatically for debuggable apps (on target)\"\n\nThis reverts commit 5af3f503f3ad5a24dc1acac3070f7dcda4b6593d.\n\nReason for revert: Breaks target tests\n\nBug: 109505014\nChange-Id: I43877a11c615637a152954e0c0d0b2b0f18bcc9e\nTest: none\n"
    },
    {
      "commit": "ecf98d5ef4c58bc860478f5bbfcdd7dac64f6148",
      "tree": "00a067a03a3d667cf9a2c4331d4b7d679bc6c189",
      "parents": [
        "1fdd8d899efb2d00ac859318ad150369c30f87c2",
        "5af3f503f3ad5a24dc1acac3070f7dcda4b6593d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 05 19:41:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 05 19:41:30 2018 +0000"
      },
      "message": "Merge \"Make adbconnection start automatically for debuggable apps (on target)\""
    },
    {
      "commit": "5af3f503f3ad5a24dc1acac3070f7dcda4b6593d",
      "tree": "76c3ca01e088b0fd8d1a863dc58ce4a7e22d3a76",
      "parents": [
        "5ebdc88a8469cb2bb9188c18b379ca486d338728"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 04 16:17:56 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 05 09:35:54 2018 -0700"
      },
      "message": "Make adbconnection start automatically for debuggable apps (on target)\n\nWith wrap.sh it is required that apps that wish to be debuggable\ndeclare that explicitly by adding the \u0027-Xcompiler-option --debuggable\u0027\noptions. When we switched to the new debugger implementation we\naccidentally added a requirement that you pass\n-XjdwpProvider:adbconnection. This removes that requirement and\nreturns to the earlier state.\n\nBug: 109505014\nTest: Build program with wrap.sh that adds -Xcompiler-option --debuggable\n      Attach debugger to program.\nChange-Id: I9416ed3b156776439f5bfec032fee3f11fe4eb3c\n"
    },
    {
      "commit": "c13fbd8596988f1daf71197008007c2eaa380585",
      "tree": "4c02277989abc7ac1081698269504ab329ddab8f",
      "parents": [
        "026105570d8fcd4b3cb60c3d6b7bb7141cd8146c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 16:16:28 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 18:33:38 2018 +0100"
      },
      "message": "Use pre-allocated Throwables from the boot image.\n\nThe pre-allocated OOMEs and NoClassDefFoundError were stored\nin the boot image but they were not used, we instead used to\nallocate and use new objects. This change adds references to\nthe image roots, so that these Throwables can be used when\nstarting the runtime using the boot image.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 77947463\nChange-Id: I2079344dee61242bf0bef5c32770c33ac8a6b7a4\n"
    },
    {
      "commit": "317892b756cd2a87c01928b09e99e020c86dea10",
      "tree": "bb337ff8cd81c049e781afbd8c68b72ca30907fc",
      "parents": [
        "1539a11150ca9c28fec353b38508267c41d7814b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 11:11:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 31 13:56:49 2018 +0100"
      },
      "message": "Remove static GcRoot\u003c\u003es from Class and ClassExt.\n\nAnd clean up gc_root includes in runtime/mirror/.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ib5c42a3a892ced4440720350a63a94bcf3a1ca75\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": "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": "679730e6c4be680b3e72b55a4200de9590641009",
      "tree": "ca7d0719aed00457a2c898cf2dc56300956ea875",
      "parents": [
        "6834d3414308e3d536bc685dbb3d60fe70186f23"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 15:06:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 15:06:48 2018 +0100"
      },
      "message": "Remove static GcRoot\u003c\u003es from Field, Method, Constructor.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I648b88339995761fb81180286ef48a42bbd2f83d\n"
    },
    {
      "commit": "6834d3414308e3d536bc685dbb3d60fe70186f23",
      "tree": "7c579de52d3acc5cc4d02babf25c7fcb2b94793b",
      "parents": [
        "c7aa87e1666ac48ddf9149cfdfd64b026b3969e5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 13:12:09 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 14:12:31 2018 +0100"
      },
      "message": "Remove mirror::Reference::java_lang_ref_Reference.\n\nAnd some #include cleanup after previous CLs removing\nstatic GcRoot\u003c\u003es.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I56b34637f9d793ed7680696a1eeedd07d061ad00\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": "0278be74269fcfe4f2517d449f2bd53472f9b2f9",
      "tree": "1a59adbd7b5632cba4766b55195fdaf627cdfec0",
      "parents": [
        "b4eb1b19e1dd35d12a408358656c1421f507d231"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 13:30:24 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:33:37 2018 +0100"
      },
      "message": "Remove PrimitiveArray\u003cT\u003e::array_class_.\n\nAnd ObjPtr\u003c\u003e-ify jni_internal.cc while we\u0027re touching it.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I15a8ade772e3e4337371c6f3c472f9efea9f4636\n"
    },
    {
      "commit": "197f1ef6f4f2411d011d7e8f696775c3fbcffd86",
      "tree": "eacc720024479e75b03d12ac6764f2cd2ba945b3",
      "parents": [
        "04f0eaffa70e0384c07bb3680aa0724144358330",
        "8b362a87d52a6668ffd2283ef6ffc274315f41c8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "message": "Merge \"Revert \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "8b362a87d52a6668ffd2283ef6ffc274315f41c8",
      "tree": "14b187cd0b4afde501b9cc7a9dc82c997362e888",
      "parents": [
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "message": "Revert \"Remove support for Valgrind in ART.\"\n\nThis reverts commit 8268cb677bd92bfbcfec7e803775c29687494e53.\n\nReason for revert: ASAN failures\n\nChange-Id: I7e66d3f3fb461ae4f6dea6ec7d506b7dface3402\nTest: SANITIZE_HOST\u003daddress m test-art-host\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "f31343f1eab771010b3f293366149d2524f30902",
      "tree": "5187b2bceee4c7d5347750dc6ba0020172d5ef51",
      "parents": [
        "e816389b61d17b9a82d8e61426ddfcce20e1238c",
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "message": "Merge \"Remove support for Valgrind in ART.\""
    },
    {
      "commit": "d352156dfeadc72fda186ef8dcbeea4d06eee509",
      "tree": "64ff7c025cacac290e21beea27ef6533e4f04d79",
      "parents": [
        "cbe50e965be5bcc7e9e0bba8b52a9b1adb7c291f",
        "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "message": "Merge \"Refactor runtime callee save frame info.\""
    },
    {
      "commit": "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d",
      "tree": "88dd2599ad89da5a4f2668a2c9debd0335669cd0",
      "parents": [
        "6623bc389c43efc87668ce7465e19b195e765e22"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 17 08:43:47 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 14:38:14 2018 +0100"
      },
      "message": "Refactor runtime callee save frame info.\n\nAnd avoid storing the info in Runtime.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nChange-Id: Ib14853fc06c420753993e1f9e82a1b01f5e35e8c\n"
    },
    {
      "commit": "8268cb677bd92bfbcfec7e803775c29687494e53",
      "tree": "b63ca42dcd440117187e3c859b4b311b11b8137e",
      "parents": [
        "004b8875b291af5001d384fb1eb76ae0660ff056"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 11 15:06:17 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 14 18:40:49 2018 +0100"
      },
      "message": "Remove support for Valgrind in ART.\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nTest: art/test.py\nBug: 77856586\nBug: 29282211\nChange-Id: Ifdcbfccc1830104c455760457df66ede4a4cd135\n"
    },
    {
      "commit": "46226f02fdfe50e1d49ffd77d3e99598ff79d9b9",
      "tree": "06a933c38e710a9ce96d9a26688786c76abf1c6e",
      "parents": [
        "32bde99142c5e59b8cad572d9a7b5a81ee12cd00"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 14 15:34:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 14 15:34:32 2018 +0100"
      },
      "message": "Set default hidden API policy to dark+black\n\nWhen invoking dex2oat, only a boolean flag is used to enabled/disable\nhidden API checks, instead of a 2-bit value passed down to zygote.\nWhen the flag is true, use dark+black lists as the enforcement policy.\nThis is conservative, as compiling with both lists enforced may lead\nto more classes being re-verified at runtime, but correctness is\npreserved.\n\nBug: 64382372\nTest: N/A\nChange-Id: If15723ad40b99c5475f10561b5b3a669a8fb01c7\n"
    },
    {
      "commit": "016fcbe2d24a99b688ae2b5c03ce13d270a97886",
      "tree": "96ec3e56325a6ea7618613ef96b04022612f7907",
      "parents": [
        "d10995609f9fd8b85db1a5143b124195805ca5bb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 03 19:47:35 2018 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 09 22:11:54 2018 +0000"
      },
      "message": "Support system server ART-profiling\n\nWe don\u0027t have to map the code cache as executable if we only want to save\nprofiles. This enables system server profiling without disabling SElinux\nto bypass the jit code cache exec-mapping.\n\nTest: m test-art-host\n      boot a device with system server profiling enabled.\nBug: 73313191\n\nChange-Id: I7f25a905e0b23456183e39e58ad8f4b829ddf0c5\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "1fd97f29d646770c5e8ddee2e8fe468ffcc9ea2c",
      "tree": "be2fbd393abfe438c1e734055f1d3d084755e6a6",
      "parents": [
        "9a13d423c71517bc9cb3cf40e97dd0f6f5d5c72c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 03 15:32:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:20 2018 +0100"
      },
      "message": "Log an event on hidden API accesses.\n\nThe new event consists of:\n- The type of access (reflection, JNI, etc.)\n- The action taken (warn or deny)\n- The type of member accessed (field or method)\n- Name of the class which defined the member accessed\n- The name of the member\n- The type signature of the member (type of field, or method signature)\n\nThe fully qualified member name is also not included to avoid the overhead\nof building the string. It can be build from the information included.\n\nSimilarly, the package name, version, etc. are not included as they can\nbe inferred from the context when analyzing the event log.\n\nThe event is sampled, according to a sampling rate that can be set by a\nconfiguration option, to reduce log spam.\n\nTest: $ m\nTest: $ adb shell settings put global hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep art_hidden_api_access\n\nSample output:\n16796 16796 I art_hidden_api_access: [1,0,Ldalvik/system/VMRuntime;,getRuntime,()Ldalvik/system/VMRuntime;]\n16796 16796 I art_hidden_api_access: [1,2,Ldalvik/system/VMRuntime;,setHiddenApiExemptions,([Ljava/lang/String;)V]\n16796 16796 I art_hidden_api_access: [1,3,Landroid/app/Activity;,mDoReportFullyDrawn,Z]\n(Timestamps have been elided)\n\nBug: 64382372\nBug: 77517571\nMerged-In: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\nChange-Id: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\n(cherry picked from commit 73ddda4403c8088a730b8d456de46bb8e0307ed8)\n"
    },
    {
      "commit": "53af040f8c1a817dcb1e727a3e83baab3449569a",
      "tree": "29a38f4aee4392fc7580f630f7909fb11da15ee5",
      "parents": [
        "b09abb2f8a988ccc95d91dc8624577188c771bc0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 03 10:40:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 04 11:55:30 2018 -0700"
      },
      "message": "ART: Remove tombstoned parameters\n\nThese are no longer supported. Always try to use tombstoned when on\na device.\n\nBug: 77288304\nTest: m test-art-host\nTest: Device boots\nTest: manual ANR dumps work\nChange-Id: Iffd3287432becfc7982cdcb9a0cfe44f0c5b5143\n"
    },
    {
      "commit": "89b06a15b530acf78727700075d8b457e1cc4eb0",
      "tree": "0d4cc200d359f532cb1fc27f0d7e5cc3b4bf8ee7",
      "parents": [
        "9e363f65c1d85e601b0445b51fefc5156ec71fca",
        "30025095524e471ec347633e39f26ed0606bea65"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 26 09:00:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 26 09:00:58 2018 +0000"
      },
      "message": "Merge \"Pass the fd to OatFile::Setup to avoid selinux errors.\""
    },
    {
      "commit": "30025095524e471ec347633e39f26ed0606bea65",
      "tree": "533cbe1808445dcd4dd6d8b7dacc180fcc29b90a",
      "parents": [
        "cee49280366af9aa35e889e90d0ae0e90b453a22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 19 14:43:29 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 24 14:39:06 2018 +0100"
      },
      "message": "Pass the fd to OatFile::Setup to avoid selinux errors.\n\nbug: 77853712\nTest: test.py\nChange-Id: I069cda5296b561284d71b067924e1bc4a8562710\n"
    },
    {
      "commit": "f889c70e79643373320f5742cc719d6c467531b9",
      "tree": "ada543c87521fbfd98bbbe0004ca9e89c36a9489",
      "parents": [
        "740a50992ea1a200068eb4486a172a151c9b329c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 23 15:25:45 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 19 10:30:50 2018 -0700"
      },
      "message": "Always allow agent attach on userdebug builds with kArtTiVersion\n\nWe added support for the jvmti-alike ArtTi for use by debuggers on\nuserdebug/eng builds of android. Extend this support to allow any\nagent to be loaded on any process of a userdebug device. These agents\nwill need to make use of kArtTiVersion (0x70010200) envs.\n\nTest: build\nTest: ./test.py --host -j50\nTest: ensure AS profiler continues to work with userdebug devices\nBug: 78195998\nChange-Id: I984d1ea937eb49afb376a48bea3d67085192020e\n"
    },
    {
      "commit": "7b0e844d8f0a59c6e1e9ac0c441409d2e435ac36",
      "tree": "e127fcf1840a8e249bfdb0725f6c73181fe84246",
      "parents": [
        "6c3533991522d036cbb5a656c44f63bf633a2925"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Apr 11 18:27:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Apr 11 19:04:04 2018 +0100"
      },
      "message": "Distinguish the various pre-allocated OutOfMemoryError use cases.\n\nThe pre-allocated exception \"OutOfMemoryError thrown while trying to\nthrow OutOfMemoryError; no stack trace available\", can be thrown in\nthree occasions:\n1. OOME thrown while throwing an exception (not necessarily an OOME);\n2. OOME thrown while throwing an OOME;\n3. OOME thrown while handling a stack overflow.\n\nTo improve error reports, replace the unique pre-allocated OOME\nexception with three different exceptions for these three use cases.\n\nNoe that we were already manually dumping a stack trace in case #2.\nThis change implements this for case #1 too.\n\nTest: art/test.py\nBug: 68251879\nBug: 77567088\nBug: 77844013\nChange-Id: I84cd15b729b4d0bd7bf6c831caeb0eb93c458114\n"
    },
    {
      "commit": "cdb4cb19f1135bf2003a6649c2c72ea13a406f88",
      "tree": "ee9ac1e1703d76a6bfec72f46253539eb39c4e3e",
      "parents": [
        "ddc694267aee845c9b61779be2a5487eb65b1757"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 11:29:16 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 11:29:16 2018 -0700"
      },
      "message": "Remove historical workarounds.\n\nWe removed libcorkscrew in L, and we removed its replacement in P.\n\nWe removed the LLVM uses several years ago too.\n\nBug: N/A\nTest: builds\nChange-Id: I414c9c3dc3c2c2e0016b9da0e9f8aa16068daa8c\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"
    },
    {
      "commit": "75b47b47c4c54adccbb723cfbf48e32953887713",
      "tree": "876ce211773db3e3785254ae8d7e6b66545c76be",
      "parents": [
        "0b1d3ca323bd504818e4cdab1baa732964ee150a",
        "6ee497188b0e8c7bcf5126cefad04090f956616a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 16:54:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 30 16:54:27 2018 +0000"
      },
      "message": "Merge \"Revert^4 \"Add an option to disable native stack dumping on SIGQUIT.\"\""
    },
    {
      "commit": "6ee497188b0e8c7bcf5126cefad04090f956616a",
      "tree": "db2d06b01d255811726ea748db8eb6f62cd7b71c",
      "parents": [
        "642e9d8249be5aff68022cabdc8ba576a57ff8d6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "message": "Revert^4 \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nBug: 74121887\n\nStill failing :(\n\nThis reverts commit 642e9d8249be5aff68022cabdc8ba576a57ff8d6.\n\nChange-Id: I603ca9fdd2d8f2f759527130b3288efe5b23b5c3\n"
    },
    {
      "commit": "aa12001baf69c124ab3901c13385aaa43fc76987",
      "tree": "9cedf9714284f6a25dc40e8746aae3a719e86de4",
      "parents": [
        "3be56a02c6311d2a751f8a7410843199f9f4c9cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 16:23:24 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 17:32:16 2018 -0700"
      },
      "message": "ART: Refactor hidden_api\n\nAdd hidden_api.cc, move handling of hidden fields there. Also\nremove an unnecessary include that meant hidden_api was imported\ninto too many compilation units, and fix transitive includes.\n\nBug: 73896556\nTest: mmma art\nTest: m test-art-host\nChange-Id: Ie47e11abcea68e326c410bab215ebbfbf049051b\n"
    },
    {
      "commit": "642e9d8249be5aff68022cabdc8ba576a57ff8d6",
      "tree": "1fa53cee639241bd3968997e55e38ed282235569",
      "parents": [
        "b939805d9d4b0957274c562fb8053512d04138b2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 20:30:55 2018 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 22:36:09 2018 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\"\n\nThis reverts commit 74d25c9040dfd1e0985987eb38817e526878a3db.\n\nReason for revert: The original failing condition appears to be gone.\n\nBug: 74121887\n\nTest: Ran 004-ThreadStress many times against the target.\nChange-Id: Ie5bd050112e654a99bdfea7d6dd673882ca35567\n"
    },
    {
      "commit": "e8a4e378c5a928d5de07bee6db99150a57dabcd8",
      "tree": "cfe89ca742bed927e67d9cf926937fe5e6f89347",
      "parents": [
        "454bc46869f116fc1c3b9e38b0868341d463ed4b",
        "597d7f650b0656fcb3985b01f53284717b41e5cc"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Mar 23 13:29:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 23 13:29:03 2018 +0000"
      },
      "message": "Merge \"More flexible API enforcement policy support.\""
    },
    {
      "commit": "597d7f650b0656fcb3985b01f53284717b41e5cc",
      "tree": "59ba9853104427b19f2449ce547301764d22756b",
      "parents": [
        "753ce1bcf458ad6c6fbb41689901943d44e7738e"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Mar 22 11:36:47 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Mar 23 11:43:35 2018 +0000"
      },
      "message": "More flexible API enforcement policy support.\n\nThis CL adds the ability to configure which banned API lists to enforce,\ndefined by new enum hiddenapi::ApiEnforcementPolicy. Currently, the policy\ncan be set at zygote fork time, but not at dex optimization time where\nblacklist enforcement is still assumed. As such, making the policy more\nstrict will not work as expected yet. This will be improved in a follow up\nCL.\n\nTest: art tests pass\nTest: Device boots\n\nBUG: 73337509\n\n(cherry-picked from commit 159f596eec01adbb5a1c9654402c137cdb943131)\n\nChange-Id: I6c319bb8a3000cb1d3c4693b4fb196e749c36d96\nMerged-In: I33f9afce628a86727e400052f4d5979d3536da8c\n"
    },
    {
      "commit": "6ff3b371e53ffdb6d0aa9f85ae9468696f5fa2b0",
      "tree": "e4ceaf9ac71100bcc68942ec3fd0e718e8dc89f0",
      "parents": [
        "182cbe4dcba21f797f3a9195338baf3cba775f60"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 15 08:53:16 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 15 20:58:40 2018 -0700"
      },
      "message": "ART: Clean up Trace\n\nRemove unneeded field. Refactor Start to have a cleaner interface.\nAdd exception for invalid file descriptor.\n\nTest: mmma art\nTest: art/test/testrunner/testrunner.py -b --host --trace\nChange-Id: I7d0cd9629796c690a993dbbba5ae96d940c44dba\n"
    },
    {
      "commit": "86821aca0eff7fb1fff18c0d71acfcc06f5d73f3",
      "tree": "a285269f9035de4767c2b166784b33ca3a8e9d01",
      "parents": [
        "ec9855e6262cd477c9f61ed245b9e2526e351698",
        "74d25c9040dfd1e0985987eb38817e526878a3db"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 13 08:57:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 13 08:57:20 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\""
    },
    {
      "commit": "74d25c9040dfd1e0985987eb38817e526878a3db",
      "tree": "e63323329298a7cc67799324a6edc2378cfb6822",
      "parents": [
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "message": "Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\n\nBug: 27185632\nBug: 74121887\n\n\nGot flakes on device for 004-ThreadStress and 141-static-field-sigquit\n\nThis reverts commit 8b089742252e827d863218413e8855e1bae75af5.\n\nChange-Id: Ie76c84a1889e85b885d5f4123d60e8a760cf186d\n"
    },
    {
      "commit": "2229f6d515fb82157e3adbe802d10f9ea98598ae",
      "tree": "f1c02f869e5e4e68251d1ab8541a627c41934368",
      "parents": [
        "1639f65404c77ae6e992faf19617491dbc417dfc",
        "230fa94bb87e6414376aa828bd47068c684ed57f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 02:22:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 09 02:22:49 2018 +0000"
      },
      "message": "Merge \"Make LOG(INFO) a VLOG(jdwp)\""
    },
    {
      "commit": "230fa94bb87e6414376aa828bd47068c684ed57f",
      "tree": "1c0991f8f2e761cb701d5247e3fa28fee02f21eb",
      "parents": [
        "08a6c3dd9f65a91cfa0df13c055262bb496f3a98"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 14:07:02 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 14:07:02 2018 -0800"
      },
      "message": "Make LOG(INFO) a VLOG(jdwp)\n\nThis log is often printed during cts tests where it is not useful.\n\nTest: build\nBug: 62821960\nChange-Id: I16c349152215fd41266725870e6ff39819fb03d4\n"
    },
    {
      "commit": "7a02c66fd9ed174fc2e49ccc9f582dd661b7de9e",
      "tree": "8f193c8ecea0ff418370bf72babb97487e8c9c65",
      "parents": [
        "334f170654fed18711d8dcf5238c1ac8bad7ecd1",
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 19:56:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 06 19:56:58 2018 +0000"
      },
      "message": "Merge \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\""
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "8b089742252e827d863218413e8855e1bae75af5",
      "tree": "bbfe333fced26fbc42f87a4469c59822611acd9f",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 11:47:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 13:43:15 2018 -0800"
      },
      "message": "Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nThis reverts commit a73280df8cac1279b6dea0424722f42ef0048613.\n\nBug: 27185632\nBug: 74121887\nTest: m test-art-host\nChange-Id: I24af48619577a78371c93cbad24d307d4d7a217d\n"
    },
    {
      "commit": "66ff8a8b82ff103d48d40e8dad01342c2d6f6d0d",
      "tree": "f1e177b7276d0387bc109fa12e6bd4cde060d5e9",
      "parents": [
        "878124c13b794900b0f5c437f52ac0f61538ab55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:27:55 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:31:13 2018 +0000"
      },
      "message": "Revert \"Revert \"Full-stack integrity: check vdex contents.\"\"\n\nbug: 30972906\n\nInitial revert due to \u0027check\u0027 file of the test needing updating for target tests.\n\nThis reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.\n\nChange-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f\n"
    },
    {
      "commit": "a19b7649faf8780737be7ce3ec48a12d81c6d69f",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "message": "Revert \"Full-stack integrity: check vdex contents.\"\n\nbug: 30972906\n\nTest fails on device.\n\nThis reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb.\n\nChange-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71\n"
    },
    {
      "commit": "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb",
      "tree": "596ef15de83798868d8e6c6cb6cbcb9a45e203e8",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 13:56:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 10:40:05 2018 +0000"
      },
      "message": "Full-stack integrity: check vdex contents.\n\nFor priv-apps, if a vdex on /data has dex code, it must\nbe because the APK has compressed dex code.\n\nFall back to APK if not.\n\nFor test convenience, update --copy-dex-files to also\ntake a \"always\" variant.\n\nbug: 30972906\nTest: 677-fsi\n\nChange-Id: I49f0eab46650145316a86de2971a3b9c140bcff7\n"
    },
    {
      "commit": "2bce0763cbbd8cf35ab4e14a1920afce735e9b89",
      "tree": "702989f754d38b7251d9116fc67c9087416c1440",
      "parents": [
        "a1322f062616c7979da49d2c2198eabb6b7b259d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 20 16:03:34 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 20 16:03:34 2018 -0800"
      },
      "message": "Register tests for profiling after the runtime has started\n\nEnsure that the profile saver thread starts after the runtime finishes\nstarting. In test mode (when -Xps-profile-path is passed) we were\nregistering the app info to early.\n\nTest: run-test 927-timers\nChange-Id: Iede588524dda3ff60aa3e2c61ed1d906f63a6c70\n"
    },
    {
      "commit": "7287c4d75e38e7a01c7ea3fdebb47d9cfe128a56",
      "tree": "2b43d1b334e05e1c5719fee3f2a16bebaff059d9",
      "parents": [
        "1efa7cb8c415f4df8a248242cd773a1fc671878e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 15 10:41:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 15 15:36:21 2018 +0000"
      },
      "message": "Add Class.getPrimitiveClass().\n\nImplement the native part in ART and remove the native parts\nof the previously needed workaround for java.lang.Void.TYPE.\n\nCompanion libcore/ change:\n    https://android-review.googlesource.com/619326\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nBug: 73346078\nChange-Id: Icfb201a1f08d8ff2a65c58f7c0ec25aa2296db29\n"
    },
    {
      "commit": "d7fbc0eb824e495b940dd739404d945a35f01fd3",
      "tree": "bec376f405c5bef02d2c61f73c43738b6ef33fff",
      "parents": [
        "3bffbe8a8288cf01b7248fffdd320bf688529bcb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 12 16:44:36 2018 -0800"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 14 10:06:03 2018 +0000"
      },
      "message": "Refactor hidden API runtime flag from negative to positive\n\nThere are only two situations in which we want to enable hidden API\naccess checks: (a) when forking a non-platform app from zygote, and\n(b) when compiling such app with dex2oat. It is easier to cover these\ntwo situations than all the other situations when we want to disable\nthe checks. Make the flag in Runtime class false by default and only\nenable if checks are explicitly requested by the runtime.\n\nBug: 64382372\nTest: boot device, install and run apps, check log messages\n\n(cherry picked from commit 9cf8b671a24f55c7e1a1df561d6cce85b45cebd8)\n\nChange-Id: Ib5ccb20596c708cedf9b2c05af228463bec2adb1\n"
    },
    {
      "commit": "65400370103ac8005005d0ac68a905c39ba21b45",
      "tree": "6e957058a007302ded720fea4d1ed021219c7481",
      "parents": [
        "b7a3ddfaa37f4c1d6483b9c285080b25bbdd343e",
        "25419b59f6fce8da492c9d742d4a157c6c645558"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 17:39:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 09 17:39:55 2018 +0000"
      },
      "message": "Merge \"ART: Add option to use stderr logger\""
    },
    {
      "commit": "cd4ddeea1c33d5f9b7758d116451bd06f1b81aff",
      "tree": "fa333538dc655ac62edd7f25a11c88749c6c7ad5",
      "parents": [
        "551ff7e3176533576527b74e37cb65296d60ac15",
        "928033d81f63912f669acd27a72897694eb31db6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 14:55:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 09 14:55:25 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Interpreter support for VarHandle accessors\"\""
    },
    {
      "commit": "928033d81f63912f669acd27a72897694eb31db6",
      "tree": "4fa9d3e320f1fbb8f39d4128037f6a4b02c69fd7",
      "parents": [
        "426ee26b3dcc2c6ff0e16096c57f62b98b91b71e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 07 05:30:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Feb 09 13:09:26 2018 +0000"
      },
      "message": "Revert^2 \"ART: Interpreter support for VarHandle accessors\"\n\nThis reverts commit c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd.\n\nBug: 65872996\nTest: art/test/testrunner.py -b --host\nChange-Id: I2d1017c45cee5b2fd2dd05e5eeff0a72146663b1\n"
    },
    {
      "commit": "25419b59f6fce8da492c9d742d4a157c6c645558",
      "tree": "bcd10f3dfb0935aa7f3f38b909f0e7a2be5c0092",
      "parents": [
        "b1c724cc1e57878faed18cee007a26b9da7e3cf2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 21:30:26 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 21:30:26 2018 -0800"
      },
      "message": "ART: Add option to use stderr logger\n\nAdd a runtime option that sets the android-base logger to StderrLogger,\nforcing all further logging to go to stderr. This can be used for\nbetter interaction with dalvikvm or dex2oat on-device.\n\nBug: 72998814\nTest: m test-art-target-gtest-dex2oat_test\nChange-Id: I18794bbed0885810f8f0480816b1c780753a9702\n"
    },
    {
      "commit": "a6899033c5799f882f19f5e4ff7844d21058143f",
      "tree": "8880ebf73e38adb316146147a09f52deab89917b",
      "parents": [
        "7d522a4447749e395d0ce65207a479861e09445a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 07 02:44:46 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 07 16:21:35 2018 +0000"
      },
      "message": "Do not enforce hidden API for boot image and preopt compilation\n\nWhen compiling on host that hidden API checks should not be enforced.\nThis is a proxy until the compiler flags are cleaned up.\n\nBug: 64382372\nTest: make with blacklist enabled\nChange-Id: I03777526d68db22ca3589e223af9466a1c9786d8\n"
    },
    {
      "commit": "ad666279a4af62e122f52cc7872efb812d82887f",
      "tree": "709642c73fbd79f16a65eb1428fd2c625f7c3f19",
      "parents": [
        "6db9a6c240e0ef4c69448c7806c5d035b7b5b111"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 06 20:30:59 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 06 21:41:18 2018 +0000"
      },
      "message": "Disable hidden API checks for Am\n\nAm starts its own runtime and its Java code should be exempt from\nhidden API checks. Change the logic in runtime.cc to disable hidden\nAPI checks by default and only enable them if:\n(a) dex2oat runs without -Xno-hidden-api-checks\n(b) zygote forks a new process without DISABLE_HIDDEN_API_CHECKS flag\n\nThis logic can be simplified by changing the flag from negative to\npositive. Since the cleanup requires touching multiple projects, it\nwill be done in a future CL.\n\nBug: 73001007\nBug: 64382372\nTest: manual\nChange-Id: I8a222f7a16bf88ffe4541558f3ba789f38d7322e\n"
    },
    {
      "commit": "92265222f1e1df56ee6d106493b1bd2be65d5ce9",
      "tree": "d73a4f9708acbedb1d464c83c22756ac0eb68799",
      "parents": [
        "e5bf41acab7cc5a798a4d19425493a4af8f20436"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 02 11:21:40 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Feb 03 02:11:11 2018 +0000"
      },
      "message": "Only set UI warning on hidden API dark greylist\n\nThe framework might show a toast notification on access to greylisted\nhidden APIs. Only show this warning on dark greylist so as to not spam\nearly testers.\n\nBug: 64382372\nTest: make\nChange-Id: I8b5f7b4938e0f238c513e37d7db06856b966802f\n"
    },
    {
      "commit": "2e349167ebdaf10dee9d68f06bbe620ed9aa841b",
      "tree": "a2b9fc1f37f2e68352d0c2475fd5373ebf481686",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 24 19:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 01 13:55:12 2018 +0000"
      },
      "message": "Enable hidden API enforcement\n\nTest: manual\nBug: 64382372\nChange-Id: I4cbbfb83a2fb697e78a22858cfdd6a6779e6762d\n"
    },
    {
      "commit": "bc718924e303339f30d5545e1088d55b772e0f5e",
      "tree": "3dac03e8a03c7aa3800706772601d47ee1a0ce90",
      "parents": [
        "cec262e99d2be886fa0b39de87cf937b69878ed3",
        "b06bd683aab50a80ef98f0ffbec9880dad068d15"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 30 19:55:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 30 19:55:28 2018 +0000"
      },
      "message": "Merge \"Make the runtime default to not allowing JDWP again.\""
    },
    {
      "commit": "56776014d181b7ee386a2ba5d85cf66d8bb4dd22",
      "tree": "21b9f0411f565d9e49bce916e720b70a79145750",
      "parents": [
        "47ec7ad0f819c171e41d323aff71f5ac425b1ccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 26 17:40:55 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 30 09:26:22 2018 -0800"
      },
      "message": "ART: Call ThreadGroup.add for attached threads\n\nWhen attaching threads to the runtime, call ThreadGroup.add to\nlet the thread\u0027s group know that the thread is now started. This\nfixes incorrect internal accounting.\n\nTest: art/test/testrunner/testrunner.py -b --host -t 169\nTest: m test-art-host\nChange-Id: I60362b6b53acf06b97779ea9b3b0bc6264f1dc2d\n"
    },
    {
      "commit": "b06bd683aab50a80ef98f0ffbec9880dad068d15",
      "tree": "d9787a74a4b57fcdffd74fe98cf0f6ae74e21f85",
      "parents": [
        "0406e1e59970399393f53923704e1b9a828b2173"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 29 13:26:45 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 30 09:11:16 2018 -0800"
      },
      "message": "Make the runtime default to not allowing JDWP again.\n\nThis was unintentionally changed a while ago and is causing a CTS test\nto fail. Changed to make the runtime default to disabling jdwp if a\nprovider isn\u0027t given. Note this does not stop one from starting a\ndebugger with -agentpath. If jdwp options are given with jdwp disabled\nthe runtime will print a warning.\n\nTest: atest CtsJdwpSecurityHostTestCases\nTest: ./test/run-test --host --debug 001-HelloWorld\nBug: 72400560\n\nChange-Id: I6561f269d9279eba0c1ac0b0f593ece867dab49e\n"
    },
    {
      "commit": "ee7d2fd16d47b54d7fb5b9d5ec772fbc315faf4b",
      "tree": "844ed2998f78723aa7909ce0a7b19995c34f0bd9",
      "parents": [
        "5a61bb7969347ffe8e0bf4f4dff841cc6c21ed85"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 20 17:25:23 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 25 10:40:56 2018 +0000"
      },
      "message": "Start warning on hidden API greylist\n\nInsert checks into reflection, JNI and the verifier to print\na warning when greylisted methods are invoked and fields accessed.\nWe do this on actual access, because reflection allows to list\nall methods/fields and simply listing a greylisted member would\nprint too many false positives.\n\nIssuing a warning also sets a boolean flag in Runtime. This will\nbe made accessible through VMRuntime to the framework which will\nissue a Toast on Activity start.\n\nThe change was tested with internal microbenchmarks of reflection\nand those flagged one issue. Microbenchmark invoking a field getter\nhas regressed by 35%. We will profile this benchmark in detail and\nconsider options for improvement. Bug b/72482474 was created to track\nprogress.\n\nTest: art/test.py -b -r -t 674-hiddenapi\nBug: 64382372\nBug: 72482474\nChange-Id: I323244935e9091a2f8d012385cefaac6b1fe3777\n"
    },
    {
      "commit": "3e0fa0aa5d929737f1d1c4bac07e2695ac438324",
      "tree": "5f2285b5a897f1978486dfba4cba3bd0e059c4be",
      "parents": [
        "b98747c267b9c7abee60dd95e1341d9138b4e5c6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 15 18:41:44 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 20 20:07:01 2018 +0000"
      },
      "message": "Add runtime option for no hidden API access checks\n\nAdd a new Runtime option -Xno-hidden-api-checks to disable\nenforcing hidden API access restrictions.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: I8bd5b7ef307f21ba71d05a066a9d5dd2d7614543\n"
    },
    {
      "commit": "a7db026ff647eefb589043dbb55bbf28637755e8",
      "tree": "7e8c2ac3b279483405191b417bdcf03e892e6b27",
      "parents": [
        "2b9c35be35a759ba2032692648f5bbcb1e7e78c8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 17:13:35 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 17:17:09 2018 +0000"
      },
      "message": "Add a new runtime option for target SDK version\n\nSDK version can be set through VMRuntime, but we also need a way\nof setting it in dex2oat.\n\nBug: 64382372\nTest: make test-art-host\nChange-Id: I82b9360be59a8bc1984006379d8011d50a0199c3\n"
    },
    {
      "commit": "017adc29ab0384fa042fdea21cdbf6cfaf4019f2",
      "tree": "81ec402eb034df9b6a72f7a6a7946e635322c948",
      "parents": [
        "5a2492b8c0b8903ac4fe5bbb518824a91de4da47",
        "94730ef9ca432b5ede81e928cffc4006911aa650"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 12 22:28:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 12 22:28:24 2018 +0000"
      },
      "message": "Merge changes from topic \"userdebug-jdwp\"\n\n* changes:\n  Ensure that methods requiring interpreter entrypoint always have it.\n  Support using adbconnection and openjdkjvmti without JAVA_DEBUGGABLE\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "2ce6fc80711af9afa3ecda8fdff6f4ed80aa3022",
      "tree": "9fa6be931e7bc8d0f47b0eb2d91a683ffcf1c3f1",
      "parents": [
        "1530591dbd05238236dc6dfe4bdb9118ce7ca3f7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 18 16:42:36 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 11 09:52:00 2018 -0800"
      },
      "message": "Support using adbconnection and openjdkjvmti without JAVA_DEBUGGABLE\n\nWe need to support using a best-effort JDWP when we have the\nENABLE_JDWP attribute without the JAVA_DEBUGGABLE attribute. This is\nused on eng and userdebug builds. We do this by making the plugin try\nto change the runtime to debuggable if possible and to allow getting\nan ArtTiEnv which is a best-effort version of JVMTI by calling GetEnv\nwith (JVMTI_VERSION_1_2 | 0x4000000). This is needed since if the\nruntime isn\u0027t debuggable we cannot guarantee compatibility with the\nJVMTI specification in all cases due to compiler optimizations such as\ninlining. By creating this special version agents are able to\npositively signal that they are able to deal with this uncertainty.\n\nWe also support using openjdkjvmti without being JAVA_DEBUGGABLE. This\nis done by either only allowing the best effort ArtTiEnvs or by\nchanging the environment to be debuggable if we are loaded early\nenough.\n\nMoving the runtime to debuggable state involves deoptimizing the boot\nimage and throwing out any image files associated with non-debuggable\noat-files.\n\nBug: 62821960\nTest: ./test.py --host -j50\nTest: Manual\nTest: Build, Test debugging system_server and other processes.\nChange-Id: I2233299fceb83c76785e5de09e51eaf18b7922e8\n"
    },
    {
      "commit": "e44ee0c3d073e00e88f3a29f2a42129c3eba84e7",
      "tree": "65180639908c568845a2dd7402fa9c935df2cbeb",
      "parents": [
        "812d4d4091b07c83a340e775325b7f42c8521574"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 10:26:17 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 21:59:52 2018 +0000"
      },
      "message": "Do not abort if we fail to allocate a thread-peer on shutdown\n\nWe were aborting if we failed to allocate the \"Shutdown thread\" a\njava-peer. This can sometimes happen if there is very constrained\nmemory during shutdown for some reason. Since the thread-peer is only\nobservable in very rare situations (and the runtime is shutting down\nanyway) we will instead simply continue without it.\n\nWe also change a test that was hitting this situation to handle not\nhaving a thread peer.\n\nBug: 71623806\n\nTest: while ./test/run-test --host \\\n                            --prebuild \\\n                            --compact-dex-level none \\\n                            --optimizing \\\n                            --no-relocate \\\n                            --runtime-option -Xcheck:jni \\\n                            --pic-test \\\n                            --64 \\\n                            --build-with-javac-dx \\\n                            004-ThreadStress;\n      do; done\nTest: ./test.py --host -j50\nChange-Id: Ib159d03e9f4b0e4d5b1b071d4b85e94620679bb0\n"
    },
    {
      "commit": "4cb6347613e37c98bf40d8bb5e6583ac81f4d856",
      "tree": "065ca3d73f5f8b0a86dab92b5b4784a7e4486707",
      "parents": [
        "118c59cf6af50e128d29609c9046a4af15826976",
        "7b38e692caa474bf0470349d016ef8f4502d50b9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 08 09:40:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 09:40:50 2018 +0000"
      },
      "message": "Merge \"ART: Take classloader into account for AttachAgent\""
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "7b38e692caa474bf0470349d016ef8f4502d50b9",
      "tree": "df3dbcdce59af2ecaddb124bf315132593b3eedb",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 19:18:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 05 10:16:18 2018 -0800"
      },
      "message": "ART: Take classloader into account for AttachAgent\n\nTake a classloader into account for attaching an agent, if given.\nThis will use the library path from the classloader to find the\nagent library.\n\nSwitch to libnativeloader to do the actual loading.\n\nBug: 70901841\nTest: m test-art-host\nChange-Id: I59ec55178792bc738fb06e0299522e207dd4a784\n"
    },
    {
      "commit": "b496af808eaf3af5ebac50aef4fbec33323b5016",
      "tree": "9a2a93352c34113b936335f0561ffc69c4c0a046",
      "parents": [
        "daa27bcedade7ff2ee50fbdcbec11a4291b447ee",
        "473191c4093aac1ec50bc275c588287fa37a981e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 17:50:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:50:44 2018 +0000"
      },
      "message": "Merge \"ART: Clean up library loading\""
    },
    {
      "commit": "b6f3464a934910e84e9a76e9f453bec71bffed5c",
      "tree": "5b43e419a96763d272e8c034ea1489e1db99d64f",
      "parents": [
        "2f1ca4c99fe779a52bea32fab78fd6da59971eeb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 04 11:01:48 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 04 18:19:36 2018 -0800"
      },
      "message": "Ensure shutdown thread has a java peer.\n\nUsing JVMTI it is possible to be running user-supplied code both on\nthe shutdown thread and on other threads while the shutdown thread is\nrunning. Specifically some real-world JVMTI agents rely on being able\nto suspend the shutdown thread while they do cleanup work. In order to\nsupport this we will make sure that the shutdown thread is given its\nown java peer so it can be suspended by other threads.\n\nBug: 66904725\nBug: 62821960\n\nTest: ./test.py --host -j50\n\nChange-Id: I1c89537c47fd3dd41aa4c0e7f7a6940d1c5ba913\n"
    },
    {
      "commit": "473191c4093aac1ec50bc275c588287fa37a981e",
      "tree": "df5b6493b21498097c29b5c9772cd1606f1bd29c",
      "parents": [
        "a3e50959997f5c3e3b2d7e200b3b022757845f20"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 16:55:31 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 03 23:27:37 2018 -0800"
      },
      "message": "ART: Clean up library loading\n\nRetrieve the library path from the classloader before attempting to\nload, instead of getting it passed down. This allows unifying said\nloading behavior for follow-up changes.\n\nFix up test code to support the new required data in classloader\nobjects.\n\nBug: 70901841\nTest: m test-art-host\nTest: device boots\nChange-Id: Iaccaeb56422877abac9f7fe6f5a17364c8adf4ca\n"
    },
    {
      "commit": "aadcbc64c674995ccdaf686789c8d39ada9913ad",
      "tree": "2b0c9c473437e49ac3c85f8a04ce979ffced880b",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 14:05:42 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 02 09:08:00 2018 -0800"
      },
      "message": "ART: Refactor Agent into Agent and AgentSpec\n\nSeparate configuration/loading and runtime state.\n\nTest: m test-art-host\nChange-Id: I69bb91e13ef10b9e1ce313f45b0b809b913d8e10\n"
    },
    {
      "commit": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "fbf9670f31d09c47078d43fd85ee2bda23273d26",
      "tree": "c2ee763c73f3cf89cfe3aed6230c1830b27583b3",
      "parents": [
        "3979571aa1dfc907569fb7e27ab225ca89f6f86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 13:27:13 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 14:52:08 2017 -0800"
      },
      "message": "Add adbconnection plugin\n\nThis plugin will take care of creating and managing a debugger connection\nthrough the adb daemon. This involves sending DDMS messages from the\nruntime, loading the JDWP agent when required, and setting up the\nconnection. We need this since DDMS packets can be sent even if there has\nnot been a full handshake done with the JDWP agent.\n\nAdd an \u0027adbconnection\u0027 value to \u0027-XjdwpProvider:...\u0027 to allow one to\nrequest that the adbconnection plugin be used to provide JDWP\nfunctionality.\n\nBug: 62821960\nTest: Manual, Flash walleye, debug apps\n\nChange-Id: Id9bed589b7c5e3830e6cdfbfee460b091459a27b\n"
    },
    {
      "commit": "403207107da7f11525c4d305184c56b35ec1c17a",
      "tree": "f97f080fcfa8051df18536e97a33582ee4bbbc6a",
      "parents": [
        "ba3a790338725a37ecd4cb314c4a6147e29aef38"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 11:52:04 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 09:26:11 2017 -0800"
      },
      "message": "Add support for selecting alternate JDWP implementations\n\nChange JDWP options parsing to take place later and add a\n-XjdwpProvider:_ option that can be used by the runtime to select an\nappropriate JDWP provider. The argument is a string.\n\nIf \u0027none\u0027 is given JDWP will be totally disabled.\n\nIf \u0027internal\u0027 is given the current internal JDWP implementation is\nused.\n\nIf \u0027default\u0027 is given the \u0027internal\u0027 JDWP implementation will\ncurrently be used.\n\nOther values will be added in the future.\n\nAlso adds a runtime callback that will be invoked when the runtime\nwants to start or stop the debugger (namely at the post-zygote fork\nand just before exit) and check if a debugger is availible.\n\nAlso add \u0027-XjdwpOptions:_\u0027 in preparation for the eventual removal of\nthe existing -Xrunjdwp\u003d_ and -Xagentlib:jdwp\u003d_ as top-level options.\nAll of these options now store their arguments as a std::string to be\ninterpreted by the JDWP implementation as it sees fit. Also change the\njdwpOptions to default to transport\u003ddt_android_adb if there is not one\nspecified and it is available. This will make changing the default\ntransport based on the JDWP provider easier.\n\nThese new options are needed to allow us to support both the old,\ninternal, JDWP implementation as its replacement is tested and\nverified. This lets us switch between them with little difficulty.\n\nWe will probably remove one or both of these options once we have\nconfidence that the new jdwp implementation has stuck.\n\nTest: ./test.py --host -j50\nTest: ./test/run-test --host --debug 001-HelloWorld\nTest: Manual, flash walleye, debug app\n\nBug: 62821960\n\nChange-Id: Ie31db6b6f7d76a03d4ab8e178fcf298ed0eec203\n"
    },
    {
      "commit": "b0042b83f9695bb7e2f07c451166a97a6c14383f",
      "tree": "8509e71a666a3c67b0a3459165b4c5282eedb41d",
      "parents": [
        "3f74ea478d755453a2fe5789ce155e80be3e7c7f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 13 13:50:36 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 13 13:52:06 2017 -0800"
      },
      "message": "Specify INFO log severity for -XX:DumpGCPerformanceOnShutdown\n\nThe art script only has severity set to warning, this was causing\nthe GC timings to not get output.\n\nBug: 70630582\nTest: art -Xmx512m -XX:DumpGCPerformanceOnShutdown .. some benchmark\n\nChange-Id: I03e4e09836f0bd73fbbff3640b4db8617cc63c95\n"
    },
    {
      "commit": "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8",
      "tree": "1da7bdc834fbc2f11243fa2b936f0d7a67d982c1",
      "parents": [
        "dcc528d2c7d5ac2cc075d4c965fdf702421d0f43"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 15:44:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Factor out gAborting\n\nCut dependencies on base/logging.h by moving gAborting to its\nown header. Leave the static storage in logging.cc.\n\nTest: m\nChange-Id: Ib2ca880e15f9cb50cb9aab803784826bb46efb5e\n"
    },
    {
      "commit": "7919db947bc41f6f5d194c50b88d0cba47319a1c",
      "tree": "ae1aa7fed4e9a6c6bbec3fc1c2b85cef173e737c",
      "parents": [
        "50f90a44f8cd1928054245cab4cd3bd47a1a6347"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 29 09:00:55 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 01 08:55:08 2017 -0800"
      },
      "message": "Speed up MterpShouldSwitchInterpreters check\n\nWe were often performing a pair of TLS reads in order to determine in\nthe current thread has any pending asynchronous exceptions (exceptions\nthrown by the JVMTI StopThread function). This is quite slow and was\nimpacting some benchmarks. Since it is expected that asynchronous\nexceptions are extremely rare we will first check to see if any\nasynchronous exceptions have been sent on the current process. Only if\nat least one asynchronous exception has been thrown will we do the\nexpensive TLS lookups to determine if one has been thrown on the\ncurrent thread.\n\nUsing a global instance value without synchronization or atomics is ok\nhere since the checkpoint that actually sets the async_exception_thrown\nflag provides synchronization by either occurring on the target thread\nor passing the checkpoint.\n\nAccording to go/lem this gives us a 7% increase on the caffeine\nstring benchmark.\n\nTest: go/lem runs\nTest: ./test.py --host -j50\nBug: 68010816\nChange-Id: I62684a5b3a7fc7cc600f5efd2a2393d9c4025917\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "26ef34c01ae5db2d3c964844b3717b8974a612c9",
      "tree": "8470588d8d0601626b3524abb5fbe19386ba7fe4",
      "parents": [
        "62540e3cc58abde95e147210d584614651d858b5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 13:32:41 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 16:21:52 2017 +0000"
      },
      "message": "ART: Move intrinsics definitions to runtime\n\nBug: 37538194\nTest: art/test.py --host\nChange-Id: Ic7adf5f8b14be0e1880ae898a4e199b4416a4d24\n"
    },
    {
      "commit": "5751dc831ffd8acb089c2aff2e2ddf18f89da975",
      "tree": "bdbf90587d3c0aaa42a2276db06bd1ddeb3cb2c0",
      "parents": [
        "dc02d53eeea1c80d4f77cc66a00c42d398a04c18",
        "e875f4c210ce0598e47b6d66ec12cd7c60208844"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 27 10:08:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 27 10:08:58 2017 +0000"
      },
      "message": "Merge \"Don\u0027t verify dex file when the runtime is in NoVerify mode.\""
    },
    {
      "commit": "e875f4c210ce0598e47b6d66ec12cd7c60208844",
      "tree": "c3836836ceafec0d881fd7c27a1438ab860cac0a",
      "parents": [
        "88a6296e13cae96157a451efa5776d1fecb05912"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 26 12:26:43 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 26 12:26:43 2017 +0100"
      },
      "message": "Don\u0027t verify dex file when the runtime is in NoVerify mode.\n\nbug: 30972906\nbug: 63920015\n\nTest: systrace of priv-app with OOB, no verification at startup\nChange-Id: I479a7ddcfa495228a379744b23c26fa8c91c3dde\n"
    },
    {
      "commit": "d863be7a36bf2017958051fe1191ed47192085e8",
      "tree": "528db45904a0bfac04bb96e38f9de63701fb8169",
      "parents": [
        "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 12 12:02:28 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 26 02:13:09 2017 +0000"
      },
      "message": "ART: Move JniConstants::init from ART to libcore\n\nThis should live with libcore. There\u0027s no deep magic in the runtime\nstartup.\n\nAlso remove dependency on libnativehelper shared library.\n\nBug: 65522645\nTest: m\nTest: m test-art-host\nTest: Device boots (bullhead)\nChange-Id: I6d03144fa02461d31e9e26c27cdb3a9a9510122d\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "cad70a281cc7c97a6c2eeb2675952f2d3b12f4ee",
      "tree": "1c0c51b34dc92ce87d7fd579ac46b495aebd615c",
      "parents": [
        "2a79e48b43e1a2c0ece941db8d141a0c02542deb",
        "dfeec3a983c81e62fbfeb4eb81d4f58b65effd80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 23 08:33:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 23 08:33:43 2017 +0000"
      },
      "message": "Merge \"Pass the verify flag to DexFileLoader utilities.\"\nam: dfeec3a983\n\nChange-Id: I0af6e8ebd41e9feb187ea640ac4e043cb7a9a80d\n"
    },
    {
      "commit": "095c6c96236476b605b3ac672f6d2b8c151e9479",
      "tree": "fe04b7fe93e65efadd3f019dd1ecba4c2c40df18",
      "parents": [
        "b277aa1385f7f4593c9978d8106669142d158f4f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 19 13:59:55 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 14:22:52 2017 +0100"
      },
      "message": "Pass the verify flag to DexFileLoader utilities.\n\nRefactoring-only change.\n\nAlso remove unused DexFilerLoader::OpenMemory.\n\nbug: 30972906\nbug: 63920015\n\nTest: build.\n\nChange-Id: I7cd4b5787565ab1a3457ce2be6bb14657229c550\n"
    },
    {
      "commit": "ebd60e1331d8330f01d792be61a14cf425240f6b",
      "tree": "156cd2bdba366e5591c889b5f38daae5bed752e0",
      "parents": [
        "8fb092125112ec4a6bf38a91e417c53bbb7f7a8e",
        "26d46e51a8c387d26e7971857e26f4582b936204"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 23:20:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 16 23:20:53 2017 +0000"
      },
      "message": "Merge \"Remove low RAM special casing for heap growth multiplier\"\nam: 26d46e51a8\n\nChange-Id: Ief4f2993762c0fce548fc8c5efc62c33b8e89a7a\n"
    }
  ],
  "next": "11c273ddfda3e30d14af32e385570955b61bc39b"
}
