1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2020 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker #ifndef FXJS_GC_HEAP_H_ 6*3ac0a46fSAndroid Build Coastguard Worker #define FXJS_GC_HEAP_H_ 7*3ac0a46fSAndroid Build Coastguard Worker 8*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/allocation.h" 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker namespace cppgc { 13*3ac0a46fSAndroid Build Coastguard Worker class Heap; 14*3ac0a46fSAndroid Build Coastguard Worker } // namespace cppgc 15*3ac0a46fSAndroid Build Coastguard Worker 16*3ac0a46fSAndroid Build Coastguard Worker namespace v8 { 17*3ac0a46fSAndroid Build Coastguard Worker class Isolate; 18*3ac0a46fSAndroid Build Coastguard Worker class Platform; 19*3ac0a46fSAndroid Build Coastguard Worker } // namespace v8 20*3ac0a46fSAndroid Build Coastguard Worker 21*3ac0a46fSAndroid Build Coastguard Worker struct FXGCHeapDeleter { 22*3ac0a46fSAndroid Build Coastguard Worker void operator()(cppgc::Heap* heap); 23*3ac0a46fSAndroid Build Coastguard Worker }; 24*3ac0a46fSAndroid Build Coastguard Worker 25*3ac0a46fSAndroid Build Coastguard Worker using FXGCScopedHeap = std::unique_ptr<cppgc::Heap, FXGCHeapDeleter>; 26*3ac0a46fSAndroid Build Coastguard Worker 27*3ac0a46fSAndroid Build Coastguard Worker void FXGC_Initialize(v8::Platform* platform, v8::Isolate* isolate); 28*3ac0a46fSAndroid Build Coastguard Worker void FXGC_Release(); 29*3ac0a46fSAndroid Build Coastguard Worker FXGCScopedHeap FXGC_CreateHeap(); 30*3ac0a46fSAndroid Build Coastguard Worker void FXGC_ForceGarbageCollection(cppgc::Heap* heap); 31*3ac0a46fSAndroid Build Coastguard Worker 32*3ac0a46fSAndroid Build Coastguard Worker #define CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED \ 33*3ac0a46fSAndroid Build Coastguard Worker template <typename T> \ 34*3ac0a46fSAndroid Build Coastguard Worker friend class cppgc::MakeGarbageCollectedTrait 35*3ac0a46fSAndroid Build Coastguard Worker 36*3ac0a46fSAndroid Build Coastguard Worker #endif // FXJS_GC_HEAP_H_ 37