Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(673)

Unified Diff: src/IceGlobalContext.h

Issue 2896133003: Do not inline GlobalContext TLS methods. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/IceGlobalContext.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceGlobalContext.h
diff --git a/src/IceGlobalContext.h b/src/IceGlobalContext.h
index aed434106409842aec101fe02c81ff8e501a8265..55b37d813e220b7d6180e34a3ae8528a770063e4 100644
--- a/src/IceGlobalContext.h
+++ b/src/IceGlobalContext.h
@@ -297,55 +297,16 @@ public:
ELFObjectWriter *getObjectWriter() const { return ObjectWriter.get(); }
/// Reset stats at the beginning of a function.
- void resetStats() {
- if (BuildDefs::dump())
- ICE_TLS_GET_FIELD(TLS)->StatsFunction.reset();
- }
+ void resetStats();
void dumpStats(const Cfg *Func = nullptr);
- void statsUpdateEmitted(uint32_t InstCount) {
- if (!getFlags().getDumpStats())
- return;
- ThreadContext *Tls = ICE_TLS_GET_FIELD(TLS);
- Tls->StatsFunction.update(CodeStats::CS_InstCount, InstCount);
- Tls->StatsCumulative.update(CodeStats::CS_InstCount, InstCount);
- }
- void statsUpdateRegistersSaved(uint32_t Num) {
- if (!getFlags().getDumpStats())
- return;
- ThreadContext *Tls = ICE_TLS_GET_FIELD(TLS);
- Tls->StatsFunction.update(CodeStats::CS_RegsSaved, Num);
- Tls->StatsCumulative.update(CodeStats::CS_RegsSaved, Num);
- }
- void statsUpdateFrameBytes(uint32_t Bytes) {
- if (!getFlags().getDumpStats())
- return;
- ThreadContext *Tls = ICE_TLS_GET_FIELD(TLS);
- Tls->StatsFunction.update(CodeStats::CS_FrameByte, Bytes);
- Tls->StatsCumulative.update(CodeStats::CS_FrameByte, Bytes);
- }
- void statsUpdateSpills() {
- if (!getFlags().getDumpStats())
- return;
- ThreadContext *Tls = ICE_TLS_GET_FIELD(TLS);
- Tls->StatsFunction.update(CodeStats::CS_NumSpills);
- Tls->StatsCumulative.update(CodeStats::CS_NumSpills);
- }
- void statsUpdateFills() {
- if (!getFlags().getDumpStats())
- return;
- ThreadContext *Tls = ICE_TLS_GET_FIELD(TLS);
- Tls->StatsFunction.update(CodeStats::CS_NumFills);
- Tls->StatsCumulative.update(CodeStats::CS_NumFills);
- }
+ void statsUpdateEmitted(uint32_t InstCount);
+ void statsUpdateRegistersSaved(uint32_t Num);
+ void statsUpdateFrameBytes(uint32_t Bytes);
+ void statsUpdateSpills();
+ void statsUpdateFills();
/// Number of Randomized or Pooled Immediates
- void statsUpdateRPImms() {
- if (!getFlags().getDumpStats())
- return;
- ThreadContext *Tls = ICE_TLS_GET_FIELD(TLS);
- Tls->StatsFunction.update(CodeStats::CS_NumRPImms);
- Tls->StatsCumulative.update(CodeStats::CS_NumRPImms);
- }
+ void statsUpdateRPImms();
/// These are predefined TimerStackIdT values.
enum TimerStackKind { TSK_Default = 0, TSK_Funcs, TSK_Num };
@@ -403,32 +364,8 @@ public:
std::unique_ptr<EmitterWorkItem> emitQueueBlockingPop();
void emitQueueNotifyEnd() { EmitQ.notifyEnd(); }
- void initParserThread() {
- ThreadContext *Tls = new ThreadContext();
- auto Timers = getTimers();
- Timers->initInto(Tls->Timers);
- AllThreadContexts.push_back(Tls);
- ICE_TLS_SET_FIELD(TLS, Tls);
- }
-
- void startWorkerThreads() {
- size_t NumWorkers = getFlags().getNumTranslationThreads();
- auto Timers = getTimers();
- for (size_t i = 0; i < NumWorkers; ++i) {
- ThreadContext *WorkerTLS = new ThreadContext();
- Timers->initInto(WorkerTLS->Timers);
- AllThreadContexts.push_back(WorkerTLS);
- TranslationThreads.push_back(std::thread(
- &GlobalContext::translateFunctionsWrapper, this, WorkerTLS));
- }
- if (NumWorkers) {
- ThreadContext *WorkerTLS = new ThreadContext();
- Timers->initInto(WorkerTLS->Timers);
- AllThreadContexts.push_back(WorkerTLS);
- EmitterThreads.push_back(
- std::thread(&GlobalContext::emitterWrapper, this, WorkerTLS));
- }
- }
+ void initParserThread();
+ void startWorkerThreads();
void waitForWorkerThreads();
@@ -444,18 +381,12 @@ public:
}
/// Translation thread startup routine.
- void translateFunctionsWrapper(ThreadContext *MyTLS) {
- ICE_TLS_SET_FIELD(TLS, MyTLS);
- translateFunctions();
- }
+ void translateFunctionsWrapper(ThreadContext *MyTLS);
/// Translate functions from the Cfg queue until the queue is empty.
void translateFunctions();
/// Emitter thread startup routine.
- void emitterWrapper(ThreadContext *MyTLS) {
- ICE_TLS_SET_FIELD(TLS, MyTLS);
- emitItems();
- }
+ void emitterWrapper(ThreadContext *MyTLS);
/// Emit functions and global initializers from the emitter queue until the
/// queue is empty.
void emitItems();
@@ -643,7 +574,7 @@ private:
ICE_TLS_DECLARE_FIELD(ThreadContext *, TLS);
public:
- static void TlsInit() { ICE_TLS_INIT_FIELD(TLS); }
+ static void TlsInit();
};
/// Helper class to push and pop a timer marker. The constructor pushes a
« no previous file with comments | « no previous file | src/IceGlobalContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698