summaryrefslogtreecommitdiff
path: root/sim/serialize.cc
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2006-05-12 17:47:23 -0400
committerAli Saidi <saidi@eecs.umich.edu>2006-05-12 17:47:23 -0400
commit7929b9ee19b6fabc7e69b704fa07fdb6daa35c70 (patch)
tree0a3a392d8a8d5b01ddbf25d9425845532a5b88ca /sim/serialize.cc
parentd1e6f4820331055b71cdc160f870253efc74d49d (diff)
downloadgem5-7929b9ee19b6fabc7e69b704fa07fdb6daa35c70.tar.xz
fix the checkpoint bug
--HG-- extra : convert_revision : 1ccae3282737d70b14ff86c8647e2e662a42c3bc
Diffstat (limited to 'sim/serialize.cc')
-rw-r--r--sim/serialize.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/sim/serialize.cc b/sim/serialize.cc
index ec7241498..c4ef124bb 100644
--- a/sim/serialize.cc
+++ b/sim/serialize.cc
@@ -51,8 +51,9 @@
using namespace std;
-int Serializable::maxCount = 0;
-int Serializable::count = 0;
+int Serializable::ckptMaxCount = 0;
+int Serializable::ckptCount = 0;
+int Serializable::ckptPrevCount = -1;
void
Serializable::nameOut(ostream &os)
@@ -241,8 +242,11 @@ Serializable::serializeAll()
globals.serialize(outstream);
SimObject::serializeAll(outstream);
- if (maxCount && ++count >= maxCount)
+ assert(Serializable::ckptPrevCount + 1 == Serializable::ckptCount);
+ Serializable::ckptPrevCount++;
+ if (ckptMaxCount && ++ckptCount >= ckptMaxCount)
SimExit(curTick + 1, "Maximum number of checkpoints dropped");
+
}
@@ -352,7 +356,7 @@ SerializeParamContext::checkParams()
if (serialize_cycle > 0)
Checkpoint::setup(serialize_cycle, serialize_period);
- Serializable::maxCount = serialize_count;
+ Serializable::ckptMaxCount = serialize_count;
}
void