/*===-- GCInterface.h - Public interface exposed by garbage collectors ----===*\ |* |* The LLVM Compiler Infrastructure |* |* This file was developed by the LLVM research group and is distributed under |* the University of Illinois Open Source License. See LICENSE.TXT for details. |* |*===----------------------------------------------------------------------===*| |* |* This file defines the common public interface that must be exposed by all |* LLVM garbage collectors. |* \*===----------------------------------------------------------------------===*/ #ifndef GCINTERFACE_H #define GCINTERFACE_H /* llvm_cg_walk_gcroots - This function is exposed by the LLVM code generator, * and allows us to traverse the roots on the stack. */ void llvm_cg_walk_gcroots(void (*FP)(void **Root, void *Meta)); /* llvm_gc_initialize - This function is called to initalize the garbage * collector. */ void llvm_gc_initialize(unsigned InitialHeapSize); /* llvm_gc_allocate - This function allocates Size bytes from the heap and * returns a pointer to it. */ void *llvm_gc_allocate(unsigned Size); /* llvm_gc_collect - This function forces a garbage collection cycle. */ void llvm_gc_collect(); /* llvm_gc_read - This function should be implemented to include any read * barrier code that is needed by the garbage collector. */ void *llvm_gc_read(void *ObjPtr, void **FieldPtr); /* llvm_gc_write - This function should be implemented to include any write * barrier code that is needed by the garbage collector. */ void llvm_gc_write(void *V, void *ObjPtr, void **FieldPtr); #endif