blob: 1ac90a4937f9550b7897e51864a1716c9949ecf4 [file] [log] [blame]
// Copyright 2020 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FXJS_GC_HEAP_H_
#define FXJS_GC_HEAP_H_
#include <memory>
#include "v8/include/cppgc/allocation.h"
#include "v8/include/cppgc/heap.h"
#include "v8/include/libplatform/libplatform.h"
namespace v8 {
class Isolate;
class Platform;
} // namespace v8
struct FXGCHeapDeleter {
void operator()(cppgc::Heap* heap);
};
using FXGCScopedHeap = std::unique_ptr<cppgc::Heap, FXGCHeapDeleter>;
void FXGC_Initialize(v8::Platform* platform, v8::Isolate* isolate);
void FXGC_Release();
FXGCScopedHeap FXGC_CreateHeap();
void FXGC_ForceGarbageCollection(cppgc::Heap* heap);
#define CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED \
template <typename T> \
friend class cppgc::MakeGarbageCollectedTrait
#endif // FXJS_GC_HEAP_H_