llvm-project/lldb/source/Host/macosx/objcxx/HostThreadMacOSX.mm
Konrad Kleine eaebcbc679 [lldb] NFC remove DISALLOW_COPY_AND_ASSIGN
Summary:
This is how I applied my clang-tidy check (see
https://reviews.llvm.org/D80531) in order to remove
`DISALLOW_COPY_AND_ASSIGN` and have deleted copy ctors and deleted
assignment operators instead.

```
lang=bash
grep DISALLOW_COPY_AND_ASSIGN /opt/notnfs/kkleine/llvm/lldb -r -l | sort | uniq > files

for i in $(cat files);
do
  clang-tidy \
    --checks="-*,modernize-replace-disallow-copy-and-assign-macro" \
    --format-style=LLVM \
    --header-filter=.* \
    --fix \
    -fix-errors \
    $i;
done
```

Reviewers: espindola, labath, aprantl, teemperor

Reviewed By: labath, aprantl, teemperor

Subscribers: teemperor, aprantl, labath, emaste, sbc100, aheejin, MaskRay, arphaman, usaxena95, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D80543
2020-06-02 13:23:53 -04:00

71 lines
1.8 KiB
C++

//===-- HostThreadMacOSX.cpp ------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "lldb/Host/macosx/HostThreadMacOSX.h"
#include "lldb/Host/Host.h"
#include <CoreFoundation/CoreFoundation.h>
#include <Foundation/Foundation.h>
#include <pthread.h>
using namespace lldb_private;
namespace {
pthread_once_t g_thread_create_once = PTHREAD_ONCE_INIT;
pthread_key_t g_thread_create_key = 0;
class MacOSXDarwinThread {
public:
MacOSXDarwinThread() : m_pool(nil) {
m_pool = [[NSAutoreleasePool alloc] init];
}
~MacOSXDarwinThread() {
if (m_pool) {
[m_pool drain];
m_pool = nil;
}
}
static void PThreadDestructor(void *v) {
if (v)
delete static_cast<MacOSXDarwinThread *>(v);
::pthread_setspecific(g_thread_create_key, NULL);
}
protected:
NSAutoreleasePool *m_pool;
private:
MacOSXDarwinThread(const MacOSXDarwinThread &) = delete;
const MacOSXDarwinThread &operator=(const MacOSXDarwinThread &) = delete;
};
void InitThreadCreated() {
::pthread_key_create(&g_thread_create_key,
MacOSXDarwinThread::PThreadDestructor);
}
} // namespace
HostThreadMacOSX::HostThreadMacOSX() : HostThreadPosix() {}
HostThreadMacOSX::HostThreadMacOSX(lldb::thread_t thread)
: HostThreadPosix(thread) {}
lldb::thread_result_t
HostThreadMacOSX::ThreadCreateTrampoline(lldb::thread_arg_t arg) {
::pthread_once(&g_thread_create_once, InitThreadCreated);
if (g_thread_create_key) {
::pthread_setspecific(g_thread_create_key, new MacOSXDarwinThread());
}
return HostThreadPosix::ThreadCreateTrampoline(arg);
}