mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
Searching all of the existing gc.root implementations I'm aware of (all three of them), there was exactly one use of this mechanism, and that was to implement a performance improvement that should have been applied to the default lowering. Having this function is requiring a dependency on a CodeGen class (MachineFunction), in a class which is otherwise completely independent of CodeGen. I could solve this differently, but given that I see absolutely no value in preserving this mechanism, I going to just get rid of it. Note: Tis is the first time I'm intentionally breaking previously supported gc.root functionality. Given 3.6 has branched, I believe this is a good time to do this. Differential Revision: http://reviews.llvm.org/D7004 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226305 91177308-0d34-0410-b5e6-96231b3b80d8
48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
//===-- 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;
|
|
}
|