> 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
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits