97c97
< SimObject(p), reqLookupResult(cachedLocations.end()), retryItem{0, 0},
---
> SimObject(p), reqLookupResult(cachedLocations.end()),
263a264
>
265,266c266,269
< * Iterator used to store the result from lookupRequest until we
< * call finishRequest.
---
> * A request lookup must be followed by a call to finishRequest to inform
> * the operation's success. If a retry is needed, however, all changes
> * made to the snoop filter while performing the lookup must be undone.
> * This structure keeps track of the state previous to such changes.
268,274c271,294
< SnoopFilterCache::iterator reqLookupResult;
< /**
< * Variable to temporarily store value of snoopfilter entry
< * incase finishRequest needs to undo changes made in lookupRequest
< * (because of crossbar retry)
< */
< SnoopItem retryItem;
---
> struct ReqLookupResult {
> /** Iterator used to store the result from lookupRequest. */
> SnoopFilterCache::iterator it;
>
> /**
> * Variable to temporarily store value of snoopfilter entry
> * in case finishRequest needs to undo changes made in lookupRequest
> * (because of crossbar retry)
> */
> SnoopItem retryItem;
>
> /**
> * The constructor must be informed of the internal cache's end
> * iterator, so do not allow the compiler to implictly define it.
> *
> * @param end_it Iterator to the end of the internal cache.
> */
> ReqLookupResult(SnoopFilterCache::iterator end_it)
> : it(end_it), retryItem{0, 0}
> {
> }
> ReqLookupResult() = delete;
> } reqLookupResult;
>