summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2011-06-19 21:43:42 -0400
committerKorey Sewell <ksewell@umich.edu>2011-06-19 21:43:42 -0400
commit477e7039b36dc816bf1116631ace714d0c83dd21 (patch)
treeb2891e5ea1f7b27fe3f7d8384e3df0f29b5b252b
parentb963b339b9d0f5a4583e62f32766f085ad95529e (diff)
downloadgem5-477e7039b36dc816bf1116631ace714d0c83dd21.tar.xz
inorder: clear reg. dep entry after removing from list
this will safeguard future code from trying to remove from the list twice. That code wouldnt break but would waste time.
-rw-r--r--src/cpu/inorder/inorder_dyn_inst.hh3
-rw-r--r--src/cpu/inorder/reg_dep_map.cc2
2 files changed, 5 insertions, 0 deletions
diff --git a/src/cpu/inorder/inorder_dyn_inst.hh b/src/cpu/inorder/inorder_dyn_inst.hh
index c2d37d716..205bb0f82 100644
--- a/src/cpu/inorder/inorder_dyn_inst.hh
+++ b/src/cpu/inorder/inorder_dyn_inst.hh
@@ -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]; }
diff --git a/src/cpu/inorder/reg_dep_map.cc b/src/cpu/inorder/reg_dep_map.cc
index 2f8a2924c..fa2cc8daf 100644
--- a/src/cpu/inorder/reg_dep_map.cc
+++ b/src/cpu/inorder/reg_dep_map.cc
@@ -157,6 +157,8 @@ RegDepMap::remove(DynInstPtr inst)
remove(reg_type, flat_idx, inst);
}
+
+ inst->clearRegDepEntry();
}
}