59c59
< registers(numEntries), drainManager(NULL), allocated(0),
---
> registers(numEntries), allocated(0),
183c183
< if (drainManager && allocated == 0) {
---
> if (drainState() == DrainState::Draining && allocated == 0) {
187,189c187
< drainManager->signalDrainDone();
< drainManager = NULL;
< setDrainState(DrainState::Drained);
---
> signalDrainDone();
268,269c266,267
< unsigned int
< MSHRQueue::drain(DrainManager *dm)
---
> DrainState
> MSHRQueue::drain()
271,278c269
< if (allocated == 0) {
< setDrainState(DrainState::Drained);
< return 0;
< } else {
< drainManager = dm;
< setDrainState(DrainState::Draining);
< return 1;
< }
---
> return allocated == 0 ? DrainState::Drained : DrainState::Draining;