sim: Add size to array unserialization error message
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Wed, 20 Feb 2019 10:05:29 +0000 (11:05 +0100)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Tue, 12 Mar 2019 14:20:50 +0000 (14:20 +0000)
Add both acquired and expected size information to array
unserialization error message.

Change-Id: Ic0a493c5a7860066eb992e9e91e7a4746b197579
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16542
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

src/sim/serialize.hh

index a45d1bbcdd3304559b7651b2041e13bae3dfb459..3d9f93e2fcf215c7975a87cb032953f89350a37c 100644 (file)
@@ -474,7 +474,15 @@ arrayParamOut(CheckpointOut &os, const std::string &name,
     os << "\n";
 }
 
-
+/**
+ * Extract values stored in the checkpoint, and assign them to the provided
+ * array container.
+ *
+ * @param cp The checkpoint to be parsed.
+ * @param name Name of the container.
+ * @param param The array container.
+ * @param size The expected number of entries to be extracted.
+ */
 template <class T>
 void
 arrayParamIn(CheckpointIn &cp, const std::string &name,
@@ -496,9 +504,9 @@ arrayParamIn(CheckpointIn &cp, const std::string &name,
     // Need this if we were doing a vector
     // value.resize(tokens.size());
 
-    if (tokens.size() != size) {
-        fatal("Array size mismatch on %s:%s'\n", section, name);
-    }
+    fatal_if(tokens.size() != size,
+             "Array size mismatch on %s:%s (Got %u, expected %u)'\n",
+             section, name, tokens.size(), size);
 
     for (std::vector<std::string>::size_type i = 0; i < tokens.size(); i++) {
         // need to parse into local variable to handle vector<bool>,