cpu: Remove unused deallocateContext calls
authorMitch Hayenga <mitch.hayenga@arm.com>
Sat, 20 Sep 2014 21:18:36 +0000 (17:18 -0400)
committerMitch Hayenga <mitch.hayenga@arm.com>
Sat, 20 Sep 2014 21:18:36 +0000 (17:18 -0400)
The call paths for de-scheduling a thread are halt() and suspend(), from
the thread context. There is no call to deallocateContext() in general,
though some CPUs chose to define it. This patch removes the function
from BaseCPU and the cores which do not require it.

src/cpu/base.hh
src/cpu/inorder/inorder_dyn_inst.cc
src/cpu/inorder/inorder_dyn_inst.hh
src/cpu/inorder/thread_context.hh
src/cpu/o3/cpu.cc
src/cpu/o3/cpu.hh
src/cpu/simple/base.cc
src/cpu/simple/base.hh

index ac3d1d89263b57ab351c07a6287b6f77f811d503..a124b4282b47638e53de1c340d89ad6bfdb94724 100644 (file)
@@ -257,9 +257,6 @@ class BaseCPU : public MemObject
     /// Notify the CPU that the indicated context is now suspended.
     virtual void suspendContext(ThreadID thread_num) {}
 
-    /// Notify the CPU that the indicated context is now deallocated.
-    virtual void deallocateContext(ThreadID thread_num) {}
-
     /// Notify the CPU that the indicated context is now halted.
     virtual void haltContext(ThreadID thread_num) {}
 
index 08f5833389646dd2315f09bd1696d03246b16828..adde35fdfd0e08a34a60b4e53c380cd056382cbd 100644 (file)
@@ -571,12 +571,6 @@ InOrderDynInst::setRegOtherThread(int reg_idx, MiscReg val, ThreadID tid)
     }
 }
 
-void
-InOrderDynInst::deallocateContext(int thread_num)
-{
-    this->cpu->deallocateContext(thread_num);
-}
-
 Fault
 InOrderDynInst::readMem(Addr addr, uint8_t *data,
                         unsigned size, unsigned flags)
index 7558df7d1def63d0d256ad8664b5e5b7bf15682b..053a72d1d011f7d7e0e625e944bde0a3eb8c1498 100644 (file)
@@ -531,13 +531,6 @@ class InOrderDynInst : public ExecContext, public RefCounted
     /** Emulates a syscall. */
     void syscall(int64_t callnum);
 
-    ////////////////////////////////////////////////////////////
-    //
-    // MULTITHREADING INTERFACE TO CPU MODELS
-    //
-    ////////////////////////////////////////////////////////////
-    virtual void deallocateContext(int thread_num);
-
     ////////////////////////////////////////////////////////////
     //
     //  PROGRAM COUNTERS - PC/NPC/NPC
index e29b8f2735c172dda96bc10e579a1d59e028e715..7b1dc833f1176ee78129d6b2d64020b35f3bd3cd 100644 (file)
@@ -281,9 +281,6 @@ class InOrderThreadContext : public ThreadContext
     void activateContext()
     { cpu->activateContext(thread->threadId()); }
 
-    void deallocateContext()
-    { cpu->deallocateContext(thread->threadId()); }
-
     /** Returns the number of consecutive store conditional failures. */
     // @todo: Figure out where these store cond failures should go.
     unsigned readStCondFailures()
index 2ae18553255425cfb2b97bb8dfcdbb3baf45c63d..7ed3944cf7690445e8f80c0f971ebed652893f79 100644 (file)
@@ -728,22 +728,14 @@ FullO3CPU<Impl>::activateContext(ThreadID tid)
     }
 }
 
-template <class Impl>
-void
-FullO3CPU<Impl>::deallocateContext(ThreadID tid, bool remove)
-{
-    deactivateThread(tid);
-    if (remove)
-        removeThread(tid);
-}
-
 template <class Impl>
 void
 FullO3CPU<Impl>::suspendContext(ThreadID tid)
 {
     DPRINTF(O3CPU,"[tid: %i]: Suspending Thread Context.\n", tid);
     assert(!switchedOut());
-    deallocateContext(tid, false);
+
+    deactivateThread(tid);
 
     // If this was the last thread then unschedule the tick event.
     if (activeThreads.size() == 0)
@@ -761,7 +753,9 @@ FullO3CPU<Impl>::haltContext(ThreadID tid)
     //For now, this is the same as deallocate
     DPRINTF(O3CPU,"[tid:%i]: Halt Context called. Deallocating", tid);
     assert(!switchedOut());
-    deallocateContext(tid, true);
+
+    deactivateThread(tid);
+    removeThread(tid);
 }
 
 template <class Impl>
index 0fd08a68bc96222e5fa067771fed741e6e23f0dc..c263790cea4166366dbcae1fbc68e30bf8033911 100644 (file)
@@ -325,11 +325,6 @@ class FullO3CPU : public BaseO3CPU
     /** Remove Thread from Active Threads List */
     void suspendContext(ThreadID tid);
 
-    /** Remove Thread from Active Threads List &&
-     *  Possibly Remove Thread Context from CPU.
-     */
-    void deallocateContext(ThreadID tid, bool remove);
-
     /** Remove Thread from Active Threads List &&
      *  Remove Thread Context from CPU.
      */
index 5130e2960b65d5ff4bfd9ceaa22c87227802c729..6101ff30f6a570ee7a8b8a570993f9d975d98d19 100644 (file)
@@ -132,14 +132,6 @@ BaseSimpleCPU::~BaseSimpleCPU()
 {
 }
 
-void
-BaseSimpleCPU::deallocateContext(ThreadID thread_num)
-{
-    // for now, these are equivalent
-    suspendContext(thread_num);
-}
-
-
 void
 BaseSimpleCPU::haltContext(ThreadID thread_num)
 {
index 43d96fbeb7bdef852defbabeb21cd043d4d13fb8..8f38a33c8810a635cda954a05bee111b66bb5595 100644 (file)
@@ -170,7 +170,6 @@ class BaseSimpleCPU : public BaseCPU, public ExecContext
     void postExecute();
     void advancePC(const Fault &fault);
 
-    virtual void deallocateContext(ThreadID thread_num);
     virtual void haltContext(ThreadID thread_num);
 
     // statistics