AddressProfiler.cc (7456:8b9be6e12c9b) AddressProfiler.cc (8164:b043c0efa024)
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 243 unchanged lines hidden (view full) ---

252 indirection_set.addSet(sharers);
253 indirection_set.addSet(owner);
254 indirection_set.remove(requestor);
255 int num_indirections = indirection_set.count();
256
257 m_getx_sharing_histogram.add(num_indirections);
258 bool indirection_miss = (num_indirections > 0);
259
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 243 unchanged lines hidden (view full) ---

252 indirection_set.addSet(sharers);
253 indirection_set.addSet(owner);
254 indirection_set.remove(requestor);
255 int num_indirections = indirection_set.count();
256
257 m_getx_sharing_histogram.add(num_indirections);
258 bool indirection_miss = (num_indirections > 0);
259
260 addTraceSample(datablock, PC, CacheRequestType_ST, AccessModeType(0),
260 addTraceSample(datablock, PC, CacheRequestType_ST, RubyAccessMode(0),
261 requestor, indirection_miss);
262}
263
264void
265AddressProfiler::profileGetS(const Address& datablock, const Address& PC,
266 const Set& owner, const Set& sharers,
267 NodeID requestor)
268{
269 Set indirection_set;
270 indirection_set.addSet(owner);
271 indirection_set.remove(requestor);
272 int num_indirections = indirection_set.count();
273
274 m_gets_sharing_histogram.add(num_indirections);
275 bool indirection_miss = (num_indirections > 0);
276
261 requestor, indirection_miss);
262}
263
264void
265AddressProfiler::profileGetS(const Address& datablock, const Address& PC,
266 const Set& owner, const Set& sharers,
267 NodeID requestor)
268{
269 Set indirection_set;
270 indirection_set.addSet(owner);
271 indirection_set.remove(requestor);
272 int num_indirections = indirection_set.count();
273
274 m_gets_sharing_histogram.add(num_indirections);
275 bool indirection_miss = (num_indirections > 0);
276
277 addTraceSample(datablock, PC, CacheRequestType_LD, AccessModeType(0),
277 addTraceSample(datablock, PC, CacheRequestType_LD, RubyAccessMode(0),
278 requestor, indirection_miss);
279}
280
281void
282AddressProfiler::addTraceSample(Address data_addr, Address pc_addr,
283 CacheRequestType type,
278 requestor, indirection_miss);
279}
280
281void
282AddressProfiler::addTraceSample(Address data_addr, Address pc_addr,
283 CacheRequestType type,
284 AccessModeType access_mode, NodeID id,
284 RubyAccessMode access_mode, NodeID id,
285 bool sharing_miss)
286{
287 if (m_all_instructions) {
288 if (sharing_miss) {
289 m_sharing_miss_counter++;
290 }
291
292 // record data address trace info

--- 39 unchanged lines hidden ---
285 bool sharing_miss)
286{
287 if (m_all_instructions) {
288 if (sharing_miss) {
289 m_sharing_miss_counter++;
290 }
291
292 // record data address trace info

--- 39 unchanged lines hidden ---