diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2011-08-11 21:14:08 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2011-08-11 21:15:26 -0700 |
| commit | e8d170beae28f99bd7075a6dde4dcb20d6126b68 (patch) | |
| tree | 9608aa1aaf0c7f5105b33f1e6bd8b4c9b2ae99da | |
| parent | 0a22f91c9cf4b2a54f05a5d58a23459c0f6fb590 (diff) | |
| download | rust-e8d170beae28f99bd7075a6dde4dcb20d6126b68.tar.gz rust-e8d170beae28f99bd7075a6dde4dcb20d6126b68.zip | |
rt: Stub Rust GC metadata printer and Rust GC strategy modules
| -rw-r--r-- | mk/rustllvm.mk | 3 | ||||
| -rw-r--r-- | src/rustllvm/RustGCMetadataPrinter.cpp | 45 | ||||
| -rw-r--r-- | src/rustllvm/RustGCStrategy.cpp | 34 |
3 files changed, 81 insertions, 1 deletions
diff --git a/mk/rustllvm.mk b/mk/rustllvm.mk index 35f52230bd9..af1f7bfbd0f 100644 --- a/mk/rustllvm.mk +++ b/mk/rustllvm.mk @@ -2,7 +2,8 @@ # rustc LLVM-extensions (C++) library variables and rules ###################################################################### -RUSTLLVM_OBJS_CS := $(addprefix rustllvm/, RustWrapper.cpp) +RUSTLLVM_OBJS_CS := $(addprefix rustllvm/, RustGCMetadataPrinter.cpp \ + RustGCStrategy.cpp RustWrapper.cpp) RUSTLLVM_DEF := rustllvm/rustllvm$(CFG_DEF_SUFFIX) diff --git a/src/rustllvm/RustGCMetadataPrinter.cpp b/src/rustllvm/RustGCMetadataPrinter.cpp new file mode 100644 index 00000000000..d17d7da1703 --- /dev/null +++ b/src/rustllvm/RustGCMetadataPrinter.cpp @@ -0,0 +1,45 @@ +//===-- RustGCPrinter.cpp - Rust garbage collection map printer -----------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the emitter for the Rust garbage collection stack maps. +// +//===----------------------------------------------------------------------===// + +#include "llvm/CodeGen/GCs.h" +#include "llvm/CodeGen/AsmPrinter.h" +#include "llvm/CodeGen/GCMetadataPrinter.h" +#include "llvm/Module.h" +#include "llvm/MC/MCAsmInfo.h" +#include "llvm/MC/MCContext.h" +#include "llvm/MC/MCSymbol.h" +#include "llvm/MC/MCStreamer.h" +#include "llvm/Target/Mangler.h" +#include "llvm/Target/TargetData.h" +#include "llvm/Target/TargetLoweringObjectFile.h" +#include "llvm/Target/TargetMachine.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/Support/ErrorHandling.h" +#include "llvm/Support/FormattedStream.h" +#include <cctype> + +using namespace llvm; + +namespace { + + class RustGCMetadataPrinter : public GCMetadataPrinter { + public: + void beginAssembly(AsmPrinter &AP) {}; + void finishAssembly(AsmPrinter &AP) {}; + }; + +} + +static GCMetadataPrinterRegistry::Add<RustGCMetadataPrinter> +Y("rust", "Rust GC metadata printer"); + diff --git a/src/rustllvm/RustGCStrategy.cpp b/src/rustllvm/RustGCStrategy.cpp new file mode 100644 index 00000000000..0c86856939c --- /dev/null +++ b/src/rustllvm/RustGCStrategy.cpp @@ -0,0 +1,34 @@ +//===- RustGCStrategy.cpp - Rust garbage collection 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 defines the garbage collection strategy for Rust. +// +//===----------------------------------------------------------------------===// + +#include "llvm/CodeGen/GCs.h" +#include "llvm/CodeGen/GCStrategy.h" + +using namespace llvm; + +namespace { + class RustGCStrategy : public GCStrategy { + public: + RustGCStrategy(); + }; +} + +static GCRegistry::Add<RustGCStrategy> +X("rust", "Rust GC"); + +RustGCStrategy::RustGCStrategy() { + NeededSafePoints = 1 << GC::PostCall; + UsesMetadata = true; +} + + |
