Internals: Cleanup some statics, trivial part towards (#3419)
This commit is contained in:
parent
c3c46967dc
commit
99bdc27be3
|
|
@ -123,10 +123,6 @@ public:
|
||||||
protected:
|
protected:
|
||||||
friend class VerilatedCovContext;
|
friend class VerilatedCovContext;
|
||||||
virtual ~VerilatedCovImp() override { clearGuts(); }
|
virtual ~VerilatedCovImp() override { clearGuts(); }
|
||||||
static VerilatedCovImp& imp() VL_MT_SAFE {
|
|
||||||
static VerilatedCovImp s_singleton;
|
|
||||||
return s_singleton;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// PRIVATE METHODS
|
// PRIVATE METHODS
|
||||||
|
|
|
||||||
|
|
@ -228,7 +228,7 @@ void VlPgoProfiler<T_Entries>::write(const char* modelp, const std::string& file
|
||||||
// So when we have multiple models in an executable, possibly even
|
// So when we have multiple models in an executable, possibly even
|
||||||
// running on different threads, each will have a different symtab so
|
// running on different threads, each will have a different symtab so
|
||||||
// each will collect is own data correctly. However when each is
|
// each will collect is own data correctly. However when each is
|
||||||
// destroid we need to get all the data, not keep overwriting and only
|
// destroyed we need to get all the data, not keep overwriting and only
|
||||||
// get the last model's data.
|
// get the last model's data.
|
||||||
static bool s_firstCall = true;
|
static bool s_firstCall = true;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -289,7 +289,7 @@ public:
|
||||||
// Can't just overload operator[] or provide a "at" reference to set,
|
// Can't just overload operator[] or provide a "at" reference to set,
|
||||||
// because we need to be able to insert only when the value is set
|
// because we need to be able to insert only when the value is set
|
||||||
T_Value& at(int32_t index) {
|
T_Value& at(int32_t index) {
|
||||||
static T_Value s_throwAway;
|
static VL_THREAD_LOCAL T_Value s_throwAway;
|
||||||
// Needs to work for dynamic arrays, so does not use T_MaxSize
|
// Needs to work for dynamic arrays, so does not use T_MaxSize
|
||||||
if (VL_UNLIKELY(index < 0 || index >= m_deque.size())) {
|
if (VL_UNLIKELY(index < 0 || index >= m_deque.size())) {
|
||||||
s_throwAway = atDefault();
|
s_throwAway = atDefault();
|
||||||
|
|
@ -300,7 +300,7 @@ public:
|
||||||
}
|
}
|
||||||
// Accessing. Verilog: v = assoc[index]
|
// Accessing. Verilog: v = assoc[index]
|
||||||
const T_Value& at(int32_t index) const {
|
const T_Value& at(int32_t index) const {
|
||||||
static T_Value s_throwAway;
|
static VL_THREAD_LOCAL T_Value s_throwAway;
|
||||||
// Needs to work for dynamic arrays, so does not use T_MaxSize
|
// Needs to work for dynamic arrays, so does not use T_MaxSize
|
||||||
if (VL_UNLIKELY(index < 0 || index >= m_deque.size())) {
|
if (VL_UNLIKELY(index < 0 || index >= m_deque.size())) {
|
||||||
return atDefault();
|
return atDefault();
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,9 @@ public:
|
||||||
// To simplify our free list, we use a size large enough for all derived types
|
// To simplify our free list, we use a size large enough for all derived types
|
||||||
// We reserve word zero for the next pointer, as that's safer in case a
|
// We reserve word zero for the next pointer, as that's safer in case a
|
||||||
// dangling reference to the original remains around.
|
// dangling reference to the original remains around.
|
||||||
static const size_t chunk = 96;
|
static constexpr size_t CHUNK_SIZE = 96;
|
||||||
if (VL_UNCOVERABLE(size > chunk)) VL_FATAL_MT(__FILE__, __LINE__, "", "increase chunk");
|
if (VL_UNCOVERABLE(size > CHUNK_SIZE))
|
||||||
|
VL_FATAL_MT(__FILE__, __LINE__, "", "increase CHUNK_SIZE");
|
||||||
if (VL_LIKELY(t_freeHead)) {
|
if (VL_LIKELY(t_freeHead)) {
|
||||||
uint8_t* const newp = t_freeHead;
|
uint8_t* const newp = t_freeHead;
|
||||||
t_freeHead = *(reinterpret_cast<uint8_t**>(newp));
|
t_freeHead = *(reinterpret_cast<uint8_t**>(newp));
|
||||||
|
|
@ -90,7 +91,7 @@ public:
|
||||||
return newp + 8;
|
return newp + 8;
|
||||||
}
|
}
|
||||||
// +8: 8 bytes for next
|
// +8: 8 bytes for next
|
||||||
uint8_t* newp = reinterpret_cast<uint8_t*>(::operator new(chunk + 8));
|
uint8_t* newp = reinterpret_cast<uint8_t*>(::operator new(CHUNK_SIZE + 8));
|
||||||
*(reinterpret_cast<uint32_t*>(newp)) = activeMagic();
|
*(reinterpret_cast<uint32_t*>(newp)) = activeMagic();
|
||||||
return newp + 8;
|
return newp + 8;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue