//===-- ErlangGC.cpp - Erlang/OTP GC strategy -------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file implements the Erlang/OTP runtime-compatible garbage collector // (e.g. defines safe points, root initialization etc.) // // The frametable emitter is in ErlangGCPrinter.cpp. // //===----------------------------------------------------------------------===// #include "llvm/CodeGen/GCs.h" #include "llvm/CodeGen/GCStrategy.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCSymbol.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetSubtargetInfo.h" using namespace llvm; namespace { class ErlangGC : public GCStrategy { public: ErlangGC(); }; } static GCRegistry::Add<ErlangGC> X("erlang", "erlang-compatible garbage collector"); void llvm::linkErlangGC() {} ErlangGC::ErlangGC() { InitRoots = false; NeededSafePoints = 1 << GC::PostCall; UsesMetadata = true; CustomRoots = false; }