32d31
< #include "mem/gems_common/Map.hh"
35d33
< #include "mem/ruby/profiler/AccessTraceForAddress.hh"
47c45
< lookupTraceForAddress(const Address& addr, AddressMap* record_map)
---
> lookupTraceForAddress(const Address& addr, AddressMap& record_map)
49,50c47,60
< if (!record_map->exist(addr)) {
< record_map->add(addr, AccessTraceForAddress(addr));
---
> // we create a static default object here that is used to insert
> // since the insertion will create a copy of the object in the
> // process. Perhaps this is optimizing early, but it doesn't seem
> // like it could hurt.
> static const AccessTraceForAddress dflt;
>
> pair<AddressMap::iterator, bool> r =
> record_map.insert(make_pair(addr, dflt));
> AddressMap::iterator i = r.first;
> AccessTraceForAddress &access_trace = i->second;
> if (r.second) {
> // there was nothing there and the insert succeed, so we need
> // to actually set the address.
> access_trace.setAddress(addr);
52c62,63
< return record_map->lookup(addr);
---
>
> return access_trace;
56c67
< printSorted(ostream& out, int num_of_sequencers, const AddressMap* record_map,
---
> printSorted(ostream& out, int num_of_sequencers, const AddressMap &record_map,
62,65c73,78
< PrioHeap<AccessTraceForAddress*> heap;
< std::vector<Address> keys = record_map->keys();
< for (int i = 0; i < keys.size(); i++) {
< AccessTraceForAddress* record = &(record_map->lookup(keys[i]));
---
> PrioHeap<const AccessTraceForAddress*> heap;
>
> AddressMap::const_iterator i = record_map.begin();
> AddressMap::const_iterator end = record_map.end();
> for (; i != end; ++i) {
> const AccessTraceForAddress* record = &i->second;
70c83,84
< out << "Total_entries_" << description << ": " << keys.size() << endl;
---
> out << "Total_entries_" << description << ": " << record_map.size()
> << endl;
96c110
< AccessTraceForAddress* record = heap.extractMin();
---
> const AccessTraceForAddress* record = heap.extractMin();
107c121
< AccessTraceForAddress* record = heap.extractMin();
---
> const AccessTraceForAddress* record = heap.extractMin();
133,136d146
< m_dataAccessTrace = new AddressMap;
< m_macroBlockAccessTrace = new AddressMap;
< m_programCounterAccessTrace = new AddressMap;
< m_retryProfileMap = new AddressMap;
143,146d152
< delete m_dataAccessTrace;
< delete m_macroBlockAccessTrace;
< delete m_programCounterAccessTrace;
< delete m_retryProfileMap;
228,231c234,237
< m_dataAccessTrace->clear();
< m_macroBlockAccessTrace->clear();
< m_programCounterAccessTrace->clear();
< m_retryProfileMap->clear();
---
> m_dataAccessTrace.clear();
> m_macroBlockAccessTrace.clear();
> m_programCounterAccessTrace.clear();
> m_retryProfileMap.clear();