)]}'
{
  "commit": "70ebeabfb8330f805a26dbb2f8af77fb0ab0c5f0",
  "tree": "3dd9117f8475ea78c3fecad2679bf798dc6371e8",
  "parents": [
    "0b098754b73f3b96d00ecb1c7605760b11c90298"
  ],
  "author": {
    "name": "Eric Fiselier",
    "email": "eric@efcs.ca",
    "time": "Wed Apr 24 01:47:30 2019 +0000"
  },
  "committer": {
    "name": "Eric Fiselier",
    "email": "eric@efcs.ca",
    "time": "Wed Apr 24 01:47:30 2019 +0000"
  },
  "message": "Rewrite cxa guard implementation.\n\nThis patch does three main things:\n  (1) It re-writes the cxa guard implementation to make it testable.\n  (2) Adds support for recursive init detection on non-apple platforms.\n  (3) It adds a futex based implementation.\n\nThe futex based implementation locks and notifies on a per-object basis, unlike the\ncurrent implementation which uses a global lock for all objects. Once this patch settles\nI\u0027ll turn it on by default when supported.\n\nllvm-svn: 359060\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d668262638ec60480583137f9334162a79fc215",
      "old_mode": 33188,
      "old_path": "libcxxabi/src/cxa_guard.cpp",
      "new_id": "5d1cf235cc59b065ce9b566c47bb5bd33f3496cc",
      "new_mode": 33188,
      "new_path": "libcxxabi/src/cxa_guard.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8c31848625c41033f58cc546c43a3aa9d5d21102",
      "new_mode": 33188,
      "new_path": "libcxxabi/src/cxa_guard_impl.h"
    },
    {
      "type": "modify",
      "old_id": "fca66590f318befdd24e1bd07ea519479d066366",
      "old_mode": 33188,
      "old_path": "libcxxabi/src/include/atomic_support.h",
      "new_id": "4ff45eb93add9762a5602cc2962a2676b6099b88",
      "new_mode": 33188,
      "new_path": "libcxxabi/src/include/atomic_support.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5f1576dbc05ace3478cdd1a23d65e3ab048eddac",
      "new_mode": 33188,
      "new_path": "libcxxabi/test/guard_test_basic.pass.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e38e132edfc08eddd1550dd71317cf3ad4f443a2",
      "new_mode": 33188,
      "new_path": "libcxxabi/test/guard_threaded_test.pass.cpp"
    }
  ]
}
