am c40cf1ce: Merge "Remove useless refCounting from FileMap."

* commit 'c40cf1ce9d6910685bf2242c1db390af00684d9d':
  Remove useless refCounting from FileMap.
This commit is contained in:
Narayan Kamath 2015-02-24 12:56:45 +00:00 committed by Android Git Automerger
commit f9df4b13bc
4 changed files with 8 additions and 32 deletions

View File

@ -63,6 +63,8 @@ public:
bool create(const char* origFileName, int fd,
off64_t offset, size_t length, bool readOnly);
~FileMap(void);
/*
* Return the name of the file this map came from, if known.
*/
@ -83,19 +85,6 @@ public:
*/
off64_t getDataOffset(void) const { return mDataOffset; }
/*
* Get a "copy" of the object.
*/
FileMap* acquire(void) { mRefCount++; return this; }
/*
* Call this when mapping is no longer needed.
*/
void release(void) {
if (--mRefCount <= 0)
delete this;
}
/*
* This maps directly to madvise() values, but allows us to avoid
* including <sys/mman.h> everywhere.
@ -112,15 +101,12 @@ public:
int advise(MapAdvice advice);
protected:
// don't delete objects; call release()
~FileMap(void);
private:
// these are not implemented
FileMap(const FileMap& src);
const FileMap& operator=(const FileMap& src);
int mRefCount; // reference count
char* mFileName; // original file name, if known
void* mBasePtr; // base of mmap area; page aligned
size_t mBaseLength; // length, measured from "mBasePtr"

View File

@ -48,7 +48,7 @@ using namespace android;
// Constructor. Create an empty object.
FileMap::FileMap(void)
: mRefCount(1), mFileName(NULL), mBasePtr(NULL), mBaseLength(0),
: mFileName(NULL), mBasePtr(NULL), mBaseLength(0),
mDataPtr(NULL), mDataLength(0)
{
}
@ -56,11 +56,6 @@ FileMap::FileMap(void)
// Destructor.
FileMap::~FileMap(void)
{
assert(mRefCount == 0);
//printf("+++ removing FileMap %p %zu\n", mDataPtr, mDataLength);
mRefCount = -100; // help catch double-free
if (mFileName != NULL) {
free(mFileName);
}
@ -134,7 +129,6 @@ bool FileMap::create(const char* origFileName, int fd, off64_t offset, size_t le
void* ptr;
assert(mRefCount == 1);
assert(fd >= 0);
assert(offset >= 0);
assert(length > 0);

View File

@ -43,9 +43,7 @@ Tokenizer::Tokenizer(const String8& filename, FileMap* fileMap, char* buffer,
}
Tokenizer::~Tokenizer() {
if (mFileMap) {
mFileMap->release();
}
delete mFileMap;
if (mOwnBuffer) {
delete[] mBuffer;
}
@ -74,7 +72,7 @@ status_t Tokenizer::open(const String8& filename, Tokenizer** outTokenizer) {
fileMap->advise(FileMap::SEQUENTIAL);
buffer = static_cast<char*>(fileMap->getDataPtr());
} else {
fileMap->release();
delete fileMap;
fileMap = NULL;
// Fall back to reading into a buffer since we can't mmap files in sysfs.

View File

@ -321,9 +321,7 @@ struct ZipArchive {
close(fd);
}
if (directory_map != NULL) {
directory_map->release();
}
delete directory_map;
free(hash_table);
}
};
@ -335,7 +333,7 @@ static android::FileMap* MapFileSegment(const int fd, const off64_t start,
android::FileMap* file_map = new android::FileMap;
const bool success = file_map->create(debug_file_name, fd, start, length, read_only);
if (!success) {
file_map->release();
delete file_map;
return NULL;
}
@ -1170,7 +1168,7 @@ int32_t ExtractEntryToFile(ZipArchiveHandle handle,
const int32_t error = ExtractToMemory(handle, entry,
reinterpret_cast<uint8_t*>(map->getDataPtr()),
map->getDataLength());
map->release();
delete map;
return error;
}