1249259Sdim//===-- ErlangGC.cpp - Erlang/OTP GC strategy -------------------*- C++ -*-===// 2249259Sdim// 3249259Sdim// The LLVM Compiler Infrastructure 4249259Sdim// 5249259Sdim// This file is distributed under the University of Illinois Open Source 6249259Sdim// License. See LICENSE.TXT for details. 7249259Sdim// 8249259Sdim//===----------------------------------------------------------------------===// 9249259Sdim// 10249259Sdim// This file implements the Erlang/OTP runtime-compatible garbage collector 11249259Sdim// (e.g. defines safe points, root initialization etc.) 12249259Sdim// 13249259Sdim// The frametable emitter is in ErlangGCPrinter.cpp. 14249259Sdim// 15249259Sdim//===----------------------------------------------------------------------===// 16249259Sdim 17249259Sdim#include "llvm/CodeGen/GCs.h" 18249259Sdim#include "llvm/CodeGen/GCStrategy.h" 19249259Sdim#include "llvm/CodeGen/MachineInstrBuilder.h" 20249259Sdim#include "llvm/MC/MCContext.h" 21249259Sdim#include "llvm/MC/MCSymbol.h" 22249259Sdim#include "llvm/Target/TargetInstrInfo.h" 23249259Sdim#include "llvm/Target/TargetMachine.h" 24280031Sdim#include "llvm/Target/TargetSubtargetInfo.h" 25249259Sdim 26249259Sdimusing namespace llvm; 27249259Sdim 28249259Sdimnamespace { 29249259Sdim 30288943Sdimclass ErlangGC : public GCStrategy { 31288943Sdimpublic: 32288943Sdim ErlangGC(); 33288943Sdim}; 34249259Sdim} 35249259Sdim 36288943Sdimstatic GCRegistry::Add<ErlangGC> X("erlang", 37288943Sdim "erlang-compatible garbage collector"); 38249259Sdim 39288943Sdimvoid llvm::linkErlangGC() {} 40249259Sdim 41249259SdimErlangGC::ErlangGC() { 42249259Sdim InitRoots = false; 43249259Sdim NeededSafePoints = 1 << GC::PostCall; 44249259Sdim UsesMetadata = true; 45249259Sdim CustomRoots = false; 46249259Sdim} 47