summaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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();
}
}