diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-12-04 22:51:11 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-12-04 22:51:11 +0000 |
commit | 123a35a81c95a032a11b9156322454900e43c22e (patch) | |
tree | a8ee470cea140f7fadbdf02e51b7a30aa919e4b4 /llvm/lib/Support/raw_ostream.cpp | |
parent | 1aed3ddffacc4d9889a8d1a546be87e4cfa9215c (diff) | |
download | bcm5719-llvm-123a35a81c95a032a11b9156322454900e43c22e.tar.gz bcm5719-llvm-123a35a81c95a032a11b9156322454900e43c22e.zip |
Have raw_fd_ostream keep track of the position in the file to make tell() go faster by not requiring a flush().
llvm-svn: 60560
Diffstat (limited to 'llvm/lib/Support/raw_ostream.cpp')
-rw-r--r-- | llvm/lib/Support/raw_ostream.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/llvm/lib/Support/raw_ostream.cpp b/llvm/lib/Support/raw_ostream.cpp index b10677e3f27..96c9a3a263d 100644 --- a/llvm/lib/Support/raw_ostream.cpp +++ b/llvm/lib/Support/raw_ostream.cpp @@ -202,7 +202,7 @@ void format_object_base::home() { /// stream should be immediately destroyed; the string will be empty /// if no error occurred. raw_fd_ostream::raw_fd_ostream(const char *Filename, bool Binary, - std::string &ErrorInfo) { + std::string &ErrorInfo) : pos(0) { ErrorInfo.clear(); // Handle "-" as stdout. @@ -240,8 +240,10 @@ raw_fd_ostream::~raw_fd_ostream() { void raw_fd_ostream::flush_impl() { assert (FD >= 0 && "File already closed."); - if (OutBufCur-OutBufStart) + if (OutBufCur-OutBufStart) { + pos += (OutBufCur - OutBufStart); ::write(FD, OutBufStart, OutBufCur-OutBufStart); + } HandleFlush(); } @@ -253,14 +255,6 @@ void raw_fd_ostream::close() { FD = -1; } -uint64_t raw_fd_ostream::tell() { - // We have to take into account the bytes waiting in the buffer. For now - // we do the easy thing and just flush the buffer before getting the - // current file offset. - flush(); - return (uint64_t) lseek(FD, 0, SEEK_CUR); -} - //===----------------------------------------------------------------------===// // raw_stdout/err_ostream //===----------------------------------------------------------------------===// |