One of my personal pet peeves is having code in the tree that's
commented out.  Is there any reason to do this with a revision control
system?  Either the code is good and should be kept, or it should just
be deleted and live in the history.

  Nate

On Mon, Sep 14, 2009 at 3:14 PM, Derek Hower <d...@cs.wisc.edu> wrote:
> # HG changeset patch
> # User Derek Hower <d...@cs.wisc.edu>
> # Date 1251212987 18000
> # Node ID c47323cc8f988feaf0718626f80a1b7a5bdca18f
> # Parent  79d81f0b6217455b4f7586f53693f139285771a6
> ruby: CacheMemory tag lookup uses a hash instead of a loop
>
> diff --git a/src/mem/ruby/system/CacheMemory.hh 
> b/src/mem/ruby/system/CacheMemory.hh
> --- a/src/mem/ruby/system/CacheMemory.hh
> +++ b/src/mem/ruby/system/CacheMemory.hh
> @@ -156,6 +156,7 @@
>
>   // The first index is the # of cache lines.
>   // The second index is the the amount associativity.
> +  m5::hash_map<Address, int> m_tag_index;
>   Vector<Vector<AbstractCacheEntry*> > m_cache;
>   Vector<Vector<int> > m_locked;
>
> @@ -286,6 +287,12 @@
>  {
>   assert(tag == line_address(tag));
>   // search the set for the tags
> +  m5::hash_map<Address, int>::const_iterator it = m_tag_index.find(tag);
> +  if (it != m_tag_index.end())
> +    if (m_cache[cacheSet][it->second]->m_Permission != 
> AccessPermission_NotPresent)
> +      return it->second;
> +  return -1; // Not found
> +  /*
>   for (int i=0; i < m_cache_assoc; i++) {
>     if ((m_cache[cacheSet][i] != NULL) &&
>         (m_cache[cacheSet][i]->m_Address == tag) &&
> @@ -294,6 +301,7 @@
>     }
>   }
>   return -1; // Not found
> +  */
>  }
>
>  // Given a cache index: returns the index of the tag in a set.
> @@ -303,11 +311,19 @@
>  {
>   assert(tag == line_address(tag));
>   // search the set for the tags
> +  m5::hash_map<Address, int>::const_iterator it = m_tag_index.find(tag);
> +  if (it != m_tag_index.end())
> +    return it->second;
> +  return -1; // Not found
> +  /*
> +  assert(tag == line_address(tag));
> +  // search the set for the tags
>   for (int i=0; i < m_cache_assoc; i++) {
>     if (m_cache[cacheSet][i] != NULL && m_cache[cacheSet][i]->m_Address == 
> tag)
>       return i;
>   }
>   return -1; // Not found
> +  */
>  }
>
>  // PUBLIC METHODS
> @@ -418,6 +434,7 @@
>       m_cache[cacheSet][i]->m_Address = address;
>       m_cache[cacheSet][i]->m_Permission = AccessPermission_Invalid;
>       m_locked[cacheSet][i] = -1;
> +      m_tag_index[address] = i;
>
>       m_replacementPolicy_ptr->touch(cacheSet, i, 
> g_eventQueue_ptr->getTime());
>
> @@ -439,6 +456,7 @@
>     delete m_cache[cacheSet][location];
>     m_cache[cacheSet][location] = NULL;
>     m_locked[cacheSet][location] = -1;
> +    m_tag_index.erase(address);
>   }
>  }
>
> _______________________________________________
> m5-dev mailing list
> m5-dev@m5sim.org
> http://m5sim.org/mailman/listinfo/m5-dev
>
>
_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to