diff -r 10e98eab6f85 -r a359256acfc6 webengine/osswebengine/MemoryManager/Inc/DLA.h --- a/webengine/osswebengine/MemoryManager/Inc/DLA.h Fri Jul 03 15:54:40 2009 +0100 +++ b/webengine/osswebengine/MemoryManager/Inc/DLA.h Thu Aug 27 07:44:59 2009 +0300 @@ -616,6 +616,8 @@ struct malloc_tree_chunk* child[2]; struct malloc_tree_chunk* parent; bindex_t index; + size_t pageout; /* chunk pageout flag */ + size_t npages; /* chunk pageout size */ }; typedef struct malloc_tree_chunk tchunk; @@ -652,10 +654,10 @@ struct malloc_state { binmap_t smallmap; binmap_t treemap; - size_t dvsize; + size_t dvsize; // unused size_t topsize; TUint8* least_addr; - mchunkptr dv; + mchunkptr dv; // unused mchunkptr top; size_t trim_check; size_t magic; @@ -1045,4 +1047,46 @@ unsigned size; }; /******CODE TO SUPORT SLAB ALLOCATOR******/ + + /****** COMMON DEFS CHUNK PAGE MAP/UNMAP *****/ +#define CHUNK_PAGEOUT_THESHOLD (12*1024U) +#define CHUNK_PAGE_OUT_FLAG (98989U) +#define tchunk_page_align(p) (char*)page_align((size_t)(p) + sizeof(tchunk) + TOP_FOOT_SIZE) +#define address_offset(HIGH, LOW) (size_t)((char*)(HIGH) - (char*)(LOW)) + +/* tree_malloc_chunk pageout header operations */ +#define set_tchunk_mem_pageout(TP, NPAGES) \ + { (TP)->pageout = CHUNK_PAGE_OUT_FLAG; (TP)->npages = (NPAGES); } +#define reset_tchunk_mem_pageout(TP) \ + { (TP)->pageout = 0; (TP)->npages = 0; } +#define page_not_in_memory(P, S) \ + ( !is_small(S) && ( (((tchunkptr)(P))->pageout==CHUNK_PAGE_OUT_FLAG)?1:0 ) ) + + +#ifdef DL_CHUNK_MEM_DEBUG +#define ASSERT_RCHUNK_SIZE() \ + {RChunk rchunk; rchunk.SetHandle(iChunkHandle); assert(iChunkSize == rchunk.Size());} +#define TRACE_DL_CHUNK_MAP(c_addr, csize, page_addr, page_size) \ + MEM_LOGF(_L8("DL_CHUNK_MAP$$:: chunk_addr=%x, chunk_size=%d, page_addr=%x, page_size=%d"), c_addr, csize, page_addr, (page_size)); +#define TRACE_DL_CHUNK_UNMAP(c_addr, csize, page_addr, page_size) \ + MEM_LOGF(_L8("DL_CHUNK_UNMAP:: chunk_addr=%x, chunk_size=%d, page_addr=%x, page_size=%d"), c_addr, csize, page_addr, (page_size)); +#else +#define ASSERT_RCHUNK_SIZE() +#define TRACE_DL_CHUNK_MAP(c_addr, csize, p_addr, psize) +#define TRACE_DL_CHUNK_UNMAP(c_addr, csize, p_addr, psize) +#endif + +#ifdef OOM_LOGGING +#define TRACE_UNMAPPED_CHUNK(SZ) \ + iUnmappedChunkSize += (SZ); +#define MEM_DUMP_OOM_LOGS(NB, MSG) \ + MEM_LOG(MSG); \ + C_LOG(MSG); \ + dump_heap_logs(NB) +#else +#define MEM_DUMP_OOM_LOGS(NB, MSG) +#define TRACE_UNMAPPED_CHUNK(SZ) +#endif + + /****** COMMON DEFS PAGE MAP/UNMAP *****/ #endif/*__DLA__*/