summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Signals.cpp
diff options
context:
space:
mode:
authorYaron Keren <yaron.keren@gmail.com>2015-07-22 19:01:14 +0000
committerYaron Keren <yaron.keren@gmail.com>2015-07-22 19:01:14 +0000
commit240bd9c875551d9d48ef27681f7b81d6ef1bd0cd (patch)
tree6d74b3dc511af44bf06139677f506b1f6a136793 /llvm/lib/Support/Signals.cpp
parenta2d9369ef35ea16eeafaa926385f55f6bea5df1b (diff)
downloadbcm5719-llvm-240bd9c875551d9d48ef27681f7b81d6ef1bd0cd.tar.gz
bcm5719-llvm-240bd9c875551d9d48ef27681f7b81d6ef1bd0cd.zip
De-duplicate Unix & Windows CallBacksToRun
Move CallBacksToRun into the common Signals.cpp, create RunCallBacksToRun() and use these in both Unix/Signals.inc and Windows/Signals.inc. Lots of potential code to be merged here. llvm-svn: 242925
Diffstat (limited to 'llvm/lib/Support/Signals.cpp')
-rw-r--r--llvm/lib/Support/Signals.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/llvm/lib/Support/Signals.cpp b/llvm/lib/Support/Signals.cpp
index a11789372d9..598ef50175a 100644
--- a/llvm/lib/Support/Signals.cpp
+++ b/llvm/lib/Support/Signals.cpp
@@ -12,8 +12,11 @@
//
//===----------------------------------------------------------------------===//
-#include "llvm/Support/Signals.h"
#include "llvm/Config/config.h"
+#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/Signals.h"
+
+#include <vector>
namespace llvm {
using namespace sys;
@@ -23,6 +26,15 @@ using namespace sys;
//=== independent code.
//===----------------------------------------------------------------------===//
+static ManagedStatic<std::vector<std::pair<void (*)(void *), void *>>>
+ CallBacksToRun;
+void RunCallBacksToRun() {
+ if (!CallBacksToRun.isConstructed())
+ return;
+ for (auto &I : *CallBacksToRun)
+ I.first(I.second);
+ CallBacksToRun->clear();
+}
}
// Include the platform-specific parts of this class.
OpenPOWER on IntegriCloud