)]}'
{
  "log": [
    {
      "commit": "1aa246dec5abe212f699de1413a0c4a191ca364a",
      "tree": "ee9f5be423f56620f211525070273afc7a19c27d",
      "parents": [
        "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "message": "Move casts.h and stl_util.h into base/.\n\nChange-Id: Idb3bfa5cec3d146e488031d91265737cde2b4cf4\n"
    },
    {
      "commit": "35883cc623fdf475a4ead1dafcba9e9becc1ed11",
      "tree": "792bdfcb0a556f7c54a35d9c0e4409d3ca4dd2e5",
      "parents": [
        "ec13743da80a80c1817cf6660c28917fc28846bc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 13 14:08:12 2012 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 13 16:33:39 2012 -0800"
      },
      "message": "Ensure ThreadPool constructor does not return until fully initialized.\n\nThread pool was being deleted too early during runtime shutdown,\nthis was causing a GC running during runtime shutdown to\noccasionally reference a deleted thread pool.\n\nFixed an error where the thread pool was being deleted before the\nthreads were done attaching by making the thread pool constructor\nblock until all of the threads are attached.\n\nChange-Id: I5f0884a74d78c4541ee0e582112857077f3f594f\n"
    },
    {
      "commit": "664bebf92eb2151b9b570ccd42ac4b6056c3ea9c",
      "tree": "783a4492b398078e8d5747f19f6019e91939c986",
      "parents": [
        "d22d54849c96760aa1efa259d6dcfbace54da2af"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 16:54:11 2012 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 17:37:38 2012 -0800"
      },
      "message": "Fix occasional deadlock caused by checkpoint root marking.\n\nThere was a race where a new worker thread would attach during the\ncheckpoint. This caused the thread to wait since suspend count !\u003d 0.\nBut when we decremented the suspend count, we did not broadcast to\nthe resume condition.\n\nAdded a create peer parameter to Thread::Attach and\nAttachCurrentThread. This is used by the threadpool since we don\u0027t\nneed a java peer for worker threads.\n\nChange-Id: I632926b5a6b52eeb0684b6e1dcbf3db42ba3d35c\n"
    },
    {
      "commit": "02b6a78038f12c109f95eb31713cfc747f5512f1",
      "tree": "c36841561a47b2ce3cf15b00fdae822e5a6c5b64",
      "parents": [
        "bcc2926b9721f94c17ed98fae5264cc98f0e066f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 13:51:26 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 06 16:07:36 2012 -0800"
      },
      "message": "Parellel mark stack processing\n\nEnabled parallel mark stack processing by using a thread pool.\n\nOptimized object scanning by removing dependent loads for IsClass.\n\nPerformance:\nPrime: ~10% speedup of partial GC.\nNakasi: ~50% speedup of partial GC.\n\nChange-Id: I43256a068efc47cb52d93108458ea18d4e02fccc\n"
    },
    {
      "commit": "bcc2926b9721f94c17ed98fae5264cc98f0e066f",
      "tree": "ebc059463499b973804d52e0bba593a12cd0326e",
      "parents": [
        "af6eaca5034a602f459a6eca9fb185f3abe8a882"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Nov 02 11:36:03 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Nov 02 17:00:27 2012 -0700"
      },
      "message": "Add dex2oat watch dog thread for host builds\n\nChange-Id: I90b4b6b3a1aebb82955b4aa84d3f2d599af1d13b\n"
    },
    {
      "commit": "e46cd75f182a3d738c5e2ef3cc90b2f0b1de56ee",
      "tree": "ffd976fbc1195cddbb956f87a73d423d611b3cf9",
      "parents": [
        "332f6827edf72f9b3d247a6c2fa79e4d520a409d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 31 16:56:18 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 31 16:56:18 2012 -0700"
      },
      "message": "Fix race condition in thread pool shutdown\n\nWe were not holding the task queue lock when we did broadcast, causing\na race where a thread waits on the CV after the broadcast.\n\nFixes dex2oat deadlocking.\n\nChange-Id: I84f30020511c2bd43f71d9b7b392720bd8d03eab\n"
    },
    {
      "commit": "0e4627e593bc39f8e3d89c31f8977d55054c07cc",
      "tree": "1d69558732c0c916e51a530985a26d4235ef0e6c",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 16:13:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 12:00:03 2012 -0700"
      },
      "message": "Add thread pool class\n\nAdded a thread pool class loosely based on google3 code.\n\nModified the compiler to have a single thread pool instead of creating new threads in ForAll.\n\nMoved barrier to be in top level directory as it is not GC specific code.\n\nPerformance Timings:\n\nReference:\nboot.oat: 14.306596s\ntime mm oat-target:\nreal    2m33.748s\nuser    10m23.190s\nsys 5m54.140s\n\nThread pool:\nboot.oat: 13.111049s\ntime mm oat-target:\nreal    2m29.372s\nuser    10m3.130s\nsys 5m46.290s\n\nThe speed increase is probably just noise.\n\nChange-Id: If3c1280cbaa4c7e4361127d064ac744ea12cdf49\n"
    }
  ]
}
