)]}'
{
  "log": [
    {
      "commit": "a1e5b97b4bb4c47c2ab51d8a7d5dd1500d496c4d",
      "tree": "b967f1a2f8768f9bf70dfd238e895b28a1bc4aad",
      "parents": [
        "6e7a72c5baa322f57fe6a52303dac45fba8edd25"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 18 16:54:25 2019 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 18 16:54:25 2019 -0700"
      },
      "message": "ART: Use kNormThreadPriority for UnstartedRuntime\n\nNormalize the compiler thread\u0027s perceived priority to make the\nresult independent of the compilation environment.\n\nBug: 128865240\nTest: m\nChange-Id: I5f8bc144d05453c5df603fef221ce22d66eff546\n"
    },
    {
      "commit": "3dacdd6343ea9a6471692914c7a9dff66d6453c7",
      "tree": "5e0a3b8f99e914a7fbd49822e5c8fb1bd4709f5c",
      "parents": [
        "939798e6a565a92e597136c589428e89c28bffd5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 15:45:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 09:52:59 2019 -0700"
      },
      "message": "Revert^4 \"Remove Global deopt requirement for several jvmti events\"\n\nIt was possible for the top frame of a thread to enter the\nartQuickToInterpreterBridge during runtime shutdown. This could be\ncaused by the libjdwp agent. If this happens the caller of the frame\nwill be \u0027null\u0027, which could cause a segv if not detected correctly.\n\nThis reverts commit 939798e6a565a92e597136c589428e89c28bffd5.\n\nReason for revert: Fixed issue that could cause crash during process\n                   shutdown.\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test.py --host\n\nChange-Id: I2aad1705c761edb4ed788cec4fc8a3068d67aee5\n"
    },
    {
      "commit": "939798e6a565a92e597136c589428e89c28bffd5",
      "tree": "3274ff355163df18cd2d7343ce0d34214f9d09c9",
      "parents": [
        "a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:42 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Remove Global deopt requirement for several jvmti events\"\"\n\nThis reverts commit a75e5892fba6d0208f33e9ab8e19e732daf94996.\n\nReason for revert: Fails jdwp tests.\n\nChange-Id: Ic883f4f0108b07f1609c6c6a9565eae5903bfd2c\n"
    },
    {
      "commit": "a75e5892fba6d0208f33e9ab8e19e732daf94996",
      "tree": "3daff8c3ce1608bacba7358711ccf9bd61c0bb05",
      "parents": [
        "dd83a40a3c4fea0d917577de96742900a61ab548"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 11 15:49:40 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 11 21:59:44 2019 +0000"
      },
      "message": "Revert^2 \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit ad344b6a14feba90a06a205760e9bc766c56cab0.\n\nJit-on-first-use would cause the runtime to skip sending FramePop\nevents for exceptions in some circumstances due to longjmp-ing over\nthe frames. This requires forcing jit off from the first instant a\nthread can get frame popped events, which is unfortunate.\n\nReason for revert: Fixed issue causing 1925 to fail on\n                   jit-on-first-use and redefine-stress\nTest: ./test.py --host\nTest: ./art/test/testrunner/run_build_test_target.py -j50 art-jit-on-first-use\n\nChange-Id: I6ec2a799db1041262a055be10e1af1faece6f2fc\n"
    },
    {
      "commit": "ad344b6a14feba90a06a205760e9bc766c56cab0",
      "tree": "47801fc5b432b0baf544bb8fd522a9fd3b567a7e",
      "parents": [
        "739383c80684eeb41d380ca5d18e1e9a1fe9fd7f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 17:49:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 21:13:15 2019 +0000"
      },
      "message": "Revert \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit 334630ee9dffdd1932c1ee641d938f25362a4c1a.\n\nReason for revert: 1924-frame-pop-toggle fails on some configs.\n\nChange-Id: I5ed3846e0dfff09c67a468f319ff516e14c44e61\n"
    },
    {
      "commit": "334630ee9dffdd1932c1ee641d938f25362a4c1a",
      "tree": "81957d634aa76967d97c89014eb69158682b0128",
      "parents": [
        "5b76c16cca1984209e838ada4d79e370d7fda431"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 04 15:08:04 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 04:07:45 2019 +0000"
      },
      "message": "Remove Global deopt requirement for several jvmti events\n\nThe JVMTI_EVENT_SINGLE_STEP, JVMTI_EVENT_FIELD_MODIFICATION,\nJVMTI_EVENT_METHOD_EXIT, JVMTI_EVENT_SINGLE_FIELD_ACCESS, and\nJVMTI_EVENT_FRAME_POP events would all deoptimize all threads in all\ncases when enabled. This changes the behavior to instead only\ndeoptimize individual threads when possible. This should make some\ndebugger interactions faster.\n\nTest: ./test.py --host -j72\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: I42513cb17fd1144aeb03ca11afd3e3b05e918ce2\n"
    },
    {
      "commit": "d388390c556181942b78a5384c3c66afd1d34222",
      "tree": "ca62bd886f00c53260abe3053dd8c058354984d6",
      "parents": [
        "817a47faba3b9150fd9345fbbda1320b02ebfa01"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "message": "\"Revert^3 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 817a47faba3b9150fd9345fbbda1320b02ebfa01.\n\nReason for revert: Breaks build.\n\nChange-Id: I51a38e47186f778b4c1c119e9f21a5d5a1b786a8\n"
    },
    {
      "commit": "817a47faba3b9150fd9345fbbda1320b02ebfa01",
      "tree": "51d0876c8cb667384a25ee6a2eede761a121d455",
      "parents": [
        "e173798b890e3fdd2bbd68cda997d7b3d1a5a902"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 08 14:05:37 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 11:08:41 2019 +0000"
      },
      "message": "Revert^2 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 9fd68f6795eab7085986f80b1c4d00dc45a68485.\n\nTest: art/test.py -b --host --64\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nTest: art/tools/run-libjdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I9d2faeb8b88ce7cf42915890c6089c725907e6dd\n"
    },
    {
      "commit": "c816d24f1e35ff8e10d5eadc77d5a75d6be5e776",
      "tree": "7be1f416621883f2b4b3bc646dc4c1dabb7def8b",
      "parents": [
        "bc0c48496cb9d22a9e0ee7e1c3d3016289f8150a",
        "e0b2ce413367c9266e9b0657a0505c1ef776b7ae"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 22 20:49:03 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 22 20:49:03 2019 +0000"
      },
      "message": "Merge \"Revert^2 \"Prevent agents from delaying system daemon threads\"\""
    },
    {
      "commit": "e0b2ce413367c9266e9b0657a0505c1ef776b7ae",
      "tree": "ea17b0478011d74009177bf9cf568718b3482777",
      "parents": [
        "77182cd0f4527538df832eddbc775391c283cffb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Feb 21 19:23:42 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 22 08:56:22 2019 -0800"
      },
      "message": "Revert^2 \"Prevent agents from delaying system daemon threads\"\n\nIt looks like there might be a race between DetachCurrentThread and\nruntime shutdown that the original CL exposed with test 1919. I\u0027m not\nsure why this test exposed this issue, possibly it\u0027s due to the\nremoval of the Daemon events making the test faster, thus more likely\nto get to runtime-shutdown without the testing thread having fully\ndetached.\n\nThis reverts commit c08c10713e8884e8adfbf6a8e370a9ec96c1883f.\n\nReason for revert: (Hopefully) made test 1919 resistant to the flake\n                   it was experiencing.\nTest: ./test.py --host --ndebug -j80\n\nBug: 123696564\nBug: 124284724\n\nChange-Id: I2e58a71aa174f6b89e57c31378b0fe5bb41a8844\n"
    },
    {
      "commit": "ed19c670d77bf52454c4be88e05f6f3d5b88454f",
      "tree": "24ebe39500709ff813c7fdf6570a5f2f3a6952a0",
      "parents": [
        "77182cd0f4527538df832eddbc775391c283cffb"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Feb 21 15:32:32 2019 -0800"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Feb 22 00:09:55 2019 +0000"
      },
      "message": "Fix errno handling to avoid being overwritten\n\nBug: 124468627\nTested: m build-art-host\n\nChange-Id: I4c9fba1ddd6374b8f4451b82ccfc7aed666c6ebc\n"
    },
    {
      "commit": "c08c10713e8884e8adfbf6a8e370a9ec96c1883f",
      "tree": "84dc682b40f38d0377639befe6f3d43e5655a43c",
      "parents": [
        "3611fdf703a6417c08a2e3d6e642d5936318de18"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 10:15:28 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 21 10:15:28 2019 +0000"
      },
      "message": "Revert \"Prevent agents from delaying system daemon threads\"\n\nThis reverts commit 3611fdf703a6417c08a2e3d6e642d5936318de18.\n\nBug: 123696564\nBug: 124284724\nReason for revert: b/124284724\n\nChange-Id: I546758b4cbb5e3f62f7b66a2faed544abce0d9c2\n"
    },
    {
      "commit": "3611fdf703a6417c08a2e3d6e642d5936318de18",
      "tree": "ef152ff80f42b6486e5a02eee3fb7a02fbef15e7",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 06 15:10:58 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Feb 11 11:03:22 2019 -0800"
      },
      "message": "Prevent agents from delaying system daemon threads\n\nThe runtime starts several important daemon threads that are\nresponsible for various GC related tasks (i.e. FinalizerDaemon, etc).\nThe runtime cannot be considered fully started until these threads\nhave been started or will be started soon.\n\nIt was possible for agents to delay the startup of these daemons\narbitrarily (while calling arbitrary java code) by never leaving the\nVMInit event or by never returning from the daemons ThreadStart\nevents. This could cause deadlocks or other errors when using some\nagents, such as libjdwp.\n\nIn order to prevent these issues and more closely match other java\nlanguage runtimes we launch these threads before sending the VMInit\nevent and suppress their ThreadStart events. The openjdkjvmti plugin\nthen waits for the Daemon threads to actually begin executing before\ncalling the VMInit event or any other agent code. This prevents the\nagents from seeing threads appear from nowhere.\n\nBug: 123696564\nTest: while atest CtsJdwpTestCases; do; done;\n\nChange-Id: I7e07187f3e8670f32df0490cb419585c13d81765\n"
    },
    {
      "commit": "119733d87242414100df7b9eedb6d1672a03ead6",
      "tree": "19ba75bd42d3c94a4de0684ae66f4078da1546a6",
      "parents": [
        "8a64e773d4d1221166c6a8206315b450e448705a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 15:14:41 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 31 15:39:55 2019 +0000"
      },
      "message": "Revert \"Revert \"ART: introduce PALette abstraction layer\"\"\n\nThis reverts commit e6e01a0a00de80704ccb21c48d5d8bdee4470b77.\n\nBug:  122824298\nTest: art/test/testrunner/run_build_test_target.py -j50 art-test-javac\nTest: m out/target/common/obj/PACKAGING/hiddenapi-stub-flags.txt\nTest: frameworks/rs/build_rs.py\nChange-Id: If7b9ddca3daa80b75b3541abd283bf47d5b81118\n"
    },
    {
      "commit": "e6e01a0a00de80704ccb21c48d5d8bdee4470b77",
      "tree": "8f9cc651764686140accaadcfb8f77bf7572c24b",
      "parents": [
        "4b9d00aca9b025b545c9633b4605334c22fc4d2d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 14:02:30 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 14:02:30 2019 +0000"
      },
      "message": "Revert \"ART: introduce PALette abstraction layer\"\n\nThis reverts commit 4b9d00aca9b025b545c9633b4605334c22fc4d2d.\n\nReason for revert: breaks renderscript mac and run_host_tests in master.\n\nChange-Id: I6024894a384c65f3e7d81b9c5bba8ebe8ce1b420\n"
    },
    {
      "commit": "4b9d00aca9b025b545c9633b4605334c22fc4d2d",
      "tree": "7984bf247f908d145b7c6b48df99f3f0a80ae148",
      "parents": [
        "4ee4561f2153f3b0bc3be2e781488a97c73ca58e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jan 03 17:04:02 2019 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 30 09:00:27 2019 +0000"
      },
      "message": "ART: introduce PALette abstraction layer\n\nThis change decouples direct dependencies on system libraries.\n\nBug: 122824298\nTest: art/test.py --host --64\nTest: art/test.py --target -j8\nTest: m -j100 \u0026 flashall -w \u0026 device boots\nTest: art/build/apex/runtests.sh\nChange-Id: Iae927ed9aaa228a941cd444cef04e6ec53955299\n"
    },
    {
      "commit": "e5d2398fa5be5effbc552b244387119dc53a9671",
      "tree": "f32b3f3d67c469d9bdc83961ef9c4d863c351f0a",
      "parents": [
        "639b2b1f3a675135d443fc380323fbc48639a7eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:34:26 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Forward-declare Context\n\nMove deletion to thread.cc, which allows to forward-declare\nContext.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Ifd9006cd3457d4ab708a289a7f6e1cdf2591c596\n"
    },
    {
      "commit": "d77abd9e128f60917f712b8da84bab46e3ed5870",
      "tree": "40d3108c1190860ef119e85f9c94688ca8036c39",
      "parents": [
        "bec232eb2f07d53c4dbf510b3fbb80f092d02681"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 16:10:20 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Forward-declare Instrumentation\n\nAvoid header include in a very common header.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I6a6f09ad62d61684969635f8cb98b072f3ea781c\n"
    },
    {
      "commit": "f05ad2a8d1e573c4d1aa0f3add9c721c0a8eb894",
      "tree": "8d26dcb9c406b9840586adfa62b4fdf0ec0a12b2",
      "parents": [
        "6c22540b2c21399285abd390fbef9f2ea1ea794f",
        "9fd68f6795eab7085986f80b1c4d00dc45a68485"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Suspend the runtime when switching interpreters.\"\""
    },
    {
      "commit": "9fd68f6795eab7085986f80b1c4d00dc45a68485",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "message": "Revert \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 01e1d3217c9b6ad5b3f118a539bea6778ad6096c.\n\nReason for revert: JDWP JIT and Interpreter tests on hosts failing.\n\nChange-Id: I95bbda936c573983ff0c6041267bffaa73315cb7\n"
    },
    {
      "commit": "b7e23dcd0c499bc00632666328810483f39aece6",
      "tree": "061b7987e0d01e9c5689c2f50d7898802d2d5c70",
      "parents": [
        "adf595900e6f6328c68a15b88f53529cb5e520f3",
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "message": "Merge \"Suspend the runtime when switching interpreters.\""
    },
    {
      "commit": "3a0cd34fccf6ea9ecf8c7d943e239eebe6ef83e8",
      "tree": "c4b4c15734d23522cb7c64c358bafa3645760f5f",
      "parents": [
        "9e72ebe9cbc262a452ee5ed4911558044e325d87"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 13 13:45:17 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 17 18:05:48 2018 -0800"
      },
      "message": "Add extra traces to Thread startup\n\nHelp diagnose what takes time during thread creation.\n\nBug: 116052292\nTest: test-art-host\nChange-Id: I738b0f987bdef077bca148c3cf06ef126f11022a\n"
    },
    {
      "commit": "01e1d3217c9b6ad5b3f118a539bea6778ad6096c",
      "tree": "7fc2ff1a143a66990485ed36afd24f98f50de646",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:48:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 17:02:46 2018 +0000"
      },
      "message": "Suspend the runtime when switching interpreters.\n\nMake the interpreter switch more deterministic by suspending.\n\nThis also allows to remove some of the checks - for example,\nif we are in mterp the conditions must be favourable already.\n\nTest: ./art/test.py -b --host --64\nChange-Id: Ic5fa70592393c7e17decfb84565f3138659340fe\n"
    },
    {
      "commit": "d57c51e9cffd3684401286a1c8797015ce52b77c",
      "tree": "51c3662e77caed93c16df30321723ee51e2a2d86",
      "parents": [
        "95c591573686f75e32e9edd01777b8a42b186208"
      ],
      "author": {
        "name": "Evan Cheng",
        "email": "evan.cheng@mediatek.com",
        "time": "Fri Jan 26 15:43:08 2018 +0800"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Dec 10 09:54:16 2018 +0000"
      },
      "message": "Fix scheduler_stats may resize to negative value\n\nscheduler_stats will be empty when thread had been exited.\n\nTest: This issue occurred on MTBF-Monkey test, however,\nthe root cause can be verified on the source code.\n\nChange-Id: Ie8e61683126432aa03edef9ebbbf4baaadbdeafd\n"
    },
    {
      "commit": "d5ae80c223a2aa51b6a54faa0f014acdd013103f",
      "tree": "25b44b63625d83f36dc405d9ef9ff00b8dfc8fe3",
      "parents": [
        "f355ec703f519c3091853d85f61904be6dfb68aa",
        "813a86307e1f3437ed9d17aeea2c5c6ffcda5c67"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 29 23:36:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 23:36:04 2018 +0000"
      },
      "message": "Merge \"Use ArtMethod::GetDex{File,Cache}() more.\""
    },
    {
      "commit": "813a86307e1f3437ed9d17aeea2c5c6ffcda5c67",
      "tree": "6ab0118464a3f721dc967d52a9607a96ce6e4188",
      "parents": [
        "7e09737125ddb8c6f243ac1882d2a23da3f109c4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 16:17:01 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 17:54:54 2018 +0000"
      },
      "message": "Use ArtMethod::GetDex{File,Cache}() more.\n\nDo not go through the declaring class when it can cause\na DexFile or DexCache mismatch for obsolete methods.\n\nAlso fix similar potential mismatch in hiddenapi.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/834082 ,\n    https://android-review.googlesource.com/836008 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 119830111\nChange-Id: I3fdf1aa1bc7bab816d5d8034b107506a32438b77\n"
    },
    {
      "commit": "c7d878d4be3f0971d4b86266308c7540a26c2856",
      "tree": "041a6d897df81ae64f25c211f16e8640959a35f5",
      "parents": [
        "d295a75d952742604eaae0530daea19dd6fd782c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 18:42:06 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 17:09:07 2018 -0800"
      },
      "message": "Revert^4 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit ec43a01e0ac948c59d5b1f9c3812f2901b48942a.\n\nReason for revert: Added missing code.\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: Id30ccdf9aa9a6e56a914254793e399f2712c882d\n"
    },
    {
      "commit": "ec43a01e0ac948c59d5b1f9c3812f2901b48942a",
      "tree": "57e1a23dcc0beba8e98841b8cf063f6153b08c9b",
      "parents": [
        "3d477f3a3eea757a49ca621cc579f711f22fccdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Nov 17 13:10:40 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"ART: Add StackVisitor accepting a lambda\"\"\n\nThis reverts commit 3d477f3a3eea757a49ca621cc579f711f22fccdd.\n\nBug: 115837065\n\nReason for revert: Breaks jdwp tests.\n\nChange-Id: I09249331798970751a20c6b41675c3efef72adfb\n"
    },
    {
      "commit": "3d477f3a3eea757a49ca621cc579f711f22fccdd",
      "tree": "b4b402d0181610c62062c8c597ef30ee2840b6b1",
      "parents": [
        "54c7da9c50ee85ade636605cd6ea18b4c2bc69fa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 16:40:45 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 10:13:38 2018 -0800"
      },
      "message": "Revert^2 \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 8248490f24e8582ce2ead8cd878d8a2c38310a48.\n\nReason for revert: Fixed instrumentation.cc\n\nBug: 115837065\nTest: m test-art-host\nChange-Id: I484833f4712c835fcaf3452dca4cae5b031d5a7d\n"
    },
    {
      "commit": "c980df6125e53bbf8e5e7e8eecb3f9b0125bae5e",
      "tree": "966f80eb3959b94a5508525b0726e05f53ac7286",
      "parents": [
        "3d719ed950772e1ec70fe082863e907d5acd3fcf",
        "8248490f24e8582ce2ead8cd878d8a2c38310a48"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 01:18:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 16 01:18:34 2018 +0000"
      },
      "message": "Merge \"Revert \"ART: Add StackVisitor accepting a lambda\"\""
    },
    {
      "commit": "8248490f24e8582ce2ead8cd878d8a2c38310a48",
      "tree": "f542af6560561526fc413e361e3323a615b5429c",
      "parents": [
        "36f8d22c672498753b9edc66ba11acc9816b2a17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 16 00:47:49 2018 +0000"
      },
      "message": "Revert \"ART: Add StackVisitor accepting a lambda\"\n\nThis reverts commit 36f8d22c672498753b9edc66ba11acc9816b2a17.\n\nReason for revert: Seems to be breaking test 687\n\nBug: 115837065\nChange-Id: I83bb1a9d76cc701c3d582778e5047ebd5dab5d29\nTest: TreeHugger\n"
    },
    {
      "commit": "e09485f761220ff16129d25b773ab968d3c2d76b",
      "tree": "87f93a1c3e2d2c7805859231c9cb7dd92a778bba",
      "parents": [
        "9e70fafa9ca3bf055fe1e9d8cba4ddb4ee090776",
        "36f8d22c672498753b9edc66ba11acc9816b2a17"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 15 21:44:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 15 21:44:18 2018 +0000"
      },
      "message": "Merge \"ART: Add StackVisitor accepting a lambda\""
    },
    {
      "commit": "5cc0e75552b379e051168d832474f4d3989e9f74",
      "tree": "c06f4bdb02252442fe68c2e978106862a0f93a1c",
      "parents": [
        "a344b8c25a98471d99632a28530b03ed770f8e2e"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Nov 09 12:30:46 2018 -0800"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Nov 12 17:32:59 2018 +0000"
      },
      "message": "Emit JVMTI events for LockSupport.park\n\nThis restores the behavior from when park was implemented with\nwait/notify, except that the blocker object is used as the monitor\nrather than the Thread that is parking.\n\nBug: 28845097\nTested: ./test/run-test --jvm 1931\n\nChange-Id: I523d719ca3e49a538c06f48f032b322fb91e147e\n"
    },
    {
      "commit": "c665d6368e85a5eb8055a58c535b41777c97d7c7",
      "tree": "712cc488031bbf89767676d3a651df1a94ada611",
      "parents": [
        "4fc843c4fc9f33c4ba49c1303d526d0e0e6a3788"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Tue Nov 06 16:20:13 2018 +0000"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Nov 09 07:52:11 2018 -0800"
      },
      "message": "Revert^2 \"Notify waiters when releasing the monitor\"\n\nThis reverts commit 9cec9658ec0b7a6c715a154ec834faba853188e3.\n\nReason for revert: Changed lock ordering to not require reacquiring the\nmonitor lock while holding the wait lock.\n\nTested: 1000 iterations of ThreadStress\nBug: 117842465\nChange-Id: I7b54943052c5eba367eac86da9646bfc81bc1163\n"
    },
    {
      "commit": "4fc843c4fc9f33c4ba49c1303d526d0e0e6a3788",
      "tree": "96f5a6db67ca9b4362b014e427523019b9f5e69f",
      "parents": [
        "6b2b372eae74cc79e8aa6f37c562dcdfc4a92a6e",
        "9cec9658ec0b7a6c715a154ec834faba853188e3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 06 12:59:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 06 12:59:06 2018 +0000"
      },
      "message": "Merge \"Revert \"Notify waiters when releasing the monitor\"\""
    },
    {
      "commit": "9cec9658ec0b7a6c715a154ec834faba853188e3",
      "tree": "84d926444e66b5c5f91a7ee68fa65d5efe3ba8c0",
      "parents": [
        "1ebb52ca700b6d9f9c27c3ee3e688ed17a43d358"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 06 10:50:20 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 06 10:50:20 2018 +0000"
      },
      "message": "Revert \"Notify waiters when releasing the monitor\"\n\nThis reverts commit 1ebb52ca700b6d9f9c27c3ee3e688ed17a43d358.\n\nReason for revert: Break ART run-test ThreadStress by failing this\nassertion:\n\n  dalvikvm32 E 11-06 09:43:27 27100 27851 mutex-inl.h:134] Lock level violation: holding \"a thread wait mutex\" (level ThreadWaitLock - 9) while locking \"a monitor lock\" (level MonitorLock - 54)\n  dalvikvm32 F 11-06 09:43:27 27100 27851 mutex-inl.h:145] Check failed: !bad_mutexes_held\n\nBug: 117842465\nChange-Id: I888201bf5c252c8366618d9169a37e4a4cc29734\n"
    },
    {
      "commit": "0d95e6a1047e99050d3da740202add5e7bb30543",
      "tree": "8f7f99fb524ed78b8827cd5a278bcda028e17f33",
      "parents": [
        "d37979d919032f38a45ce19892c3b77d7eca3b25",
        "1ebb52ca700b6d9f9c27c3ee3e688ed17a43d358"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 06 06:04:41 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 06 06:04:41 2018 +0000"
      },
      "message": "Merge \"Notify waiters when releasing the monitor\""
    },
    {
      "commit": "aa31f4944936cabb8cc307890de9fa54ceda6de8",
      "tree": "7485bb1d985244ca54cba25f56585f0ac4e30039",
      "parents": [
        "ae5d77d323c8456343e30571c0f67e40b15c7af1"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Nov 01 18:57:38 2018 +0000"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Nov 05 11:01:51 2018 -0800"
      },
      "message": "Revert^4 \"Implement LockSupport.park with a futex\"\n\nThis reverts commit 13f4d9631db981ae5008073db4df9c6a934fc9f3.\n\nReason for revert: Fixing ThreadStress timeouts.\n\nChange-Id: I9f8c3f56eccfadc3751049731e8d427873cc7841\n"
    },
    {
      "commit": "1ebb52ca700b6d9f9c27c3ee3e688ed17a43d358",
      "tree": "dbc70ca80226ea0abb7a404a122b81400b90f52d",
      "parents": [
        "23d3ed8c124f239d26a583f9d096b22f7f6677d1"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 25 15:37:14 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Nov 02 18:06:46 2018 -0700"
      },
      "message": "Notify waiters when releasing the monitor\n\nThis avoids a ping-pong thread scheduling issue, where a waiter\nimmediately tries to acquire the monitor held by the notifier.\n\nBug: 117842465\n\nChange-Id: I33b91b066c9412b031fd6432bcb61273fb8d8fea\n"
    },
    {
      "commit": "36f8d22c672498753b9edc66ba11acc9816b2a17",
      "tree": "7a7195bf16db14d7f56f94a4d6421f6837b2f686",
      "parents": [
        "a53da8f8170ddaff3e4160641938ba1b7806202c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 08 08:13:42 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 02 16:01:30 2018 -0700"
      },
      "message": "ART: Add StackVisitor accepting a lambda\n\nTo simplify implementation of visitors. Rewrite some\nvisitors.\n\nBug: 115837065\nTest: mmma art\nTest: m test-art-host\nChange-Id: I04172d7626b702c1d69c63eba65526378935a25d\n"
    },
    {
      "commit": "1e152a6090c546f4a6184a5610c85cae7ac77068",
      "tree": "04fef9b17fe4b958c5c9747aabeee20bb4e569ec",
      "parents": [
        "d69c49a79d7e4d2973f1071c01c00e51abb0452a",
        "13f4d9631db981ae5008073db4df9c6a934fc9f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 15:03:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 01 15:03:35 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert^2 \"Implement LockSupport.park with a futex\"\"\""
    },
    {
      "commit": "13f4d9631db981ae5008073db4df9c6a934fc9f3",
      "tree": "928c363c96854ac8db404a0ddd11adf8c66ea1c0",
      "parents": [
        "4e7077d795ab94d40c76ae7b9245fd5dcbb7716c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 11:34:29 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 11:34:29 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"Implement LockSupport.park with a futex\"\"\n\nThis reverts commit 4e7077d795ab94d40c76ae7b9245fd5dcbb7716c.\n\nBug: 28845097\n\nReason for revert: ThreadStress flakes.\n\nChange-Id: Ibe29c2f679a642ccffea51c2fcf7dfaaed2dc305\n"
    },
    {
      "commit": "0b59b54687965f74212198a0de6f0cf41753d0e0",
      "tree": "e51885686656be9795869ccae36f2fa6a02dc7cc",
      "parents": [
        "61afd95d12ed53e776b8ea847d94dedf98c78146",
        "7530bae4f286d828d6394303ee2622c1b01b7e43"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 01 01:54:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 01 01:54:48 2018 +0000"
      },
      "message": "Merge \"Use _PRIVATE versions of futex ops.\""
    },
    {
      "commit": "7530bae4f286d828d6394303ee2622c1b01b7e43",
      "tree": "6232fa29b6ce0dd2d4ac4cc47615ee08d9da59a9",
      "parents": [
        "97d40f9c7b1157783d09861ce76d3a0b3da73cbe"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Oct 29 20:03:51 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Wed Oct 31 18:40:21 2018 +0000"
      },
      "message": "Use _PRIVATE versions of futex ops.\n\nThis flag allows some performance optimizations in the kernel for futex\nwords that are only used in one process.\n\nTested: art$ grep FUTEX_  **/*.cc **/*.h\n\nChange-Id: I490b9592ca0f0ab5ab5431682e8b2104f5c917ca\n"
    },
    {
      "commit": "4e7077d795ab94d40c76ae7b9245fd5dcbb7716c",
      "tree": "df6ab853427ab64353933b50637bffb584938274",
      "parents": [
        "97d40f9c7b1157783d09861ce76d3a0b3da73cbe"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 18 13:34:39 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Wed Oct 31 17:19:19 2018 +0000"
      },
      "message": "Revert^2 \"Implement LockSupport.park with a futex\"\n\nReason for revert: Fixed unused-argument compile error on mac\n\nThis resolves a contention issue where a thread unparking a higher\npriority thread would see a bunch of repeated wakeups. It also resolves\nan issue where LockSupport.parkUntil would not return on time if the\nsystem clock changed while the thread was parked.\n\nBug: 28845097\nTested: ./test.py -b --host --verbose -j20\nChange-Id: Iff71a0e23d0a9fbe072a092bec40a39192c195eb\n"
    },
    {
      "commit": "97d40f9c7b1157783d09861ce76d3a0b3da73cbe",
      "tree": "928c363c96854ac8db404a0ddd11adf8c66ea1c0",
      "parents": [
        "41271dd3dfc2ff75702ae3b709eb8afa9464a49f",
        "5485371cf3894d71e0d0fe2bdf639fde478012ca"
      ],
      "author": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 16:16:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 31 16:16:08 2018 +0000"
      },
      "message": "Merge \"Revert \"Implement LockSupport.park with a futex\"\""
    },
    {
      "commit": "5485371cf3894d71e0d0fe2bdf639fde478012ca",
      "tree": "3b8f742544db21dbd4994ec204c19eaf613a9b10",
      "parents": [
        "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4"
      ],
      "author": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 12:43:13 2018 +0000"
      },
      "committer": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 12:43:13 2018 +0000"
      },
      "message": "Revert \"Implement LockSupport.park with a futex\"\n\nThis reverts commit 5e1a75c1d12ea47bdc0f73d378b5fa25326829f4.\n\nReason for revert: This CL unfortunately breaks:\nsdk_gphone_x86-sdk_addon_mac\nsdk_mac\n\nFollowing error:\nart/runtime/thread.cc:370:4: warning: \"LockSupport.park/unpark implemented as noops without FUTEX support.\" [-W#warnings]\n#warning \"LockSupport.park/unpark implemented as noops without FUTEX support.\"\n^\nart/runtime/thread.cc:295:24: error: unused parameter \u0027is_absolute\u0027 [-Werror,-Wunused-parameter]\nvoid Thread::Park(bool is_absolute, int64_t time) {\n^\nart/runtime/thread.cc:295:45: error: unused parameter \u0027time\u0027 [-Werror,-Wunused-parameter]\nvoid Thread::Park(bool is_absolute, int64_t time) {\n^\n1 warning and 2 errors generated.\n\nChange-Id: Iae41cce7cd5fc38f605173519931491a019f7c80\n"
    },
    {
      "commit": "fe79b5939696c87f66d9d39540fe0f38369c5158",
      "tree": "7b44d07b2fceec22534c7441ba04133f26b7363f",
      "parents": [
        "ed0d82201a3853b31588fa1f9e0c902e3f09902e",
        "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 31 02:54:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 31 02:54:08 2018 +0000"
      },
      "message": "Merge \"Implement LockSupport.park with a futex\""
    },
    {
      "commit": "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4",
      "tree": "3a69bbfecee2527a0584cb7bc30fbf434f20c47d",
      "parents": [
        "f4fd65e393fe60f17e22ee7823f8dce4594c053d"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 18 13:34:39 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Tue Oct 30 09:43:57 2018 -0700"
      },
      "message": "Implement LockSupport.park with a futex\n\nThis resolves a contention issue where a thread unparking a higher\npriority thread would see a bunch of repeated wakeups. It also resolves\nan issue where LockSupport.parkUntil would not return on time if the\nsystem clock changed while the thread was parked.\n\nBug: 28845097\nTested: ./test.py -b --host --verbose -j20\nChange-Id: I75458afc481b7a5860e67f8a421109308ce5ebc6\n"
    },
    {
      "commit": "70f5fd0770adbef645950895309a2a63c3bde7c0",
      "tree": "d9794484e83858cf7e33551eb8a108e07f46b18c",
      "parents": [
        "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:58:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add class-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for class instance allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I32529f0221a836452c58687330a91ac0d5fde162\n"
    },
    {
      "commit": "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4",
      "tree": "7a8ee84cad0df34ab33bdcb0115fc0c79d6c83be",
      "parents": [
        "c2099b0b0c052dd61137b9cf5f9f8b30bab1a7a8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 15:18:21 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add object-array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for object array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I0d7c40ed53708d4c759190961b40f0cac3fe696d\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": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "afaf7f8198fe5ffc054278da6800f81dd83f272c",
      "tree": "3ebdec9fca813351d178709743121fa66815a7a0",
      "parents": [
        "6ca8ec7809f87ccac8d9d66d267f2379bdfdfe66"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 11:32:38 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 08:20:09 2018 -0700"
      },
      "message": "ART: Enable bugprone-unused-return-value\n\nEnable bugprone-unused-return-value as an error. This is on top of\nthe compiler warning for attribute((warn_unused)).\n\nMark the current occurrences (all unique_ptr.release()) with NOLINT\nto signal that we know what we\u0027re doing.\n\nBug: 32619234\nBug: 117926937\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I36659722335eef36acfa5845289104257a393874\n"
    },
    {
      "commit": "6071d2d1cd94b3f2bfe422a3e567ca11a7e3438f",
      "tree": "0f1b9dc69a639045228edf6134a473732bda3ed7",
      "parents": [
        "17c5e022f48a36fd160906b9c99ae14a2f014f17",
        "be1f8d0c54a323f4970e3750ef60fff20f42c228"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 16 03:39:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 16 03:39:02 2018 +0000"
      },
      "message": "Merge \"Make QuickExceptionHandler handle force-retry-instruction\""
    },
    {
      "commit": "be1f8d0c54a323f4970e3750ef60fff20f42c228",
      "tree": "dabf8e3e78e47567c0bbbf06a3f4b2dd86e03332",
      "parents": [
        "0aa7a5a6a7bc350b79351f52e26c97747e927acf"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 15 11:44:42 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 15 21:19:17 2018 +0000"
      },
      "message": "Make QuickExceptionHandler handle force-retry-instruction\n\nIf the runtime is using instrumentation trampolines (i.e. performing\nDDMS tracing) then we need to wait until the actual\nQuickExceptionHandler to perform the deopt to keep the instrumentation\nstack sane. Previously we were only checking force-pop-frame at this\npoint since normally force-retry-instruction would be handled earlier.\nThis fixes this oversight.\n\nTest: ./test/testrunner/testrunner.py --host --trace --ntrace\nBug: 73255278\nBug: 111357976\nBug: 117533193\nBug: 117615146\nChange-Id: I372b8d9c809ba6db085fb074c96d83889d0b0c2c\n"
    },
    {
      "commit": "8db807252e1d4d0bab7785be231e20a1e5fd8e74",
      "tree": "b3ab6a96ddc9ef3e0dfbbc2422321f73ef50c4c9",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc",
        "78baed5ec51a6e2d113e8b29aafa5c6203b46845"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 15 08:25:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 15 08:25:50 2018 +0000"
      },
      "message": "Merge \"ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\""
    },
    {
      "commit": "78baed5ec51a6e2d113e8b29aafa5c6203b46845",
      "tree": "57ca544020f309e3529e33300ad4867ca4579c1e",
      "parents": [
        "a48eb7e0690187618d2824a7d9b5601e7f5cdf80"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 11 10:44:58 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 12 17:53:50 2018 +0100"
      },
      "message": "ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\n\nAnd fix UnstartedRuntime checking for null arguments in all\nfunctions where we now use reinterpret_cast32\u003c\u003e.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/783607 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 117427174\nChange-Id: I58f8ad59f70e3fbb1d06aef419cd26555706fa65\n"
    },
    {
      "commit": "0aa7a5a6a7bc350b79351f52e26c97747e927acf",
      "tree": "a583889668d9703d16d37586d56421bd27c62661",
      "parents": [
        "e12575640dca5118bf96245f373acda276c22178"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 10 15:58:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:41:54 2018 -0700"
      },
      "message": "Revert^4 \"JVMTI PopFrame support\"\n\nThis reverts commit 202b617acf477e8e8e11915f467120a0bd518e74.\nThis unreverts commit 202b617acf.\nThis unreverts commit 88a2a9d7a1.\n\nThere were several bugs with the implementation of pop-frame related\nto interactions between the jit, exception handling, class-loading,\nand deoptimization.\n\n- We were instrumenting the target thread stack in cases where it was\n  unnecessary which caused the exception handler to incorrectly\n  determine that a method was not deoptimizable. This caused the\n  pop-frame to be ignored.\n\n- We were incorrectly sending ExceptionCatch events if an exception\n  suppressed by pop-frame would have been caught in the current frame.\n\n- We were allowing pop-frame to be used on threads suspended in the\n  ClassLoad or ClassPrepare events despite having surprising semantics\n  in that situation (see b/117615146).\n\nNeeded to modify test 1953 slightly for inclusion in CTS. I needed to\nmake the CTS entrypoint not run the class-load tests (since the cts\nconfiguration means the classes are loaded by the verifier and not the\ninterpreter). I updated the expected.txt and check script to reflect\nthis.\n\nReason for revert: Fixed issue causing Exception events to sometimes\n                   eat PopFrame and other issues.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nBug: 73255278\nBug: 111357976\nBug: 117533193\nBug: 117615146\n\nChange-Id: I655c4fe769938cf41d7589f931d6710cf2001506\n"
    },
    {
      "commit": "4ca6cc7ddcbd568b365c428371ea9675799775af",
      "tree": "a7f9ab0be56e4821526697fad43aa928740ddb9e",
      "parents": [
        "002feb914b397e7fbdeeb60ad300d1f1ec84edf3",
        "202b617acf477e8e8e11915f467120a0bd518e74"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 10:04:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 10 10:04:51 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert^2 \"JVMTI PopFrame support\"\"\""
    },
    {
      "commit": "202b617acf477e8e8e11915f467120a0bd518e74",
      "tree": "4d1124b540984f970acaf494f4fd85cc347fbd57",
      "parents": [
        "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 07:47:58 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"JVMTI PopFrame support\"\"\n\nThis reverts commit 1c7b1fcf0ff29d83d13d38d0451a54474ccf5964.\n\nBug: 73255278\nBug: 111357976\nbug: 117533193\n\nReason for revert: Test failures\n\nChange-Id: I9da863fd95264007c4efeb85539e704e83499dcf\n"
    },
    {
      "commit": "6e7e0eaca0d7de9a8a68fe8ead57f6fbaa32d054",
      "tree": "00df0d1e8d07e3da1f8cb9a44a066939e481ba48",
      "parents": [
        "c71f38bdf7dca39a070ba25d436edcd758551f42",
        "1b5c5c892918bb9bd28ad26db28dfebba752dd4b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 10 01:02:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 10 01:02:06 2018 +0000"
      },
      "message": "Merge \"ART: Simplify CurrentMethodVisitor\""
    },
    {
      "commit": "1c7b1fcf0ff29d83d13d38d0451a54474ccf5964",
      "tree": "b978817acd252f10bd4648d3582ac9459fc9a0f4",
      "parents": [
        "59b950f53152c169464ba8c63d44102eeba1e594"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:42:12 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 08 13:18:35 2018 -0700"
      },
      "message": "Revert^2 \"JVMTI PopFrame support\"\n\nThis reverts commit f67d0cbf2743b29aa6e1be7ae2f71762b8762785.\n\nRedefine-stress causes classes to be loaded at slightly different\nplaces due to the deep verification needed to redefine a class. This\nwould cause the parts of tests 1953 and 1954 to fail due to classes\nloading at unexpected times. We changed the test to skip these\ntest-cases when they cannot be correctly executed.\n\nReason for revert: Fixed issue causing tests to fail under\n                   redefine-stress\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test/testrunner/testrunner.py --host --redefine-stress\nBug: 73255278\nBug: 111357976\nChange-Id: I46fb4aed878bcc9398f2b73ad5040d7c97aec3ef\n"
    },
    {
      "commit": "1b5c5c892918bb9bd28ad26db28dfebba752dd4b",
      "tree": "f2eaab545c1957b492f19cb60c5ea6b4f41d671b",
      "parents": [
        "fdb1b3d50bc0c4d18ab1785b3414b1d8fe15c1c7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 27 10:42:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 08 08:13:12 2018 -0700"
      },
      "message": "ART: Simplify CurrentMethodVisitor\n\nEncapsulate the visitor with the only user, and remove dead code.\n\nBug: 116683601\nTest: mmma art\nChange-Id: Ibe1d6ea8047ba7f0c6da7b0f863d46388cf994ff\n"
    },
    {
      "commit": "f67d0cbf2743b29aa6e1be7ae2f71762b8762785",
      "tree": "b0b1b8a1908541791bfeb18c1117482d559ded38",
      "parents": [
        "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:39:54 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 05 23:40:30 2018 +0000"
      },
      "message": "Revert \"JVMTI PopFrame support\"\n\nThis reverts commit 88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a.\n\nReason for revert: Fails class-load/prepare tests with jit-at-first-use.\nBug: 73255278\nBug: 111357976\nTest: None\nChange-Id: Id8dea6dcf124d56e3a8dfa19e6ed39cc70370c34\n"
    },
    {
      "commit": "88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a",
      "tree": "a19af813a97be817a76072534139a77b16f3ad87",
      "parents": [
        "fc7d33fc052d993eaa205337e6a805022d2cd822"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 14 14:44:29 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 04 11:04:49 2018 -0700"
      },
      "message": "JVMTI PopFrame support\n\nImplement support for the JVMTI can_pop_frames capability. This works\nby marking shadow-frames with a bit that forces it to be popped or an\ninstruction to be retried. When a PopFrame is requested the plugin\nwill deoptimize the targeted thread and force the interpreter to deal\nwith the frame pop. If the can_pop_frames capability is enabled the\nruntime will be forced to handle all exceptions through the\ninterpreter. This is required to support PopFrame during some\nexception events.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nBug: 73255278\nBug: 111357976\nChange-Id: I62d6b1f4ff387c794ba45093c3d6773aaf642067\n"
    },
    {
      "commit": "cea421597f26b2afb2d82d72a46c5dc905496ca5",
      "tree": "60f2a4df80e1fdf8aeb42e9dafca96d75aa43d2f",
      "parents": [
        "e9f61035e7077032a17d7d0e9035b6ef3995273f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 18 22:51:55 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 15:34:06 2018 -0700"
      },
      "message": "Revert \"Allow threads to be marked as unsuspendable by kForUserCode\"\n\nThis allows any thread (including jit-threads) to be suspended by\nkForUserCode and the will stop executing at the next suspend-point.\n\nThis reverts commit 53570676750d74416cecdf5a8e01f3cf9a8d4169.\n\nReason for revert: This marking was not sufficient to prevent\ndeadlocks and there is a better solution in simply preventing the jit\nthread from making this situation possible.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./art/tools/run-libjdwp-tests.sh \\\n        --mode\u003dhost                    \\\n        --variant\u003dx64                  \\\n        --test org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest\n\nBug: 70838465\nBug: 111348762\n\nChange-Id: I8314904cc35f66bdf287ac7b9ec69510310a3474\n"
    },
    {
      "commit": "e9f61035e7077032a17d7d0e9035b6ef3995273f",
      "tree": "e24de0b760ef3848c8d405b4b7fec5a8b630778c",
      "parents": [
        "bb68fda18ef3d7ea183a322831a5afd20b6a8bff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 24 16:04:51 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 01 15:34:02 2018 -0700"
      },
      "message": "Prevent the JIT from loading classes in debuggable mode\n\nIn debuggable mode the timing and placement of class loads is\nobservable. This causes deopts to be placed in situations where a\nclass would be loaded by the JIT.\n\nThis has negligible impact on performance of compiled code, causing\nonly a handful of classes to be not loaded.\n\nFor example with the it.mvilla.android.fenix2 application of the\n~13000 classes loaded the jit was responsible for 19 of them.\n\nSince the jit is only responsible for a small number of class loads\nand for the class not to have been loaded by the interpreter the path\nmust be cold anyway there is no performance impact on standard paths.\n\nTest: ./test.py --host\nTest: ./test/testrunner/testrunner.py --with-agent\u003dlibjitloadd.so\u003dfatal --host\nTest: Attach libjitload.so to running processes and examine jit-load\n      counts.\n\nBug: 70838465\nBug: 73255278\nBug: 112074977\nBug: 116517081\n\nChange-Id: I030bc8116345af506e83ba78427a7fbda7a7b386\n"
    },
    {
      "commit": "62741139ea636682568237417c3bda84dfd1606b",
      "tree": "1f28174b81ccc6f271dccfe3bae9b0f7e59b38a1",
      "parents": [
        "334c154f9b4ba288a1fec54fef98fcf71223bae6",
        "912f36c954a91bdc7d9801a111ba089ec2a23681"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Sep 27 14:34:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 27 14:34:51 2018 +0000"
      },
      "message": "Merge \"Add small thread-local cache for use by the interpreter.\""
    },
    {
      "commit": "912f36c954a91bdc7d9801a111ba089ec2a23681",
      "tree": "87e576e86867140c478d6959ce20a261daaad60a",
      "parents": [
        "26f048f48cdb1e884aab2b6fddf26d58346d29ad"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Sep 08 12:22:58 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Sep 27 15:16:09 2018 +0100"
      },
      "message": "Add small thread-local cache for use by the interpreter.\n\nSmall (one page) cache which can be used on the hottest paths\nin the interpreter and which does not require synchronisation.\nThis CL adds the code but it does not use it for anything yet.\n\nTest: test-art-host-gtest\nChange-Id: I41d4e7a86a0f62f7a4efc165b8934232b4e766c7\n"
    },
    {
      "commit": "8991ad0ec70a5d63a0cedb96f87b4e8bea2d2b9d",
      "tree": "5f4246e572cf54d46becc49f9f382d0044d1b797",
      "parents": [
        "5d7015cd64085068b1685d44339b4b705ef3f065"
      ],
      "author": {
        "name": "Wei Li",
        "email": "sirius.liwei@huawei.com",
        "time": "Thu Sep 13 16:43:39 2018 +0800"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 25 06:38:11 2018 +0100"
      },
      "message": "Improving ART debugging and printing VmSize when OOM occurs\n\nVmSize debugging information is added to quickly identify whether\nthe process address space or the system memory is insufficient\n\nTest: 1 Manually trigger an OOM exception\n      2 Checking whether the keyword VmSize exists in the OOM\n      exception log\n      3 art/test.py --host --64 -r\n\nSigned-off-by: Wei Li \u003csirius.liwei@huawei.com\u003e\nSigned-off-by: Jinguang Dong \u003cdongjinguang@huawei.com\u003e\n\nChange-Id: I0ea53f5136c06aba27712f95335ca722e7d30d95\n"
    },
    {
      "commit": "fa6a1b0a1d9d186a0ad9bb413a4e49f1ffd187d8",
      "tree": "6d3bef945030868d7e78162dc3f4f35a07ce410a",
      "parents": [
        "a0878aa9f4f4102e56a6381b28a8d7c38dec80b9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 08:11:55 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 07 09:13:50 2018 -0700"
      },
      "message": "ART: Continue adding override annotations\n\nUse Clang-tidy\u0027s modernize-use-override to add more annotations. Ignore\ninferred annotations on destructors.\n\nBug: 32619234\nTest: mmma art\nChange-Id: Ic432c928e398d44df9171e42db04ee19946e6887\n"
    },
    {
      "commit": "213f895897c85bf98ebc65c8d8d0605d228ed3e8",
      "tree": "0e6430e688cf1420ff1133dbde7ea4ac53a9d297",
      "parents": [
        "96b81658dd2726a8cfa5f7e5323cdb6a073e7ff1",
        "9b7656d4dfc89d918264db4cb4b54b1383008140"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 28 21:50:04 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 21:50:04 2018 +0000"
      },
      "message": "Merge \"HWASan support in ART.\""
    },
    {
      "commit": "9b7656d4dfc89d918264db4cb4b54b1383008140",
      "tree": "632b92d791a02ea1f082c7445b7389ec6e2c1c8c",
      "parents": [
        "19759b28bc9dad1581c207d76227eb74fc8eebcb"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Aug 21 15:18:49 2018 -0700"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Tue Aug 28 13:03:19 2018 -0700"
      },
      "message": "HWASan support in ART.\n\nTwo small tweaks:\n* The highest 8 bits of a pointer in hwasan contain a random tag which needs to\n  be removed before comparing _unrelated_ pointers.\n* Annotate DoLongJump. HWASan needs to re-tag the newly unallocated stack space\n  to match SP. This is similar to ASan annotation (__asan_handle_noreturn), but\n  more precise - HWASan needs to know the destination SP address because it can\n  not conservatively \"unpoison\" the entire stack like ASan does.\n\nBug: 112438058\nTest: mmm SANITIZE_TARGET\u003dhwaddress\n\nChange-Id: I9f9d92495b3a4b2637e48c7af1b614e8d1db8ea0\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": "42deda8a5ee207706df37d7cb56d2a48e94073f0",
      "tree": "fc1b40813e502c04241950eef5c8b27313fa9ed7",
      "parents": [
        "dd667714e9504d447e752b0cffdf757a6133392b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 10 11:23:27 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 10 16:41:33 2018 +0100"
      },
      "message": "Add helper method to iterate over BitTable fields in CodeInfo.\n\nAvoid the repetitive code patterns and simplify code.\n\nTest: test-art-host-gtest-stack_map_test\nTest: checked output of oatdump\nChange-Id: I2354bc652837eb34efeecf4de56a027384544034\n"
    },
    {
      "commit": "a2d29a3a772f17014197e829aa8cb41026f88f05",
      "tree": "5fea3c3e18db733655c55fdd91175f9870b4ad35",
      "parents": [
        "8e7ddc234ecbde21b0e6755cf66bcad858a817d2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 11:06:38 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 16:00:00 2018 +0100"
      },
      "message": "Add stack map fast path for GC.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ia04a07b560fcce2fb955d66d1924ee224dec420d\n"
    },
    {
      "commit": "9d479254d0dc4043a15ab26205f40439eca15493",
      "tree": "af8a9c9c6f2c28e723a971c9d39c9d1cebd1f814",
      "parents": [
        "ca20fb6cc4dda392e63bdc8ec9de54d89793373e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 24 11:35:20 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:43:30 2018 +0000"
      },
      "message": "Rename type resolution entrypoints.\n\nRename the InitializeType and InitializeTypeAndVerifyAccess\nentrypoints to Resolve* to better match their semantics.\nKeep the InitializeStaticStorage name for now as the most\nappropriate name InitializeType would clash with the old\nname of the ResolveType entrypoint.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ide55b58c490d085ab37d8536f90699f7ed571d59\n"
    },
    {
      "commit": "53570676750d74416cecdf5a8e01f3cf9a8d4169",
      "tree": "8de1c48dd0a83091ffef6bf321ffc4ffc05b1147",
      "parents": [
        "b7f10d59557cb6b6cd6824f3bf4d77f961248846"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 12 11:09:59 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 17 11:03:20 2018 -0700"
      },
      "message": "Allow threads to be marked as unsuspendable by kForUserCode\n\nThere was a possible deadlock between jit-threads being suspended and\nanother thread waiting for the jit-thread to finish their work. If the\njit-thread hit a suspend-point the process would deadlock. This fixes\nthis by allowing threads to be marked as unsuspendable by user-code.\nThis prevents the issue by marking jit and gc threads as unsuspendable\nby user code. Agents attempting to suspend them using JVMTI will\nsucceed (and see the thread as suspended) but internal runtime methods\nwill not see the thread as suspended and the thread will not be\nprevented from moving into the kRunnable state. A thread that is\nunsuspendable trying to suspend itself using JVMTI will get\nERR(INTERNAL) and a log message.\n\nDoing this requires that we rewrite the JVMTI thread suspension code\nsomewhat so it will now perform an unconditional kInternal suspension\nprior to trying to suspend the thread kForUserCode. The kInternal\nsuspension is then lifted. This ensures that everything is done\natomically even if the kForUserCode won\u0027t stop the thread.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./art/tools/run-libjdwp-tests.sh \\\n        --mode\u003dhost                    \\\n        --variant\u003dx64                  \\\n        --test org.apache.harmony.jpda.tests.jdwp.EventModifiers.InstanceOnlyModifierTest\n\nBug: 70838465\nBug: 111348762\n\nChange-Id: I91211641b82416664bf5abd8546efebf4f672f12\n"
    },
    {
      "commit": "184f0759ef700b1412c7df412c4ebb297427d9fc",
      "tree": "beef751010816fbbee70494422fd48d46559a4ac",
      "parents": [
        "ec1f1a91328f44d93cfc16e39160dbdfce2f7b9a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 13 11:18:22 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 16 16:20:01 2018 -0700"
      },
      "message": "Rewrite thread CustomTLS to support keyed TLS entries\n\nOur Thread struct allowed plugins or other parts of the runtime to use\na single custom_tls_ void* pointer to store additional data in the\nThread struct. Unfortunately it was limited to a single value. This CL\nchanges the API to allow one to pass in a const char* key that is used\nto address the TLS data. This lets multiple plugins or parts of the\nruntime set their own independent TLS entries. This also adds support\nfor TLS entries actually being deallocated automatically.\n\nTest: ./test.py --host\nChange-Id: I40fa767b9c61a755b2ed910e4ad1e6327705e941\n"
    },
    {
      "commit": "d109e30eab8ba25f8d89be2a83d9036e2d541af2",
      "tree": "24df91603efe9ce8c4a2efd09ac402aceb10df4e",
      "parents": [
        "c916736ca1e375c276df251446baf2ac8ff3eb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 27 10:25:41 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:51 2018 -0700"
      },
      "message": "Don\u0027t use StringFactory.newEmptyString in compiled code\n\nWhen compiling debuggable code we would compile a new-instance String\ninstruction into a StringFactory.newEmptyString invoke. This\nadditional invoke could be observed using tracing and is inconsistent\nwith the interpreter, where the string is simply allocated directly.\nIn order to bring these two modes into alignment we added a new\nAllocStringObject quick entrypoint that will be used instead of the\nnormal AllocObject\u003c...\u003e entrypoints when allocating a string. This\nentrypoint directly allocates a new string in the same manner the\ninterpreter does.\n\nNeeds next CL for test to work.\n\nBug: 110884646\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xjitthreshold:0 --jit\nTest: Manual inspection of compiled code.\nChange-Id: I7b4b084bcf7dd9a23485c0e3cd2cd04a04b43d3d\n"
    },
    {
      "commit": "2c8206ffeb07cebe2f612b8c66c0f4f4132e2be2",
      "tree": "9de26eb2e85f2ab46421caf0f1ca773dfcfca7f6",
      "parents": [
        "2d441b1253cca39bf3078422e8f0b2f4ec1bb408"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 14:51:09 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:17 2018 -0700"
      },
      "message": "Correctly send MethodExit events from exception handlers\n\nDue to the way that exceptions are handled it was possible for a\nMethodExit event to be sent multiple times for the same exception.\nThis fixes that issue by correctly keeping track of which exception\nevents have already been sent and correctly tracking the current\nexception being thrown.\n\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test.py --host\n\nChange-Id: I7fa09f0f3f82181430b18805da5ba8daf68d4b89\n"
    },
    {
      "commit": "dcfcce4241fc706fd249bb3fec67f8a1dc434af6",
      "tree": "7f9e189a1654e54849843fd758881b9fae23d8e7",
      "parents": [
        "639f5150805006a2c3a07daa804abcdba0bc3ece"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 10:00:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 13:20:05 2018 +0100"
      },
      "message": "Revert^2 \"Delay init of classes of pre-allocated exceptions.\"\n\nThis reverts commit 29cf32bb64dc61c4f755661939630775bd36419d.\n\nFixed heap-poisoning/gcstress tests by calling the Alloc\u003c\u003e()\nof the exception object with kInstrumented\u003dtrue.\n\nChange-Id: I209ab4f020e9c6fb67319fddde69ed87e3653223\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Pixel 2 XL boots.\nTest: run_build_test_target.py art-gtest-heap-poisoning\nTest: run_build_test_target.py art-interpreter-gcstress\nBug: 109925024\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": "896583ec8809497bb844c857dd042b0d2e7d1ba1",
      "tree": "1075075e9b9b9fdb8627d07eabf823776bdcf2e7",
      "parents": [
        "cca7cb9ffa56d8ab8fd0c5997c8bfd965d7426c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 15 13:31:58 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 25 10:24:53 2018 -0700"
      },
      "message": "ART: Use clang-tidy to warn on RAII issue\n\nRemove the macro hack to detect likely-incorrect usage of RAII wrappers.\nInstead make the clang-tidy pattern bugprone-unused-raii fatal.\n\nTest: mmma art\nChange-Id: I9d0eb1c5c3f469b2907111af9d38d947b36c4878\n"
    },
    {
      "commit": "5c9715e0bafe58d28e24ad957db4f3adfe367bd4",
      "tree": "cdb1387ffcf2db9b75d9e66caff845d1ac09fec7",
      "parents": [
        "faf742fe798038cd314ad06165017c9719cbce6e",
        "7a55ce0fed42310e6ff71e3fd648ea715c40aa83"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 20 15:18:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 20 15:18:14 2018 +0000"
      },
      "message": "Merge \"ART: Ensure minimum stack size under ASAN\""
    },
    {
      "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": "7a55ce0fed42310e6ff71e3fd648ea715c40aa83",
      "tree": "815de353045f47067630ba9e02911c5c03bdb3d8",
      "parents": [
        "493bf736c698945ec88042500f24d93190ecfe74"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 10:07:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 19 10:31:53 2018 -0700"
      },
      "message": "ART: Ensure minimum stack size under ASAN\n\nWhen running sanitized, ensure a minimum stack size of 2MB to\nensure that classes in the core library can be initialized in\ntests even under the access-checks interpreter.\n\nBug: 109813469\nTest: SANITIZE_HOST\u003daddress art/test/testrunner/testrunner.py -b --host --interp-ac -t 004-ThreadStress -t 054 -t 107 -t 203 -t 924 -t 1905 -t 1907 -t 1907 -t 1912 -t 1913 -t 1914 -t 1916 -t 1917 -t 1920 -t 1921 -t 1930 -t 1931 -t 1932 -t 1935 -t 1936\nChange-Id: I702d36552bbc753e286e619937370518aecf9692\n"
    },
    {
      "commit": "e1402125e8363b49e176c6072893d1c110a05d2f",
      "tree": "44ec055be78cdcb8086a598cbf791f8c4627e157",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:20:45 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:31:44 2018 +0100"
      },
      "message": "Move some helper methods to DexRegisterLocation.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0abab008159db023d531df69214cd3bb8c0639bd\n"
    },
    {
      "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": "a4bae540b7c91136aaab02fd1638c8df6cb96970",
      "tree": "eb517cc7ba2a3b0d37b9be26e8b811d9f015d672",
      "parents": [
        "bac28b0d5fb0765291adf8379bc502783cbb15b0",
        "fd89b0739d4000ea70f28bf53dea531027024f5a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 08 11:14:39 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 08 11:14:39 2018 +0000"
      },
      "message": "Merge \"Remove unused GetDexRegisterMap arguments.\""
    },
    {
      "commit": "fd89b0739d4000ea70f28bf53dea531027024f5a",
      "tree": "1c9f3e1b046d60df405fb63f04cf83d3be4ff0f5",
      "parents": [
        "6de8833fb64e59301eada4005ed04da995796170"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 07 12:00:18 2018 +0100"
      },
      "message": "Remove unused GetDexRegisterMap arguments.\n\nThey are no longer needed in the new encoding.\n\nI reuse the local variables in most places to DCHECK the size\nof the decoded register map.  This has one catch though:\nWe sometimes omit all dex registers, so the DCHECK should be\ndone only after checking if the map is empty (if applicable).\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I94b67029842374bc8eb7c9e5eac76fc93a651f24\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": "21d45b4f4ef3661ac33d622aaac5dd6d2ce7deb8",
      "tree": "121e046a949025bca4d766fdfdc5ea58e4ea4a10",
      "parents": [
        "d02b23f7ee9664213216a82bfdcb0ee83824de04"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 06:35:05 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Simplify DexRegisterMap API.\n\nStore some of the needed decoding state explicitly to avoid passing it\naround all the time. The DexRegisterMap class is rewritten in next CL.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ie268dff2a1c1da2e08f0e6799ae51c30e11f350b\n"
    },
    {
      "commit": "08231f6cb3095a7dbde29299a7da5413a5f992e4",
      "tree": "d7cc4595bd633b3f5e7ade454d405a57468f3e77",
      "parents": [
        "750cf88c8872983ae13259131cb2ed377e3eadff",
        "4b59d107f91601c4e0095d7a9db40970d4ed6956"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 30 16:21:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 30 16:21:15 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Optimize register mask and stack mask in stack maps.\"\""
    },
    {
      "commit": "4b59d107f91601c4e0095d7a9db40970d4ed6956",
      "tree": "b120add4870b86cefc308ec3a0100851cfc1a4c0",
      "parents": [
        "da4ff8bfcf03d6186b7d21c7bd8b90248f7b2f96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 21:46:10 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 14:32:44 2018 +0100"
      },
      "message": "Revert^2 \"Optimize register mask and stack mask in stack maps.\"\n\nThis reverts commit 8b20b5c1f5b454b2f8b8bff492c88724b5002600.\n\nReason for revert: Retry submit unmodified after fixing the test.\n\nUse BitTable to store the masks as well and move the\ndeduplication responsibility to the BitTable builders.\n\nDon\u0027t generate entries for masks which are all zeros.\nThis saves 0.2% of .oat file size on both Arm64 and Arm.\n\nEncode registers as (value+shift) due to tailing zeros.\nThis saves 1.0% of .oat file size on Arm64 and 0.2% on Arm.\n\nTest: test-art-target-gtest-exception_test\nTest: test-art-host-gtest-bit_table_test\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib643776dbec3f051cc29cd13ff39e453fab5fae9\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"
    }
  ],
  "next": "8b20b5c1f5b454b2f8b8bff492c88724b5002600"
}
