test/hotspot/gtest/metaspace/metaspaceTestsCommon.hpp
branchstuefe-new-metaspace-branch
changeset 59271 1558266946de
parent 59238 6ce12ce00d3e
--- a/test/hotspot/gtest/metaspace/metaspaceTestsCommon.hpp	Mon Nov 25 16:35:14 2019 +0100
+++ b/test/hotspot/gtest/metaspace/metaspaceTestsCommon.hpp	Tue Nov 26 11:29:20 2019 +0100
@@ -227,5 +227,33 @@
 
 size_t get_workingset_size();
 
+// A simple preallocated buffer used to "feed" someone.
+// Mimicks chunk retirement leftover blocks.
+class FeederBuffer {
+
+  MetaWord* _buf;
+  const size_t _size;
+  size_t _used;
+
+public:
+
+  FeederBuffer(size_t size) : _buf(NULL), _size(size), _used(0) {
+    _buf = NEW_C_HEAP_ARRAY(MetaWord, _size, mtInternal);
+  }
+
+  ~FeederBuffer() {
+    FREE_C_HEAP_ARRAY(MetaWord, _buf);
+  }
+
+  MetaWord* get(size_t word_size) {
+    if (_used > (_size - word_size)) {
+      return NULL;
+    }
+    MetaWord* p = _buf + _used;
+    _used += word_size;
+    return p;
+  }
+
+};
 
 #endif // GTEST_METASPACE_METASPACETESTCOMMON_HPP