[XRay][compiler-rt] Remove non-trivial globals from xray_log_interface.cc

Summary:
Remove dependency on std::unique_ptr<...> for the global representing
the installed XRay implementation.

Reviewers: dblaikie, kpw, pelikan

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D38121

llvm-svn: 313871
This commit is contained in:
Dean Michael Berris 2017-09-21 10:16:56 +00:00
parent 29202f6dc1
commit c14b5f210f
1 changed files with 6 additions and 6 deletions

View File

@ -17,30 +17,30 @@
#include "xray/xray_interface.h"
#include "xray_defs.h"
#include <memory>
__sanitizer::SpinMutex XRayImplMutex;
std::unique_ptr<XRayLogImpl> GlobalXRayImpl;
XRayLogImpl *GlobalXRayImpl = nullptr;
void __xray_set_log_impl(XRayLogImpl Impl) XRAY_NEVER_INSTRUMENT {
if (Impl.log_init == nullptr || Impl.log_finalize == nullptr ||
Impl.handle_arg0 == nullptr || Impl.flush_log == nullptr) {
__sanitizer::SpinMutexLock Guard(&XRayImplMutex);
GlobalXRayImpl.reset();
delete GlobalXRayImpl;
GlobalXRayImpl = nullptr;
__xray_remove_handler();
__xray_remove_handler_arg1();
return;
}
__sanitizer::SpinMutexLock Guard(&XRayImplMutex);
GlobalXRayImpl.reset(new XRayLogImpl);
GlobalXRayImpl = new XRayLogImpl();
*GlobalXRayImpl = Impl;
__xray_set_handler(Impl.handle_arg0);
}
void __xray_remove_log_impl() XRAY_NEVER_INSTRUMENT {
__sanitizer::SpinMutexLock Guard(&XRayImplMutex);
GlobalXRayImpl.reset();
delete GlobalXRayImpl;
GlobalXRayImpl = nullptr;
__xray_remove_handler();
__xray_remove_handler_arg1();
}