LLVM  3.7.0
ErlangGC.cpp
Go to the documentation of this file.
1 //===-- ErlangGC.cpp - Erlang/OTP GC strategy -------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements the Erlang/OTP runtime-compatible garbage collector
11 // (e.g. defines safe points, root initialization etc.)
12 //
13 // The frametable emitter is in ErlangGCPrinter.cpp.
14 //
15 //===----------------------------------------------------------------------===//
16 
17 #include "llvm/CodeGen/GCs.h"
20 #include "llvm/MC/MCContext.h"
21 #include "llvm/MC/MCSymbol.h"
25 
26 using namespace llvm;
27 
28 namespace {
29 
30 class ErlangGC : public GCStrategy {
31 public:
32  ErlangGC();
33 };
34 }
35 
36 static GCRegistry::Add<ErlangGC> X("erlang",
37  "erlang-compatible garbage collector");
38 
40 
41 ErlangGC::ErlangGC() {
42  InitRoots = false;
43  NeededSafePoints = 1 << GC::PostCall;
44  UsesMetadata = true;
45  CustomRoots = false;
46 }
void linkErlangGC()
Creates an erlang-compatible garbage collector.
Definition: ErlangGC.cpp:39
static GCRegistry::Add< ErlangGC > X("erlang","erlang-compatible garbage collector")
Instr is the return address of a call.
Definition: GCStrategy.h:69
GCStrategy describes a garbage collector algorithm's code generation requirements, and provides overridable hooks for those needs which cannot be abstractly described.
Definition: GCStrategy.h:78
A static registration template.
Definition: Registry.h:201