33 #include "params/SecondChanceRP.hh"
44 const std::shared_ptr<SecondChanceReplData>& replacement_data)
const
50 replacement_data->hasSecondChance =
false;
55 const std::shared_ptr<ReplacementData>& replacement_data)
const
60 std::static_pointer_cast<SecondChanceReplData>(
61 replacement_data)->hasSecondChance =
false;
66 const std::shared_ptr<ReplacementData>& replacement_data)
const
71 std::static_pointer_cast<SecondChanceReplData>(
72 replacement_data)->hasSecondChance =
true;
77 const std::shared_ptr<ReplacementData>& replacement_data)
const
82 std::static_pointer_cast<SecondChanceReplData>(
83 replacement_data)->hasSecondChance =
false;
90 assert(candidates.size() > 0);
93 for (
const auto& candidate : candidates) {
95 std::shared_ptr<SecondChanceReplData> candidate_replacement_data =
96 std::static_pointer_cast<SecondChanceReplData>(
97 candidate->replacementData);
100 if ((candidate_replacement_data->tickInserted ==
Tick(0)) &&
101 !candidate_replacement_data->hasSecondChance) {
108 bool search_victim =
true;
109 while (search_victim) {
114 std::shared_ptr<SecondChanceReplData> victim_replacement_data =
115 std::static_pointer_cast<SecondChanceReplData>(
119 if (victim_replacement_data->hasSecondChance) {
123 search_victim =
false;
130 std::shared_ptr<ReplacementData>