mem-ruby: Standardize Bloom Filter deletion support
Standard Bloom Filters do not support element deletion by default, however some variants do. Allow calling the unset function with all filters, and do nothing by default. Change-Id: Icf4b0f8b997c4c70fa714b2576474810275db78b Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18730 Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
This commit is contained in:
committed by
Daniel Carvalho
parent
bb450fe0aa
commit
4ed2c5f745
@@ -40,7 +40,15 @@ class AbstractBloomFilter
|
||||
virtual void clear() = 0;
|
||||
virtual void merge(AbstractBloomFilter * other_filter) = 0;
|
||||
virtual void set(Addr addr) = 0;
|
||||
virtual void unset(Addr addr) = 0;
|
||||
|
||||
/**
|
||||
* Perform the filter specific function to clear the corresponding
|
||||
* entries (can be multiple) of an address. By default a bloom
|
||||
* filter does not support element deletion.
|
||||
*
|
||||
* @param addr The address being parsed.
|
||||
*/
|
||||
virtual void unset(Addr addr) {};
|
||||
|
||||
virtual bool isSet(Addr addr) = 0;
|
||||
virtual int getCount(Addr addr) = 0;
|
||||
|
||||
@@ -44,7 +44,7 @@ class BlockBloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
void unset(Addr addr) override;
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
@@ -91,12 +91,6 @@ BulkBloomFilter::set(Addr addr)
|
||||
m_filter[c1] = 1;
|
||||
}
|
||||
|
||||
void
|
||||
BulkBloomFilter::unset(Addr addr)
|
||||
{
|
||||
// not used
|
||||
}
|
||||
|
||||
bool
|
||||
BulkBloomFilter::isSet(Addr addr)
|
||||
{
|
||||
|
||||
@@ -44,7 +44,6 @@ class BulkBloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
@@ -423,12 +423,6 @@ H3BloomFilter::set(Addr addr)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
H3BloomFilter::unset(Addr addr)
|
||||
{
|
||||
panic("ERROR: Unset should never be called in a Bloom filter");
|
||||
}
|
||||
|
||||
bool
|
||||
H3BloomFilter::isSet(Addr addr)
|
||||
{
|
||||
|
||||
@@ -44,7 +44,6 @@ class H3BloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
@@ -44,7 +44,7 @@ class LSB_CountingBloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
void unset(Addr addr) override;
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
@@ -78,12 +78,6 @@ MultiBitSelBloomFilter::set(Addr addr)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MultiBitSelBloomFilter::unset(Addr addr)
|
||||
{
|
||||
panic("ERROR: Unset should never be called in a Bloom filter");
|
||||
}
|
||||
|
||||
bool
|
||||
MultiBitSelBloomFilter::isSet(Addr addr)
|
||||
{
|
||||
|
||||
@@ -46,7 +46,6 @@ class MultiBitSelBloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
@@ -81,12 +81,6 @@ MultiGrainBloomFilter::set(Addr addr)
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
MultiGrainBloomFilter::unset(Addr addr)
|
||||
{
|
||||
// not used
|
||||
}
|
||||
|
||||
bool
|
||||
MultiGrainBloomFilter::isSet(Addr addr)
|
||||
{
|
||||
|
||||
@@ -44,7 +44,6 @@ class MultiGrainBloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
@@ -44,7 +44,7 @@ class NonCountingBloomFilter : public AbstractBloomFilter
|
||||
void clear();
|
||||
void merge(AbstractBloomFilter * other_filter);
|
||||
void set(Addr addr);
|
||||
void unset(Addr addr);
|
||||
void unset(Addr addr) override;
|
||||
|
||||
bool isSet(Addr addr);
|
||||
int getCount(Addr addr);
|
||||
|
||||
Reference in New Issue
Block a user