webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h
changeset 10 a359256acfc6
parent 1 7c90e6132015
child 46 30342f40acbf
equal deleted inserted replaced
5:10e98eab6f85 10:a359256acfc6
   176 	void* tmalloc_large(mstate m, size_t nb);
   176 	void* tmalloc_large(mstate m, size_t nb);
   177 	void* tmalloc_small(mstate m, size_t nb);
   177 	void* tmalloc_small(mstate m, size_t nb);
   178 	/*MACROS converted functions*/
   178 	/*MACROS converted functions*/
   179 	static inline void unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I);
   179 	static inline void unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I);
   180 	static inline void insert_small_chunk(mstate M,mchunkptr P, size_t S);
   180 	static inline void insert_small_chunk(mstate M,mchunkptr P, size_t S);
   181 	static inline void insert_chunk(mstate M,mchunkptr P,size_t S);
   181 	static inline void insert_chunk(mstate M,mchunkptr P,size_t S,size_t NPAGES);
   182 	static inline void unlink_large_chunk(mstate M,tchunkptr X);
   182 	static inline void unlink_large_chunk(mstate M,tchunkptr X);
   183 	static inline void unlink_small_chunk(mstate M, mchunkptr P,size_t S);
   183 	static inline void unlink_small_chunk(mstate M, mchunkptr P,size_t S);
   184 	static inline void unlink_chunk(mstate M, mchunkptr P, size_t S);
   184 	static inline void unlink_chunk(mstate M, mchunkptr P, size_t S);
   185 	static inline void compute_tree_index(size_t S, bindex_t& I);
   185 	static inline void compute_tree_index(size_t S, bindex_t& I);
   186 	static inline void insert_large_chunk(mstate M,tchunkptr X,size_t S);
   186 	static inline void insert_large_chunk(mstate M,tchunkptr X,size_t S,size_t NPAGES);
   187 	static inline void replace_dv(mstate M, mchunkptr P, size_t S);
   187 	static inline void replace_dv(mstate M, mchunkptr P, size_t S);
   188 	static inline void compute_bit2idx(binmap_t X,bindex_t& I);
   188 	static inline void compute_bit2idx(binmap_t X,bindex_t& I);
   189 	/*MACROS converted functions*/
   189 	/*MACROS converted functions*/
   190 	TAny* SetBrk(TInt32 aDelta);
   190 	TAny* SetBrk(TInt32 aDelta);
   191 	void* internal_realloc(mstate m, void* oldmem, size_t bytes);
   191 	void* internal_realloc(mstate m, void* oldmem, size_t bytes);
   245 	void paged_init(unsigned pagepower);	
   245 	void paged_init(unsigned pagepower);	
   246 	void* paged_allocate(unsigned size);
   246 	void* paged_allocate(unsigned size);
   247 	void paged_free(void* p);	
   247 	void paged_free(void* p);	
   248 	void* paged_reallocate(void* p, unsigned size);
   248 	void* paged_reallocate(void* p, unsigned size);
   249 	pagecell* paged_descriptor(const void* p) const ;
   249 	pagecell* paged_descriptor(const void* p) const ;
   250 private: 
   250 
       
   251 	/* Dl heap log dump functions*/
       
   252 #ifdef OOM_LOGGING    
       
   253     void dump_heap_logs(size_t fail_size);
       
   254     void dump_dl_free_chunks();
       
   255     void dump_large_chunk(mstate m, tchunkptr t);
       
   256     size_t iUnmappedChunkSize;
       
   257 #endif
       
   258 private:
       
   259      /* Dubug checks for chunk page support*/
       
   260 #ifdef DL_CHUNK_MEM_DEBUG
       
   261 #define do_chunk_page_release_check(p, psize, fm, mem_released) debug_chunk_page_release_check(p, psize, fm, mem_released)
       
   262 #define do_check_large_chunk_access(p, psize) debug_check_large_chunk_access(p, psize)
       
   263 #define do_check_small_chunk_access(p, psize) debug_check_small_chunk_access(p, psize)
       
   264 #define do_check_any_chunk_access(p, psize) debug_check_any_chunk_access(p, psize)    
       
   265     void debug_check_large_chunk_access(tchunkptr p, size_t psize);
       
   266     void debug_check_small_chunk_access(mchunkptr p, size_t psize);
       
   267     void debug_check_any_chunk_access(mchunkptr p, size_t psize);
       
   268     void debug_chunk_page_release_check(mchunkptr p, size_t psize, mstate fm, int mem_released);    
       
   269 #else
       
   270 #define do_chunk_page_release_check(p, psize, fm, mem_released)
       
   271 #define do_check_large_chunk_access(p, psize)
       
   272 #define do_check_small_chunk_access(p, psize)
       
   273 #define do_check_any_chunk_access(p, psize)    
       
   274 #endif
       
   275     
       
   276     /* Chunk page release mechanism support */
       
   277     TInt map_chunk_pages(tchunkptr p, size_t psize);
       
   278     TInt unmap_chunk_pages(tchunkptr p, size_t psize, size_t prev_npages);
       
   279     TInt map_chunk_pages_partial(tchunkptr tp, size_t psize, tchunkptr r, size_t rsize);
       
   280     TInt sys_trim_partial(mstate m, mchunkptr prev, size_t psize, size_t prev_npages);    
       
   281     size_t free_chunk_threshold;
       
   282     
   251 	// paged allocator structures
   283 	// paged allocator structures
   252 	enum {npagecells=4};
   284 	enum {npagecells=4};
   253 	pagecell pagelist[npagecells];		// descriptors for page-aligned large allocations
   285 	pagecell pagelist[npagecells];		// descriptors for page-aligned large allocations
   254 	/**
   286 	/**
   255 	 *always keep this variable at the bottom of the class as its used as
   287 	 *always keep this variable at the bottom of the class as its used as