[llvm-commits] CVS: llvm/lib/System/Unix/MappedFile.inc
Chris Lattner
clattner at apple.com
Thu Mar 29 23:02:51 PDT 2007
> Use the stat information in the Path object, if it is already
> obtained. This
> avoids a call to ::fstat by MappedFile when the file size
> information was
> already obtained by the Path object.
Interesting approach. The problem is that fstat is significantly
faster than stat. How about a new Path::getFileStatusFromFD()
method, which takes an open file descriptor. If the System supports
it, it can get status information faster by using it, otherwise it
falls back to getFileStatus (e.g. if win32 doesn't have fstat)?
-Chris
>
> ---
> Diffs of the changes: (+3 -4)
>
> MappedFile.inc | 7 +++----
> 1 files changed, 3 insertions(+), 4 deletions(-)
>
>
> Index: llvm/lib/System/Unix/MappedFile.inc
> diff -u llvm/lib/System/Unix/MappedFile.inc:1.18 llvm/lib/System/
> Unix/MappedFile.inc:1.19
> --- llvm/lib/System/Unix/MappedFile.inc:1.18 Fri Aug 25 16:37:17 2006
> +++ llvm/lib/System/Unix/MappedFile.inc Thu Mar 29 14:11:22 2007
> @@ -54,15 +54,14 @@
> MakeErrMsg(ErrMsg, "can't open file '" + path_.toString() + "'");
> return true;
> }
> - struct stat sbuf;
> - if(::fstat(FD, &sbuf) < 0) {
> - MakeErrMsg(ErrMsg, "can't stat file '"+ path_.toString() + "'");
> + const FileStatus *Status = path_.getFileStatus(false, ErrMsg);
> + if (!Status) {
> ::close(FD);
> return true;
> }
> info_ = new MappedFileInfo;
> info_->FD = FD;
> - info_->Size = sbuf.st_size;
> + info_->Size = Status->getSize();
> return false;
> }
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list