Website Summary Files Commits Branches @commit @diff @stats
path: root / gctest / gc_leak.cpp
diff options
context:
space:
mode:
Commit1f9b498405be032de2422440577f9a04dc7ad066 (patch)
Author
 Dimitar Trendafilov <trendafilov.dn@gmail.com>
2020-12-24 13:57:04 +0200
Committer
 Dimitar Trendafilov <trendafilov.dn@gmail.com>
2021-09-13 22:25:45 +0300
Files40f2ad8797a81f52d922c96cd7a271d0d2b9be9f /gctest/gc_leak.cpp
IPL-1f9b498405be032de2422440577f9a04dc7ad066.tar
IPL-1f9b498405be032de2422440577f9a04dc7ad066.tar.gz
IPL-1f9b498405be032de2422440577f9a04dc7ad066.zip
Parent22f2f181c2f8e3ba2c77656fa602fc599a27ad52 (diff)
Test bench app for garbage collectors
1 files changed, 25 insertions, 0 deletions
-rw-r--r--gctest/gc_leak.cpp25
diff --git a/gctest/gc_leak.cpp b/gctest/gc_leak.cpp
new file mode 100644
index 0000000..2a1b493
--- /dev/null
+++ b/gctest/gc_leak.cpp
@@ -0,0 +1,25 @@
+#include <memory>
+
+#include "gc.h"
+
+class LeakGC : public GarbageCollector
+{
+ void* Allocate(size_t size) override { return ::operator new(size); }
+
+ void SetRoot(Object* root) override { m_Root = root; }
+
+ void VisitReference(Object*, Object*, void*) override {}
+
+ void Shutdown() override
+ {
+ DestroyVisitor dv;
+ dv.Destroy(m_Root);
+ }
+
+ Object* m_Root;
+};
+
+std::unique_ptr<GarbageCollector> CreateGarbageCollector(int&, const char*[])
+{
+ return std::unique_ptr<GarbageCollector>(new LeakGC());
+}