summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-08-08 22:19:44 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-08-08 22:19:44 -0400
commit61b2516b9f7bcc0f7f03360a645a430db495aeee (patch)
tree08566e2813ee7c7ecd0775ef4ab3d4ace2aaceb2
parentcb0714c5ee6100b50423dcb2122c465542df793a (diff)
memory add flush function
-rw-r--r--src/memory.cpp11
-rw-r--r--src/memory.hpp1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/memory.cpp b/src/memory.cpp
index 775b30a..21780f2 100644
--- a/src/memory.cpp
+++ b/src/memory.cpp
@@ -94,3 +94,14 @@ void pke::EndTransientBucket(pke::MemBucket *bkt) {
bucketHead--;
}
}
+
+void pke::Flush() {
+ for (long i = bucketHead - 2; i > -1; --i) {
+ if (buckets[i].head != 0) break;
+ if (buckets[i+1].head != 0) break;
+ if (buckets[i].transient == true) break;
+ if (buckets[i+1].transient == true) break;
+ bucketHead--;
+ DestroyBucket(&buckets[i + 1]);
+ }
+}
diff --git a/src/memory.hpp b/src/memory.hpp
index 2a244f6..1d117f3 100644
--- a/src/memory.hpp
+++ b/src/memory.hpp
@@ -20,6 +20,7 @@ void PkeDelete(const void *ptr, std::size_t sz, MemBucket *bkt);
MemBucket *BeginTransientBucket(int64_t sz = DEFAULT_BUCKET_SIZE); // 256MB
void EndTransientBucket(MemBucket *bkt);
+void Flush();
template <typename T>
inline T *PkeNew() {