)]}'
{
  "log": [
    {
      "commit": "0c2313c2d119e32ac27dae6513a9406ea087bfa9",
      "tree": "39f00ebfc1b4766fc45e6a322637ea9d09c3cd51",
      "parents": [
        "b79674cf70cabdcbe85de2e45b090f98990d020a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 14 09:47:00 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 16 00:53:06 2019 +0000"
      },
      "message": "ART: Forward-declare SuspendReason in thread.h\n\nReduce transitive includes, iwyu.\n\nTest: mmma art\nChange-Id: Ief9708af95db988f2b77accdd144b3d90e4248d2\n"
    },
    {
      "commit": "8764dc3b3eda7f6f13ed7b584475503fe5bedd59",
      "tree": "e8f6e3a4a2596595ffdc8a517daaf37030482eae",
      "parents": [
        "49b74a8c685acfe43dd33e3f51a24c486388bee1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 07 15:20:12 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Use iosfwd more\n\nUse iosfwd where an include of ostream is unnecessary. Also move\ncallee_save_type.h to runtime.\n\nBug: 119869270\nTest: mmma art\nChange-Id: Id8995d6f524e4c491eb6f57fdffb940cf35d291f\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": "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": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    }
  ]
}
