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