Website Summary Files Commits Branches @commit @diff @stats
path: root / gctest / src / gc_leak.cpp
diff options
context:
space:
mode:
Commit22b321bb4497543493010f57587c7a9dceb839b6 (patch)
Author
 dtrendafilov <trendafilov.dn@gmail.com>
2021-09-21 22:48:52 +0300
Committer
 GitHub <noreply@github.com>
2021-09-21 22:48:52 +0300
Files672d53f7d257df54d2222252bd2441f12b3be950 /gctest/src/gc_leak.cpp
IPL-22b321bb4497543493010f57587c7a9dceb839b6.tar
IPL-22b321bb4497543493010f57587c7a9dceb839b6.tar.gz
IPL-22b321bb4497543493010f57587c7a9dceb839b6.zip
Parentf110794b0d57e47e335ae5eeffbb18a7a80580ad (diff)
Parent2f9dea35cff40a676b4603b8ffbd1f2669a4195a (diff)
Merge pull request #115 from SofiaCPP/feature/gctest
Add app to test GC implementations
1 files changed, 25 insertions, 0 deletions
-rw-r--r--gctest/src/gc_leak.cpp25
diff --git a/gctest/src/gc_leak.cpp b/gctest/src/gc_leak.cpp
new file mode 100644
index 0000000..dbb7ad3
--- /dev/null
+++ b/gctest/src/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, char*[])
+{
+ return std::unique_ptr<GarbageCollector>(new LeakGC());
+}