Use an instance counter to give Events repeatable IDs
in debugging mode (especially valuable for tracediff). --HG-- extra : convert_revision : 227434a06b5271a8300f2f6861bd06c4ac19e6c4
This commit is contained in:
@@ -53,6 +53,8 @@ using namespace std;
|
||||
//
|
||||
EventQueue mainEventQueue("MainEventQueue");
|
||||
|
||||
Counter Event::instanceCounter = 0;
|
||||
|
||||
void
|
||||
EventQueue::insert(Event *event)
|
||||
{
|
||||
|
||||
@@ -75,6 +75,18 @@ class Event : public Serializable, public FastAlloc
|
||||
friend class EventQueue;
|
||||
|
||||
private:
|
||||
|
||||
#ifndef NDEBUG
|
||||
/// Global counter to generate unique IDs for Event instances
|
||||
static Counter instanceCounter;
|
||||
|
||||
/// This event's unique ID. We can also use pointer values for
|
||||
/// this but they're not consistent across runs making debugging
|
||||
/// more difficult. Thus we use a global counter value when
|
||||
/// debugging.
|
||||
Counter instanceId;
|
||||
#endif // NDEBUG
|
||||
|
||||
/// queue to which this event belongs (though it may or may not be
|
||||
/// scheduled on this queue yet)
|
||||
EventQueue *queue;
|
||||
@@ -173,12 +185,19 @@ class Event : public Serializable, public FastAlloc
|
||||
#endif
|
||||
annotated_value(0)
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
instanceId = ++instanceCounter;
|
||||
#endif
|
||||
}
|
||||
|
||||
~Event() {}
|
||||
|
||||
virtual const std::string name() const {
|
||||
#ifndef NDEBUG
|
||||
return csprintf("Event_%d", instanceId);
|
||||
#else
|
||||
return csprintf("Event_%x", (uintptr_t)this);
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Determine if the current event is scheduled
|
||||
|
||||
Reference in New Issue
Block a user