{
// Release all waiting threads. Since this thread has not been removed, m_numLeaving will
// be >= 1 until m_numLeaving is decremented at the end of this function.
- m_numThreads -= m_numRemoved;
- m_numLeaving = m_numThreads;
- m_numRemoved = 0;
+ m_numThreads = m_numThreads - m_numRemoved;
+ m_numLeaving = m_numThreads;
+ m_numRemoved = 0;
deMemoryReadWriteFence();
- m_numEntered = 0;
+ m_numEntered = 0;
}
else
{
if (deAtomicIncrement32(&m_numEntered) == cachedNumThreads)
{
// Release all waiting threads.
- m_numThreads -= m_numRemoved;
- m_numLeaving = m_numThreads;
- m_numRemoved = 0;
+ m_numThreads = m_numThreads - m_numRemoved;
+ m_numLeaving = m_numThreads;
+ m_numRemoved = 0;
deMemoryReadWriteFence();
- m_numEntered = 0;
+ m_numEntered = 0;
}
}
int m_count;
};
-class ExpandContext
-{
-public:
- ExpandContext (Counter& symCounter) : m_symCounter(symCounter) {}
- ExpandContext (const ExpandContext& parent)
- : m_symCounter(parent.m_symCounter) {}
-
- template<typename T>
- VariableP<T> genSym (const string& baseName)
- {
- return variable<T>(baseName + de::toString(m_symCounter()));
- }
-
- void addStatement (const StatementP& stmt)
- {
- m_statements.push_back(stmt);
- }
-
- vector<StatementP> getStatements (void) const
- {
- return m_statements;
- }
-private:
- Counter& m_symCounter;
- vector<StatementP> m_statements;
-};
-
/*--------------------------------------------------------------------*//*!
* \brief A statement or declaration.
*
StatementP (const Super& ptr) : Super(ptr) {}
};
+class ExpandContext
+{
+public:
+ ExpandContext (Counter& symCounter) : m_symCounter(symCounter) {}
+ ExpandContext (const ExpandContext& parent)
+ : m_symCounter(parent.m_symCounter) {}
+
+ template<typename T>
+ VariableP<T> genSym (const string& baseName)
+ {
+ return variable<T>(baseName + de::toString(m_symCounter()));
+ }
+
+ void addStatement (const StatementP& stmt)
+ {
+ m_statements.push_back(stmt);
+ }
+
+ vector<StatementP> getStatements (void) const
+ {
+ return m_statements;
+ }
+private:
+ Counter& m_symCounter;
+ vector<StatementP> m_statements;
+};
+
/*--------------------------------------------------------------------*//*!
* \brief
*