forked from OSchip/llvm-project
Remove the MappedFile::charBase member, rename base -> getBase() and
make getBase() return a const-correct pointer. llvm-svn: 49025
This commit is contained in:
parent
314a1414d0
commit
bcfa564759
|
@ -25,7 +25,7 @@ namespace sys {
|
|||
|
||||
/// This class provides an abstraction for a memory mapped file in the
|
||||
/// operating system's filesystem. It provides platform independent operations
|
||||
/// for mapping a file into memory for both read access.
|
||||
/// for mapping a file into memory for read access.
|
||||
class MappedFile {
|
||||
sys::PathWithStatus Path; ///< Path to the file.
|
||||
void *BasePtr; ///< Pointer to the base memory address
|
||||
|
@ -44,19 +44,9 @@ namespace sys {
|
|||
/// This function determines if the file is currently mapped or not.
|
||||
bool isMapped() const { return BasePtr != 0; }
|
||||
|
||||
/// This function returns a void* pointer to the base address of the file
|
||||
/// getBase - Returns a const void* pointer to the base address of the file
|
||||
/// mapping. This is the memory address of the first byte in the file.
|
||||
/// Note that although a non-const pointer is returned, the memory might
|
||||
/// not actually be writable, depending on the MappingOptions used when
|
||||
/// the MappedFile was opened.
|
||||
void* base() const { return BasePtr; }
|
||||
|
||||
/// This function returns a char* pointer to the base address of the file
|
||||
/// mapping. This is the memory address of the first byte in the file.
|
||||
/// Note that although a non-const pointer is returned, the memory might
|
||||
/// not actually be writable, depending on the MappingOptions used when
|
||||
/// the MappedFile was opened.
|
||||
char* charBase() const { return reinterpret_cast<char*>(BasePtr); }
|
||||
const void *getBase() const { return BasePtr; }
|
||||
|
||||
/// This function returns a reference to the sys::Path object kept by the
|
||||
/// MappedFile object. This contains the path to the file that is or
|
||||
|
|
|
@ -28,7 +28,7 @@ void SourceFile::readFile() {
|
|||
///
|
||||
void SourceFile::calculateLineOffsets() const {
|
||||
assert(LineOffset.empty() && "Line offsets already computed!");
|
||||
const char *BufPtr = File.charBase();
|
||||
const char *BufPtr = (const char *)File.getBase();
|
||||
const char *FileStart = BufPtr;
|
||||
const char *FileEnd = FileStart + File.size();
|
||||
do {
|
||||
|
@ -61,12 +61,12 @@ void SourceFile::getSourceLine(unsigned LineNo, const char *&LineStart,
|
|||
if (LineNo >= LineOffset.size()) return;
|
||||
|
||||
// Otherwise, they are asking for a valid line, which we can fulfill.
|
||||
LineStart = File.charBase()+LineOffset[LineNo];
|
||||
LineStart = (const char *)File.getBase()+LineOffset[LineNo];
|
||||
|
||||
if (LineNo+1 < LineOffset.size())
|
||||
LineEnd = File.charBase()+LineOffset[LineNo+1];
|
||||
LineEnd = (const char *)File.getBase()+LineOffset[LineNo+1];
|
||||
else
|
||||
LineEnd = File.charBase() + File.size();
|
||||
LineEnd = (const char *)File.getBase() + File.size();
|
||||
|
||||
// If the line ended with a newline, strip it off.
|
||||
while (LineEnd != LineStart && (LineEnd[-1] == '\n' || LineEnd[-1] == '\r'))
|
||||
|
|
|
@ -173,11 +173,12 @@ bool MemoryBufferMMapFile::open(const sys::Path &Filename,
|
|||
|
||||
// If this file is not an exact multiple of the system page size (common
|
||||
// case), then the OS has zero terminated the buffer for us.
|
||||
if ((Size & (PageSize-1))) {
|
||||
init(File.charBase(), File.charBase()+Size);
|
||||
const char *FileBase = static_cast<const char*>(File.getBase());
|
||||
if ((Size & (PageSize-1)) != 0) {
|
||||
init(FileBase, FileBase+Size);
|
||||
} else {
|
||||
// Otherwise, we allocate a new memory buffer and copy the data over
|
||||
initCopyOf(File.charBase(), File.charBase()+Size);
|
||||
initCopyOf(FileBase, FileBase+Size);
|
||||
|
||||
// No need to keep the file mapped any longer.
|
||||
File.unmap();
|
||||
|
|
Loading…
Reference in New Issue