New class to provide high performance writing.
authorChris Lattner <sabre@nondot.org>
Wed, 7 Nov 2001 04:20:50 +0000 (04:20 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 7 Nov 2001 04:20:50 +0000 (04:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1167 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Assembly/CachedWriter.h [new file with mode: 0644]

diff --git a/include/llvm/Assembly/CachedWriter.h b/include/llvm/Assembly/CachedWriter.h
new file mode 100644 (file)
index 0000000..ab6756a
--- /dev/null
@@ -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<class X>
+  inline CachedWriter &operator<<(X &v) {
+    Out << v;
+    return *this;
+  }
+};
+
+#endif