am c40cf1ce: Merge "Remove useless refCounting from FileMap."
* commit 'c40cf1ce9d6910685bf2242c1db390af00684d9d': Remove useless refCounting from FileMap.
This commit is contained in:
commit
f9df4b13bc
|
@ -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"
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue