From 495d6f1933e6c680af4ea8f69ac12a7fdaee3aa0 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 7 Nov 2001 04:20:50 +0000 Subject: [PATCH] New class to provide high performance writing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1167 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Assembly/CachedWriter.h | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 include/llvm/Assembly/CachedWriter.h diff --git a/include/llvm/Assembly/CachedWriter.h b/include/llvm/Assembly/CachedWriter.h new file mode 100644 index 00000000000..ab6756abcb0 --- /dev/null +++ b/include/llvm/Assembly/CachedWriter.h @@ -0,0 +1,41 @@ +//===-- llvm/Assembly/CachedWriter.h - Printer Accellerator ------*- C++ -*--=// +// +// This file defines a 'CacheWriter' class that is used to accelerate printing +// chunks of LLVM. This is used when a module is not being changed, but random +// parts of it need to be printed. This can greatly speed up printing of LLVM +// output. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ASSEMBLY_CACHED_WRITER_H +#define LLVM_ASSEMBLY_CACHED_WRITER_H + +#include "llvm/Assembly/Writer.h" + +class AssemblyWriter; // Internal private class +class SlotCalculator; + +class CachedWriter { + AssemblyWriter *AW; + SlotCalculator *SC; + ostream &Out; +public: + CachedWriter(ostream &O = cout) : AW(0), SC(0), Out(O) { } + CachedWriter(const Module *M, ostream &O = cout) : AW(0), SC(0), Out(O) { + setModule(M); + } + ~CachedWriter(); + + // setModule - Invalidate internal state, use the new module instead. + void setModule(const Module *M); + + CachedWriter &operator<<(const Value *V); + + template + inline CachedWriter &operator<<(X &v) { + Out << v; + return *this; + } +}; + +#endif