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:
Daniel R. Carvalho
2019-05-08 11:54:41 +02:00
committed by Daniel Carvalho
parent bb450fe0aa
commit 4ed2c5f745
12 changed files with 12 additions and 32 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -91,12 +91,6 @@ BulkBloomFilter::set(Addr addr)
m_filter[c1] = 1;
}
void
BulkBloomFilter::unset(Addr addr)
{
// not used
}
bool
BulkBloomFilter::isSet(Addr addr)
{

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -81,12 +81,6 @@ MultiGrainBloomFilter::set(Addr addr)
}
void
MultiGrainBloomFilter::unset(Addr addr)
{
// not used
}
bool
MultiGrainBloomFilter::isSet(Addr addr)
{

View File

@@ -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);

View File

@@ -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);