2007-09-27 19:34:27 +00:00
|
|
|
//===-- Collectors.h - Garbage collector registry -------------------------===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
2007-12-29 19:59:42 +00:00
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
2007-09-27 19:34:27 +00:00
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
|
|
|
// This file declares the CollectorRegistry class, which is used to discover
|
|
|
|
// pluggable garbage collectors.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
2008-08-17 12:56:54 +00:00
|
|
|
#ifndef LLVM_CODEGEN_GCS_H
|
|
|
|
#define LLVM_CODEGEN_GCS_H
|
2007-09-27 19:34:27 +00:00
|
|
|
|
|
|
|
#include "llvm/Support/Registry.h"
|
|
|
|
|
|
|
|
namespace llvm {
|
|
|
|
|
|
|
|
class Collector;
|
2008-08-17 12:08:44 +00:00
|
|
|
class GCMetadataPrinter;
|
2007-09-27 19:34:27 +00:00
|
|
|
|
|
|
|
/// The collector registry uses all the defaults from Registry.
|
|
|
|
///
|
|
|
|
typedef Registry<Collector> CollectorRegistry;
|
|
|
|
|
2008-08-17 12:08:44 +00:00
|
|
|
/// The GC assembly printer registry uses all the defaults from Registry.
|
|
|
|
///
|
|
|
|
typedef Registry<GCMetadataPrinter> GCMetadataPrinterRegistry;
|
|
|
|
|
2007-12-11 00:30:17 +00:00
|
|
|
/// FIXME: Collector instances are not useful on their own. These no longer
|
|
|
|
/// serve any purpose except to link in the plugins.
|
|
|
|
|
2007-09-27 19:34:27 +00:00
|
|
|
/// Creates an ocaml-compatible garbage collector.
|
|
|
|
Collector *createOcamlCollector();
|
|
|
|
|
2008-08-17 12:56:54 +00:00
|
|
|
/// Creates an ocaml-compatible metadata printer.
|
|
|
|
GCMetadataPrinter *createOcamlMetadataPrinter();
|
|
|
|
|
2007-09-27 19:34:27 +00:00
|
|
|
/// Creates a shadow stack garbage collector. This collector requires no code
|
|
|
|
/// generator support.
|
|
|
|
Collector *createShadowStackCollector();
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|