Website Summary Files Commits Branches @commit @diff @stats
path: root / gctest / src / gc_leak.cpp
blob: dbb7ad3e1c3779c300c4256b6eb72c300b062ef4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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());
}