Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6fae931 authored by Narayan Kamath's avatar Narayan Kamath Committed by Android Git Automerger
Browse files

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

* commit 'f9df4b13':
  Remove useless refCounting from FileMap.
parents 0b179b87 f9df4b13
Loading
Loading
Loading
Loading
+2 −16
Original line number Diff line number Diff line
@@ -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"
+1 −7
Original line number Diff line number Diff line
@@ -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);
+2 −4
Original line number Diff line number Diff line
@@ -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.
+3 −5
Original line number Diff line number Diff line
@@ -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;
}