blob: 4eb48183bc5a077f40c2db4b3d0e89d8a74f460e [file] [log] [blame]
Chris Lattnere6fd7762004-05-23 21:25:59 +00001/*===-- GCInterface.h - Public interface exposed by garbage collectors ----===*\
2|*
3|* The LLVM Compiler Infrastructure
4|*
5|* This file was developed by the LLVM research group and is distributed under
6|* the University of Illinois Open Source License. See LICENSE.TXT for details.
Misha Brukmanfd939082005-04-21 23:48:37 +00007|*
Chris Lattnere6fd7762004-05-23 21:25:59 +00008|*===----------------------------------------------------------------------===*|
Misha Brukmanfd939082005-04-21 23:48:37 +00009|*
Chris Lattnere6fd7762004-05-23 21:25:59 +000010|* This file defines the common public interface that must be exposed by all
11|* LLVM garbage collectors.
12|*
13\*===----------------------------------------------------------------------===*/
14
15#ifndef GCINTERFACE_H
16#define GCINTERFACE_H
17
Chris Lattnera2f45b22004-05-27 05:51:13 +000018/* llvm_cg_walk_gcroots - This function is exposed by the LLVM code generator,
19 * and allows us to traverse the roots on the stack.
20 */
21void llvm_cg_walk_gcroots(void (*FP)(void **Root, void *Meta));
22
23
Chris Lattnere6fd7762004-05-23 21:25:59 +000024/* llvm_gc_initialize - This function is called to initalize the garbage
25 * collector.
26 */
Chris Lattnera2f45b22004-05-27 05:51:13 +000027void llvm_gc_initialize(unsigned InitialHeapSize);
Chris Lattnere6fd7762004-05-23 21:25:59 +000028
29/* llvm_gc_allocate - This function allocates Size bytes from the heap and
30 * returns a pointer to it.
31 */
32void *llvm_gc_allocate(unsigned Size);
33
34/* llvm_gc_collect - This function forces a garbage collection cycle.
35 */
36void llvm_gc_collect();
37
38/* llvm_gc_read - This function should be implemented to include any read
39 * barrier code that is needed by the garbage collector.
40 */
Chris Lattner93c95872004-07-22 05:51:13 +000041void *llvm_gc_read(void *ObjPtr, void **FieldPtr);
Chris Lattnere6fd7762004-05-23 21:25:59 +000042
43/* llvm_gc_write - This function should be implemented to include any write
44 * barrier code that is needed by the garbage collector.
45 */
Chris Lattner93c95872004-07-22 05:51:13 +000046void llvm_gc_write(void *V, void *ObjPtr, void **FieldPtr);
Chris Lattnere6fd7762004-05-23 21:25:59 +000047
48#endif