| Index: core/src/fxcrt/mem_int.h
|
| diff --git a/core/src/fxcrt/mem_int.h b/core/src/fxcrt/mem_int.h
|
| deleted file mode 100644
|
| index 3e3d25a7ec2d9285542fa857888ece7b9356ccfb..0000000000000000000000000000000000000000
|
| --- a/core/src/fxcrt/mem_int.h
|
| +++ /dev/null
|
| @@ -1,232 +0,0 @@
|
| -// Copyright 2014 PDFium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| -
|
| -#ifndef _FXM_MEM_INT_H_
|
| -#define _FXM_MEM_INT_H_
|
| -struct FX_DefAllocator {
|
| - IFX_Allocator m_Allocator;
|
| - struct CFX_MemoryMgr* m_pFoxitMgr;
|
| -};
|
| -struct CFX_MemoryMgr {
|
| -public:
|
| - FXMEM_SystemMgr* m_pSystemMgr;
|
| - FX_DefAllocator m_DefAllocator;
|
| - FX_LPVOID m_pExternalMemory;
|
| - FX_BOOL m_bReleaseMgr;
|
| - void Init(FXMEM_SystemMgr* pSystemMgr);
|
| - void* Alloc(size_t size, int flags);
|
| - void* AllocDebug(size_t size, int flags, FX_LPCSTR file, int line);
|
| - void* Realloc(void* p, size_t size, int flags);
|
| - void* ReallocDebug(void* p, size_t size, int flags, FX_LPCSTR file, int line);
|
| - void Free(void* p, int flags);
|
| - void PurgeMgr();
|
| -};
|
| -extern CFX_MemoryMgr* g_pDefFoxitMgr;
|
| -#define FIXEDMEM_PAGE_EXTRASPACE sizeof(size_t)
|
| -#define FIXEDMEM_BLOCKNUM(bs) (8 * (FX_FIXEDMEM_PAGESIZE - FIXEDMEM_PAGE_EXTRASPACE) / (8 * bs + 1))
|
| -#define FIXEDMEM_8BYTES_BLOCKNUM FIXEDMEM_BLOCKNUM(8)
|
| -#define FIXEDMEM_16BYTES_BLOCKNUM FIXEDMEM_BLOCKNUM(16)
|
| -#define FIXEDMEM_32BYTES_BLOCKNUM FIXEDMEM_BLOCKNUM(32)
|
| -extern const FX_BYTE ZeroLeadPos[256];
|
| -extern const FX_BYTE OneLeadPos[256];
|
| -template <size_t blockNum, size_t blockSize>
|
| -class CFXMEM_FixedPage
|
| -{
|
| -public:
|
| - void Initialize()
|
| - {
|
| - m_nAvailCount = blockNum;
|
| - FXSYS_memset32(m_BusyMap, 0, (blockNum + 7) / 8);
|
| - }
|
| - FX_BOOL HasFreeBlock() const
|
| - {
|
| - return (FX_BOOL)m_nAvailCount;
|
| - }
|
| - FX_LPVOID Alloc(size_t size)
|
| - {
|
| - FXSYS_assert(m_nAvailCount);
|
| - FX_LPDWORD pFind = (FX_LPDWORD)m_BusyMap;
|
| - size_t i = 0;
|
| - while (i < (blockNum + 7) / 8 / 4 && pFind[i] == 0xFFFFFFFF) {
|
| - i ++;
|
| - }
|
| - i *= 4;
|
| - while (m_BusyMap[i] == 0xFF) {
|
| - i ++;
|
| - }
|
| - size_t pos = ZeroLeadPos[m_BusyMap[i]];
|
| - m_BusyMap[i] |= 1 << (7 - pos);
|
| - m_nAvailCount --;
|
| - return (FX_LPBYTE)(this + 1) + (i * 8 + pos) * blockSize;
|
| - }
|
| - void Free(FX_LPVOID p)
|
| - {
|
| - FXSYS_assert(p > (FX_LPVOID)this && p < (FX_LPVOID)((FX_LPBYTE)this + FX_FIXEDMEM_PAGESIZE));
|
| - size_t pos = ((FX_LPBYTE)p - (FX_LPBYTE)(this + 1)) / blockSize;
|
| - m_BusyMap[pos / 8] &= ~(1 << (7 - (pos % 8)));
|
| - m_nAvailCount ++;
|
| - }
|
| - volatile size_t m_nAvailCount;
|
| - FX_BYTE m_BusyMap[(blockNum + 7) / 8];
|
| -};
|
| -typedef CFXMEM_FixedPage<FIXEDMEM_8BYTES_BLOCKNUM, 8> CFXMEM_8BytesPage;
|
| -typedef CFXMEM_FixedPage<FIXEDMEM_16BYTES_BLOCKNUM, 16> CFXMEM_16BytesPage;
|
| -typedef CFXMEM_FixedPage<FIXEDMEM_32BYTES_BLOCKNUM, 32> CFXMEM_32BytesPage;
|
| -template <size_t blockNum, size_t blockSize>
|
| -class CFXMEM_FixedPages
|
| -{
|
| -public:
|
| - typedef CFXMEM_FixedPage<blockNum, blockSize> T;
|
| - FX_LPBYTE m_pStartPage;
|
| - FX_LPBYTE m_pLimitPos;
|
| - FX_LPBYTE m_pCurPage;
|
| - volatile size_t m_nAvailBlocks;
|
| - void Initialize(FX_LPBYTE pStart, size_t pages)
|
| - {
|
| - m_pStartPage = m_pCurPage = pStart;
|
| - m_nAvailBlocks = pages * blockNum;
|
| - for (size_t n = 0; n < pages; n ++) {
|
| - ((T*)pStart)->Initialize();
|
| - pStart += FX_FIXEDMEM_PAGESIZE;
|
| - }
|
| - m_pLimitPos = pStart;
|
| - }
|
| - FX_BOOL IsEmpty() const
|
| - {
|
| - return m_nAvailBlocks == (m_pLimitPos - m_pStartPage) / FX_FIXEDMEM_PAGESIZE * blockNum;
|
| - }
|
| - FX_BOOL HasFreeBlock() const
|
| - {
|
| - return (FX_BOOL)m_nAvailBlocks;
|
| - }
|
| - FX_LPVOID Alloc(size_t size)
|
| - {
|
| - FXSYS_assert(m_nAvailBlocks);
|
| - do {
|
| - if (((T*)m_pCurPage)->HasFreeBlock()) {
|
| - m_nAvailBlocks --;
|
| - return ((T*)m_pCurPage)->Alloc(size);
|
| - }
|
| - m_pCurPage += FX_FIXEDMEM_PAGESIZE;
|
| - if (m_pCurPage == m_pLimitPos) {
|
| - m_pCurPage = m_pStartPage;
|
| - }
|
| - } while (TRUE);
|
| - return NULL;
|
| - }
|
| - void Free(FX_LPVOID p)
|
| - {
|
| - FXSYS_assert(p > (FX_LPVOID)m_pStartPage && p < (FX_LPVOID)m_pLimitPos);
|
| - ((T*)(m_pStartPage + ((FX_LPBYTE)p - m_pStartPage) / FX_FIXEDMEM_PAGESIZE * FX_FIXEDMEM_PAGESIZE))->Free(p);
|
| - m_nAvailBlocks ++;
|
| - }
|
| -};
|
| -typedef CFXMEM_FixedPages<FIXEDMEM_8BYTES_BLOCKNUM, 8> CFXMEM_8BytesPages;
|
| -typedef CFXMEM_FixedPages<FIXEDMEM_16BYTES_BLOCKNUM, 16> CFXMEM_16BytesPages;
|
| -typedef CFXMEM_FixedPages<FIXEDMEM_32BYTES_BLOCKNUM, 32> CFXMEM_32BytesPages;
|
| -class CFXMEM_Block
|
| -{
|
| -public:
|
| - size_t m_nBlockSize;
|
| - CFXMEM_Block* m_pNextBlock;
|
| -};
|
| -class CFXMEM_Page
|
| -{
|
| -public:
|
| - size_t m_nAvailSize;
|
| - CFXMEM_Block* m_pLimitPos;
|
| - CFXMEM_Block m_AvailHead;
|
| - void Initialize(size_t size);
|
| - FX_BOOL IsEmpty() const
|
| - {
|
| - return m_AvailHead.m_pNextBlock && m_AvailHead.m_nBlockSize == m_AvailHead.m_pNextBlock->m_nBlockSize;
|
| - }
|
| - FX_LPVOID Alloc(size_t size);
|
| - FX_LPVOID Realloc(FX_LPVOID p, size_t oldSize, size_t newSize);
|
| - void Free(FX_LPVOID p);
|
| -protected:
|
| - FX_LPVOID Alloc(CFXMEM_Block* pPrevBlock, CFXMEM_Block* pNextBlock, size_t size, size_t oldsize);
|
| -};
|
| -class CFXMEM_Pages
|
| -{
|
| -public:
|
| - CFXMEM_Page* m_pStartPage;
|
| - CFXMEM_Page* m_pLimitPos;
|
| - CFXMEM_Page* m_pCurPage;
|
| - size_t m_nPageSize;
|
| - void Initialize(FX_LPBYTE pStart, size_t pageSize, size_t pages);
|
| - FX_BOOL IsEmpty() const;
|
| - FX_LPVOID Alloc(size_t size);
|
| - FX_LPVOID Realloc(FX_LPVOID p, size_t oldSize, size_t newSize);
|
| - void Free(FX_LPVOID p);
|
| -};
|
| -class CFXMEM_Pool
|
| -{
|
| -public:
|
| - CFXMEM_Pool* m_pPrevPool;
|
| - CFXMEM_Pool* m_pNextPool;
|
| - CFXMEM_8BytesPages m_8BytesPages;
|
| - CFXMEM_16BytesPages m_16BytesPages;
|
| - CFXMEM_32BytesPages m_32BytesPages;
|
| - CFXMEM_Pages m_MidPages;
|
| - FX_BOOL m_bAlone;
|
| - FX_DWORD m_dwReserved[3];
|
| - FX_LPVOID m_pLimitPos;
|
| - CFXMEM_Page* m_pLargePage;
|
| - void Initialize(const FX_MEMCONFIG* pMemConfig, size_t size, size_t pageNum8Bytes, size_t pageNum16Bytes, size_t pageNum32Bytes, size_t pageNumMid);
|
| - FX_BOOL IsEmpty() const;
|
| - size_t GetSize(FX_LPVOID p) const;
|
| - FX_LPVOID Realloc(FX_LPVOID p, size_t oldSize, size_t newSize);
|
| - void Free(FX_LPVOID p);
|
| -};
|
| -class CFXMEM_FixedMgr
|
| -{
|
| -public:
|
| - void Initialize(size_t size);
|
| - FX_LPVOID Alloc(size_t size);
|
| - FX_LPVOID Realloc(FX_LPVOID p, size_t newSize);
|
| - void Free(FX_LPVOID p);
|
| - void FreeAll();
|
| - void Purge();
|
| - CFXMEM_Pool* GetFirstPool()
|
| - {
|
| - return &m_FirstPool;
|
| - }
|
| - size_t GetSize(FX_LPVOID p) const;
|
| - FXMEM_SystemMgr m_SystemMgr;
|
| - FXMEM_SystemMgr2* m_pExtender;
|
| - FX_LPVOID m_pReserved;
|
| - FX_MEMCONFIG m_MemConfig;
|
| -protected:
|
| - FX_LPVOID Alloc16(CFXMEM_Pool **pp32Pool = NULL, size_t size = 0);
|
| - FX_LPVOID Alloc32(size_t size);
|
| - FX_LPVOID AllocSmall(size_t size);
|
| - FX_LPVOID AllocMid(size_t size);
|
| - FX_LPVOID AllocLarge(size_t size);
|
| - FX_LPVOID ReallocSmall(CFXMEM_Pool* pPool, FX_LPVOID p, size_t oldSize, size_t newSize);
|
| - void FreePool(CFXMEM_Pool* pPool);
|
| - CFXMEM_Pool m_FirstPool;
|
| -};
|
| -#define FIXEDMEM_PROXYSIZE_0 (1024 * 1024 * 8)
|
| -#define FIXEDMEM_PROXYSIZE_1 (1024 * 1024 * 16)
|
| -#define FIXEDMEM_PROXYSIZE_2 (1024 * 1024 * 32)
|
| -#define FIXEDMEM_PROXYSIZE_3 (1024 * 1024 * 64)
|
| -#define FIXEDMEM_PROXYSIZE_4 (1024 * 1024 * 128)
|
| -#define FIXEDMEM_PROXYSIZE_5 (1024 * 1024 * 256)
|
| -const FX_MEMCONFIG* FixedMgr_GetConfig(size_t nSize);
|
| -class CFixedMgr_Proxy
|
| -{
|
| -public:
|
| - FXMEM_FoxitMgr* Initialize(FX_LPVOID pBuffer, size_t nSize, FX_BOOL bExtensible);
|
| - static FX_BOOL Common_More(FXMEM_SystemMgr2* pMgr, size_t alloc_size, void** new_memory, size_t* new_size);
|
| - static void Common_Free(FXMEM_SystemMgr2* pMgr, void* memory);
|
| - FXMEM_SystemMgr2 m_SystemMgr;
|
| - CFXMEM_Page* m_pFixedPage;
|
| - FX_LPVOID m_pBuffer;
|
| - size_t m_nSize;
|
| - FX_BOOL m_bExtensible;
|
| -};
|
| -#endif
|
|
|