Chromium Code Reviews| Index: src/IceASanInstrumentation.h |
| diff --git a/src/IceASanInstrumentation.h b/src/IceASanInstrumentation.h |
| index de250d4fd038f8510e4db607a60f6e805ee9ff0e..c905e1e173675b68c96558d6d7b6b2d93d123959 100644 |
| --- a/src/IceASanInstrumentation.h |
| +++ b/src/IceASanInstrumentation.h |
| @@ -23,6 +23,8 @@ |
| #include "IceGlobalInits.h" |
| #include "IceInstrumentation.h" |
| +#include <condition_variable> |
| + |
| namespace Ice { |
| class ASanInstrumentation : public Instrumentation { |
| @@ -31,17 +33,21 @@ class ASanInstrumentation : public Instrumentation { |
| ASanInstrumentation &operator=(const ASanInstrumentation &) = delete; |
| public: |
| - ASanInstrumentation(GlobalContext *Ctx) : Instrumentation(Ctx), RzNum(0) { |
| + ASanInstrumentation(GlobalContext *Ctx) |
| + : Instrumentation(Ctx), RzNum(0), RzGlobalsNum(0), |
| + GlobalsLock(GlobalsMutex, std::defer_lock) { |
| ICE_TLS_INIT_FIELD(LocalDtors); |
| } |
| void instrumentGlobals(VariableDeclarationList &Globals) override; |
| private: |
| std::string nextRzName(); |
| - VariableDeclaration *createRz(VariableDeclarationList *List, |
| - VariableDeclaration *RzArray, |
| - SizeT &RzArraySize, |
| - VariableDeclaration *Global); |
| + /* |
|
Jim Stichnoth
2016/06/29 14:08:06
Why is this declaration (and its corresponding imp
tlively
2016/06/29 16:38:30
Oops. Done.
|
| + VariableDeclaration *createGlobalRz(VariableDeclarationList *List, |
| + VariableDeclaration *RzArray, |
| + VariableDeclaration *RzSizes, |
| + VariableDeclaration *Global); |
| + */ |
| void instrumentFuncStart(LoweringContext &Context) override; |
| void instrumentCall(LoweringContext &Context, InstCall *Instr) override; |
| void instrumentRet(LoweringContext &Context, InstRet *Instr) override; |
| @@ -51,8 +57,12 @@ private: |
| void instrumentStart(Cfg *Func) override; |
| void finishFunc(Cfg *Func) override; |
| ICE_TLS_DECLARE_FIELD(std::vector<InstCall *> *, LocalDtors); |
| - bool DidInsertRedZones = false; |
| std::atomic<uint32_t> RzNum; |
| + bool DidProcessGlobals = false; |
| + SizeT RzGlobalsNum; |
|
Jim Stichnoth
2016/06/29 14:08:06
SizeT RzGlobalsNum = 0;
then you can remove it fr
tlively
2016/06/29 16:38:30
Done.
|
| + std::mutex GlobalsMutex; |
| + std::unique_lock<std::mutex> GlobalsLock; |
| + std::condition_variable GlobalsDoneCV; |
| }; |
| } // end of namespace Ice |