From 694672093ece3253c984d8809f64440022a82978 Mon Sep 17 00:00:00 2001
From: Gabe Black <gabeblack@google.com>
Date: Fri, 12 Jan 2018 16:16:56 -0800
Subject: sim: Simplify registerThreadContext a little bit.

The code in this function was a little convoluted. This change attempts
to simplify it a little bit to make it easier to read.

Change-Id: I1ae557b9fede47fa89a9ea550bd0af8ad242449f
Reviewed-on: https://gem5-review.googlesource.com/7421
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
---
 src/sim/system.cc | 26 +++++++++++---------------
 1 file changed, 11 insertions(+), 15 deletions(-)

(limited to 'src')

diff --git a/src/sim/system.cc b/src/sim/system.cc
index e720db07a..2f047f227 100644
--- a/src/sim/system.cc
+++ b/src/sim/system.cc
@@ -241,23 +241,19 @@ bool System::breakpoint()
 ContextID
 System::registerThreadContext(ThreadContext *tc, ContextID assigned)
 {
-    int id;
-    if (assigned == InvalidContextID) {
-        for (id = 0; id < threadContexts.size(); id++) {
-            if (!threadContexts[id])
-                break;
-        }
-
-        if (threadContexts.size() <= id)
-            threadContexts.resize(id + 1);
-    } else {
-        if (threadContexts.size() <= assigned)
-            threadContexts.resize(assigned + 1);
-        id = assigned;
+    int id = assigned;
+    if (id == InvalidContextID) {
+        // Find an unused context ID for this thread.
+        id = 0;
+        while (id < threadContexts.size() && threadContexts[id])
+            id++;
     }
 
-    if (threadContexts[id])
-        fatal("Cannot have two CPUs with the same id (%d)\n", id);
+    if (threadContexts.size() <= id)
+        threadContexts.resize(id + 1);
+
+    fatal_if(threadContexts[id],
+             "Cannot have two CPUs with the same id (%d)\n", id);
 
     threadContexts[id] = tc;
     _numContexts++;
-- 
cgit v1.2.3