)]}'
{
  "commit": "f8faed6dd2b2389bef3b9aae0f5ce9e8fcf950fa",
  "tree": "af39dd631cf54c582437c3ce3c546e409b212e2a",
  "parents": [
    "f8beb4bedfdb11eca2f947afde79dd78b6386206"
  ],
  "author": {
    "name": "Jorge E. Moreira",
    "email": "jemoreira@google.com",
    "time": "Fri Dec 02 17:03:54 2016 -0800"
  },
  "committer": {
    "name": "Nicolas Capens",
    "email": "capn@google.com",
    "time": "Fri Feb 03 20:37:17 2017 +0000"
  },
  "message": "Modified MutexLock to use a pthread mutex on Android.\n\nThe BackoffLock spins idle for a while when waiting for a locked mutex\nbefore yielding the core, thus wasting many CPU cycles. Modern pthread\nimplementations have low overhead mutexes which make the thread sleep\nif the lock is already held, and efficiently resume them it becomes\navailable.\n\nChange-Id: I26b64c86db620739671373fd0d82085744d34fa8\nReviewed-on: https://swiftshader-review.googlesource.com/8648\nReviewed-by: Nicolas Capens \u003ccapn@google.com\u003e\nTested-by: Nicolas Capens \u003ccapn@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "16835ede1979264ed8ae9b381d3b6aca17beb645",
      "old_mode": 33188,
      "old_path": "src/Common/MutexLock.hpp",
      "new_id": "044c15627d0326cd07a6e31e54ffda2e6e206f39",
      "new_mode": 33188,
      "new_path": "src/Common/MutexLock.hpp"
    },
    {
      "type": "modify",
      "old_id": "6d2577eee582ed97c802f142903a055b339c29b2",
      "old_mode": 33188,
      "old_path": "src/Common/Resource.hpp",
      "new_id": "379b7690af868d45a4c3115055e25ab19df0f06b",
      "new_mode": 33188,
      "new_path": "src/Common/Resource.hpp"
    },
    {
      "type": "modify",
      "old_id": "f8fd87e24a9dd84aadaa2f0f8bbecce7f60ce6a5",
      "old_mode": 33188,
      "old_path": "src/Main/SwiftConfig.hpp",
      "new_id": "233b43876c4f162e4174a9e9ff9a821b4e07e8c1",
      "new_mode": 33188,
      "new_path": "src/Main/SwiftConfig.hpp"
    },
    {
      "type": "modify",
      "old_id": "31be0e952b911f3fa0b2ec319922e70f9fc529d2",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/Display.cpp",
      "new_id": "b9ee7992549ec0c9d091a1e32b9991bd0161ed84",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/Display.cpp"
    },
    {
      "type": "modify",
      "old_id": "96e145357a23afacfd65c3eb7460b535ec2df3a4",
      "old_mode": 33188,
      "old_path": "src/OpenGL/libEGL/Display.h",
      "new_id": "93ab2cb17a2f106aa8980854928f211ef34cc58e",
      "new_mode": 33188,
      "new_path": "src/OpenGL/libEGL/Display.h"
    },
    {
      "type": "modify",
      "old_id": "d3da778499c7aca243945e050d2550885c275a04",
      "old_mode": 33188,
      "old_path": "src/Reactor/LLVMReactor.cpp",
      "new_id": "0d5685865d9e73479514d817f5bf8b0b29a3fb09",
      "new_mode": 33188,
      "new_path": "src/Reactor/LLVMReactor.cpp"
    },
    {
      "type": "modify",
      "old_id": "366d5c31278482bba9560dd6a6bd70b3f62cccb9",
      "old_mode": 33188,
      "old_path": "src/Renderer/Blitter.hpp",
      "new_id": "02c05350f157dc1abba0fc8efc94f0c7690146c3",
      "new_mode": 33188,
      "new_path": "src/Renderer/Blitter.hpp"
    },
    {
      "type": "modify",
      "old_id": "e4a83e1eea78ac0cdbf107439a1e666c08863fde",
      "old_mode": 33188,
      "old_path": "src/Renderer/Renderer.hpp",
      "new_id": "49d024990183fb88413a074f3b323c393b54ff55",
      "new_mode": 33188,
      "new_path": "src/Renderer/Renderer.hpp"
    }
  ]
}
