inorder: clear reg. dep entry after removing from list
authorKorey Sewell <ksewell@umich.edu>
Mon, 20 Jun 2011 01:43:42 +0000 (21:43 -0400)
committerKorey Sewell <ksewell@umich.edu>
Mon, 20 Jun 2011 01:43:42 +0000 (21:43 -0400)
this will safeguard future code from trying to remove
from the list twice. That code wouldnt break but would
waste time.

src/cpu/inorder/inorder_dyn_inst.hh
src/cpu/inorder/reg_dep_map.cc

index c2d37d716feacdd1ab77c5ad3a3740fa1e947c61..205bb0f822c6d493a8098ab8eac4ff6a2c85ccb7 100644 (file)
@@ -943,6 +943,9 @@ class InOrderDynInst : public FastAlloc, public RefCounted
     /** Sets this instruction as entered on the CPU Reg Dep Map */
     void setRegDepEntry() { status.set(RegDepMapEntry); }
 
+    /** Unsets this instruction as entered on the CPU Reg Dep Map */
+    void clearRegDepEntry() { status.reset(RegDepMapEntry); }
+
     /** Returns whether or not the entry is on the CPU Reg Dep Map */
     bool isRegDepEntry() const { return status[RegDepMapEntry]; }
 
index 2f8a2924c7197706d182727422fe9421366f2e59..fa2cc8dafa74d33790cea97b84fd3560c66b3407 100644 (file)
@@ -157,6 +157,8 @@ RegDepMap::remove(DynInstPtr inst)
 
             remove(reg_type, flat_idx, inst);
         }
+
+        inst->clearRegDepEntry();
     }
 }