Thread: Use inherited baseCpu rather than cpu in SimpleThread
authorAndreas Hansson <andreas.hanson@arm.com>
Tue, 31 Jan 2012 16:50:07 +0000 (11:50 -0500)
committerAndreas Hansson <andreas.hanson@arm.com>
Tue, 31 Jan 2012 16:50:07 +0000 (11:50 -0500)
This patch is a trivial simplification, removing the cpu pointer from
SimpleThread and relying on the baseCpu pointer in ThreadState. The
patch does not add or change any functionality, it merely cleans up
the code.

src/cpu/simple_thread.cc
src/cpu/simple_thread.hh
src/cpu/thread_state.hh

index 2541bdee1e2831300345917fc531b02fa5503cca..8e7127269f69000733f941cb7785649bd971ba3f 100644 (file)
@@ -67,7 +67,7 @@ SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys,
                            TheISA::TLB *_itb, TheISA::TLB *_dtb,
                            bool use_kernel_stats)
     : ThreadState(_cpu, _thread_num),
-      cpu(_cpu), system(_sys), itb(_itb), dtb(_dtb)
+      system(_sys), itb(_itb), dtb(_dtb)
 
 {
     tc = new ProxyThreadContext<SimpleThread>(this);
@@ -76,7 +76,7 @@ SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys,
 
     clearArchRegs();
 
-    if (cpu->params()->profile) {
+    if (baseCpu->params()->profile) {
         profile = new FunctionProfile(system->kernelSymtab);
         Callback *cb =
             new MakeCallback<SimpleThread,
@@ -97,7 +97,7 @@ SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, System *_sys,
 SimpleThread::SimpleThread(BaseCPU *_cpu, int _thread_num, Process *_process,
                            TheISA::TLB *_itb, TheISA::TLB *_dtb)
     : ThreadState(_cpu, _thread_num, _process),
-      cpu(_cpu), itb(_itb), dtb(_dtb)
+      itb(_itb), dtb(_dtb)
 {
     clearArchRegs();
     tc = new ProxyThreadContext<SimpleThread>(this);
@@ -196,7 +196,7 @@ SimpleThread::serialize(ostream &os)
     // 
     // Now must serialize all the ISA dependent state
     //
-    isa.serialize(cpu, os);
+    isa.serialize(baseCpu, os);
 }
 
 
@@ -212,14 +212,15 @@ SimpleThread::unserialize(Checkpoint *cp, const std::string &section)
     // 
     // Now must unserialize all the ISA dependent state
     //
-    isa.unserialize(cpu, cp, section);
+    isa.unserialize(baseCpu, cp, section);
 }
 
 #if FULL_SYSTEM
 void
 SimpleThread::dumpFuncProfile()
 {
-    std::ostream *os = simout.create(csprintf("profile.%s.dat", cpu->name()));
+    std::ostream *os = simout.create(csprintf("profile.%s.dat",
+                                              baseCpu->name()));
     profile->dump(tc, *os);
 }
 #endif
@@ -240,7 +241,7 @@ SimpleThread::activate(int delay)
     _status = ThreadContext::Active;
 
     // status() == Suspended
-    cpu->activateContext(_threadId, delay);
+    baseCpu->activateContext(_threadId, delay);
 }
 
 void
@@ -261,7 +262,7 @@ SimpleThread::suspend()
 #endif
 */
     _status = ThreadContext::Suspended;
-    cpu->suspendContext(_threadId);
+    baseCpu->suspendContext(_threadId);
 }
 
 
@@ -272,7 +273,7 @@ SimpleThread::halt()
         return;
 
     _status = ThreadContext::Halted;
-    cpu->haltContext(_threadId);
+    baseCpu->haltContext(_threadId);
 }
 
 
index b8dae5d01b939db354b320ba961859f1e57695ae..46ed92ce8bd6cf539ad6397e5a92e91d2b854676 100644 (file)
@@ -127,12 +127,9 @@ class SimpleThread : public ThreadState
   public:
     std::string name() const
     {
-        return csprintf("%s.[tid:%i]", cpu->name(), tc->threadId());
+        return csprintf("%s.[tid:%i]", baseCpu->name(), tc->threadId());
     }
 
-    // pointer to CPU associated with this SimpleThread
-    BaseCPU *cpu;
-
     ProxyThreadContext<SimpleThread> *tc;
 
     System *system;
@@ -207,7 +204,7 @@ class SimpleThread : public ThreadState
      * ThreadContext interface functions.
      ******************************************/
 
-    BaseCPU *getCpuPtr() { return cpu; }
+    BaseCPU *getCpuPtr() { return baseCpu; }
 
     TheISA::TLB *getITBPtr() { return itb; }
 
index a007567c1d38649b8803ff0fd33e36d1a91bc2f5..f14daaeb8a1bf83119fe9deb6def399d367b52b3 100644 (file)
@@ -73,7 +73,7 @@ struct ThreadState {
     ThreadState(BaseCPU *cpu, ThreadID _tid, Process *_process);
 #endif
 
-    ~ThreadState();
+    virtual ~ThreadState();
 
     void serialize(std::ostream &os);