diff -r 10e98eab6f85 -r a359256acfc6 webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h --- a/webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h Fri Jul 03 15:54:40 2009 +0100 +++ b/webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h Thu Aug 27 07:44:59 2009 +0300 @@ -178,12 +178,12 @@ /*MACROS converted functions*/ static inline void unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I); static inline void insert_small_chunk(mstate M,mchunkptr P, size_t S); - static inline void insert_chunk(mstate M,mchunkptr P,size_t S); + static inline void insert_chunk(mstate M,mchunkptr P,size_t S,size_t NPAGES); static inline void unlink_large_chunk(mstate M,tchunkptr X); static inline void unlink_small_chunk(mstate M, mchunkptr P,size_t S); static inline void unlink_chunk(mstate M, mchunkptr P, size_t S); static inline void compute_tree_index(size_t S, bindex_t& I); - static inline void insert_large_chunk(mstate M,tchunkptr X,size_t S); + static inline void insert_large_chunk(mstate M,tchunkptr X,size_t S,size_t NPAGES); static inline void replace_dv(mstate M, mchunkptr P, size_t S); static inline void compute_bit2idx(binmap_t X,bindex_t& I); /*MACROS converted functions*/ @@ -247,7 +247,39 @@ void paged_free(void* p); void* paged_reallocate(void* p, unsigned size); pagecell* paged_descriptor(const void* p) const ; -private: + + /* Dl heap log dump functions*/ +#ifdef OOM_LOGGING + void dump_heap_logs(size_t fail_size); + void dump_dl_free_chunks(); + void dump_large_chunk(mstate m, tchunkptr t); + size_t iUnmappedChunkSize; +#endif +private: + /* Dubug checks for chunk page support*/ +#ifdef DL_CHUNK_MEM_DEBUG +#define do_chunk_page_release_check(p, psize, fm, mem_released) debug_chunk_page_release_check(p, psize, fm, mem_released) +#define do_check_large_chunk_access(p, psize) debug_check_large_chunk_access(p, psize) +#define do_check_small_chunk_access(p, psize) debug_check_small_chunk_access(p, psize) +#define do_check_any_chunk_access(p, psize) debug_check_any_chunk_access(p, psize) + void debug_check_large_chunk_access(tchunkptr p, size_t psize); + void debug_check_small_chunk_access(mchunkptr p, size_t psize); + void debug_check_any_chunk_access(mchunkptr p, size_t psize); + void debug_chunk_page_release_check(mchunkptr p, size_t psize, mstate fm, int mem_released); +#else +#define do_chunk_page_release_check(p, psize, fm, mem_released) +#define do_check_large_chunk_access(p, psize) +#define do_check_small_chunk_access(p, psize) +#define do_check_any_chunk_access(p, psize) +#endif + + /* Chunk page release mechanism support */ + TInt map_chunk_pages(tchunkptr p, size_t psize); + TInt unmap_chunk_pages(tchunkptr p, size_t psize, size_t prev_npages); + TInt map_chunk_pages_partial(tchunkptr tp, size_t psize, tchunkptr r, size_t rsize); + TInt sys_trim_partial(mstate m, mchunkptr prev, size_t psize, size_t prev_npages); + size_t free_chunk_threshold; + // paged allocator structures enum {npagecells=4}; pagecell pagelist[npagecells]; // descriptors for page-aligned large allocations