164 _LIT( KItem9d, "Overhead" ); |
167 _LIT( KItem9d, "Overhead" ); |
165 _LIT( KItem10, "Min. length" ); |
168 _LIT( KItem10, "Min. length" ); |
166 _LIT( KItem11, "Max. length" ); |
169 _LIT( KItem11, "Max. length" ); |
167 _LIT( KItem12, "Debug Allocator Library" ); |
170 _LIT( KItem12, "Debug Allocator Library" ); |
168 |
171 |
169 HBufC* hItem = FormatItem( KItem0, aHeap->Type() ); |
172 HBufC* hItem = FormatItemLC( KItem0, aHeap->Type() ); |
170 TPtr pItem(hItem->Des()); |
173 TPtr pItem(hItem->Des()); |
171 model->AppendL( pItem ); |
174 model->AppendL( pItem ); |
|
175 CleanupStack::PopAndDestroy( hItem ); |
172 pItem.Zero(); |
176 pItem.Zero(); |
173 |
177 |
174 hItem = FormatItem( KItem1, aHeap->Size() ); |
178 hItem = FormatItemLC( KItem1, aHeap->Size() ); |
175 pItem = hItem->Des(); |
179 pItem = hItem->Des(); |
176 model->AppendL( pItem ); |
180 model->AppendL( pItem ); |
|
181 CleanupStack::PopAndDestroy( hItem ); |
177 pItem.Zero(); |
182 pItem.Zero(); |
178 |
183 |
179 TUint address( aHeap->BaseAddress() ); |
184 TUint address( aHeap->BaseAddress() ); |
180 hItem = FormatItem( KItem8b, address ); |
185 hItem = FormatItemLC( KItem8b, address ); |
181 pItem = hItem->Des(); |
186 pItem = hItem->Des(); |
182 model->AppendL( pItem ); |
187 model->AppendL( pItem ); |
|
188 CleanupStack::PopAndDestroy( hItem ); |
183 pItem.Zero(); |
189 pItem.Zero(); |
184 |
190 |
185 if(aHeap->Shared()) //Yes / No value formatting |
191 if(aHeap->Shared()) //Yes / No value formatting |
186 hItem = FormatItem( KItem1b, KMemSpyCaptionYes ); |
192 hItem = FormatItemLC( KItem1b, KMemSpyCaptionYes ); |
187 else |
193 else |
188 hItem = FormatItem( KItem1b, KMemSpyCaptionNo ); |
194 hItem = FormatItemLC( KItem1b, KMemSpyCaptionNo ); |
189 pItem = hItem->Des(); |
195 pItem = hItem->Des(); |
190 model->AppendL( pItem ); |
196 model->AppendL( pItem ); |
191 pItem.Zero(); |
197 CleanupStack::PopAndDestroy( hItem ); |
192 |
198 pItem.Zero(); |
193 hItem = FormatItem( KItem2, aHeap->ChunkSize() ); |
199 |
194 pItem = hItem->Des(); |
200 hItem = FormatItemLC( KItem2, aHeap->ChunkSize() ); |
195 model->AppendL( pItem ); |
201 pItem = hItem->Des(); |
196 pItem.Zero(); |
202 model->AppendL( pItem ); |
197 |
203 CleanupStack::PopAndDestroy( hItem ); |
198 hItem = FormatItem( KItem3, aHeap->AllocationsCount() ); |
204 pItem.Zero(); |
199 pItem = hItem->Des(); |
205 |
200 model->AppendL( pItem ); |
206 hItem = FormatItemLC( KItem3, aHeap->AllocationsCount() ); |
201 pItem.Zero(); |
207 pItem = hItem->Des(); |
202 |
208 model->AppendL( pItem ); |
203 hItem = FormatItem( KItem4, aHeap->FreeCount() ); |
209 CleanupStack::PopAndDestroy( hItem ); |
204 pItem = hItem->Des(); |
210 pItem.Zero(); |
205 model->AppendL( pItem ); |
211 |
206 pItem.Zero(); |
212 hItem = FormatItemLC( KItem4, aHeap->FreeCount() ); |
207 |
213 pItem = hItem->Des(); |
208 hItem = FormatItem( KItem5, aHeap->BiggestAllocation() ); |
214 model->AppendL( pItem ); |
209 pItem = hItem->Des(); |
215 CleanupStack::PopAndDestroy( hItem ); |
210 model->AppendL( pItem ); |
216 pItem.Zero(); |
211 pItem.Zero(); |
217 |
212 |
218 hItem = FormatItemLC( KItem5, aHeap->BiggestAllocation() ); |
213 hItem = FormatItem( KItem6, aHeap->BiggestFree() ); |
219 pItem = hItem->Des(); |
214 pItem = hItem->Des(); |
220 model->AppendL( pItem ); |
215 model->AppendL( pItem ); |
221 CleanupStack::PopAndDestroy( hItem ); |
216 pItem.Zero(); |
222 pItem.Zero(); |
217 |
223 |
218 hItem = FormatItem( KItem6a, aHeap->TotalAllocations() ); |
224 hItem = FormatItemLC( KItem6, aHeap->BiggestFree() ); |
219 pItem = hItem->Des(); |
225 pItem = hItem->Des(); |
220 model->AppendL( pItem ); |
226 model->AppendL( pItem ); |
221 pItem.Zero(); |
227 CleanupStack::PopAndDestroy( hItem ); |
222 |
228 pItem.Zero(); |
223 hItem = FormatItem( KItem6b, aHeap->TotalFree() ); |
229 |
224 pItem = hItem->Des(); |
230 hItem = FormatItemLC( KItem6a, aHeap->TotalAllocations() ); |
225 model->AppendL( pItem ); |
231 pItem = hItem->Des(); |
226 pItem.Zero(); |
232 model->AppendL( pItem ); |
227 |
233 CleanupStack::PopAndDestroy( hItem ); |
228 hItem = FormatItem( KItem7, aHeap->SlackFreeSpace() ); |
234 pItem.Zero(); |
229 pItem = hItem->Des(); |
235 |
230 model->AppendL( pItem ); |
236 hItem = FormatItemLC( KItem6b, aHeap->TotalFree() ); |
|
237 pItem = hItem->Des(); |
|
238 model->AppendL( pItem ); |
|
239 CleanupStack::PopAndDestroy( hItem ); |
|
240 pItem.Zero(); |
|
241 |
|
242 hItem = FormatItemLC( KItem7, aHeap->SlackFreeSpace() ); |
|
243 pItem = hItem->Des(); |
|
244 model->AppendL( pItem ); |
|
245 CleanupStack::PopAndDestroy( hItem ); |
231 pItem.Zero(); |
246 pItem.Zero(); |
232 |
247 |
233 TReal iOneHundred( aHeap->Size() ); |
248 TReal iOneHundred( aHeap->Size() ); |
234 TReal iValue( aHeap->Fragmentation() ); |
249 TReal iValue( aHeap->Fragmentation() ); |
235 hItem = FormatPercentageItem( KItem8a, iOneHundred, iValue ); |
250 hItem = FormatPercentageItemLC( KItem8a, iOneHundred, iValue ); |
236 pItem = hItem->Des(); |
251 pItem = hItem->Des(); |
237 model->AppendL( pItem ); |
252 model->AppendL( pItem ); |
238 pItem.Zero(); |
253 CleanupStack::PopAndDestroy( hItem ); |
239 |
254 pItem.Zero(); |
240 hItem = FormatItem( KItem13, aHeap->HeaderSizeA() ); |
255 |
241 pItem = hItem->Des(); |
256 hItem = FormatItemLC( KItem13, aHeap->HeaderSizeA() ); |
242 model->AppendL( pItem ); |
257 pItem = hItem->Des(); |
243 pItem.Zero(); |
258 model->AppendL( pItem ); |
244 |
259 CleanupStack::PopAndDestroy( hItem ); |
245 hItem = FormatItem( KItem14, aHeap->HeaderSizeF() ); |
260 pItem.Zero(); |
246 pItem = hItem->Des(); |
261 |
247 model->AppendL( pItem ); |
262 hItem = FormatItemLC( KItem14, aHeap->HeaderSizeF() ); |
248 pItem.Zero(); |
263 pItem = hItem->Des(); |
249 |
264 model->AppendL( pItem ); |
250 hItem = FormatItem( KItem9a, aHeap->AllocationOverhead() ); |
265 CleanupStack::PopAndDestroy( hItem ); |
251 pItem = hItem->Des(); |
266 pItem.Zero(); |
252 model->AppendL( pItem ); |
267 |
253 pItem.Zero(); |
268 hItem = FormatItemLC( KItem9a, aHeap->AllocationOverhead() ); |
254 |
269 pItem = hItem->Des(); |
255 hItem = FormatItem( KItem9b, aHeap->FreeOverhead() ); |
270 model->AppendL( pItem ); |
256 pItem = hItem->Des(); |
271 CleanupStack::PopAndDestroy( hItem ); |
257 model->AppendL( pItem ); |
272 pItem.Zero(); |
258 pItem.Zero(); |
273 |
259 |
274 hItem = FormatItemLC( KItem9b, aHeap->FreeOverhead() ); |
260 hItem = FormatItem( KItem9c, aHeap->TotalOverhead() ); |
275 pItem = hItem->Des(); |
261 pItem = hItem->Des(); |
276 model->AppendL( pItem ); |
262 model->AppendL( pItem ); |
277 CleanupStack::PopAndDestroy( hItem ); |
|
278 pItem.Zero(); |
|
279 |
|
280 hItem = FormatItemLC( KItem9c, aHeap->TotalOverhead() ); |
|
281 pItem = hItem->Des(); |
|
282 model->AppendL( pItem ); |
|
283 CleanupStack::PopAndDestroy( hItem ); |
263 pItem.Zero(); |
284 pItem.Zero(); |
264 |
285 |
265 TReal iOverhead( aHeap->Overhead() ); |
286 TReal iOverhead( aHeap->Overhead() ); |
266 hItem = FormatPercentageItem( KItem9d, iOneHundred, iOverhead ); |
287 hItem = FormatPercentageItemLC( KItem9d, iOneHundred, iOverhead ); |
267 pItem = hItem->Des(); |
288 pItem = hItem->Des(); |
268 model->AppendL( pItem ); |
289 model->AppendL( pItem ); |
269 pItem.Zero(); |
290 CleanupStack::PopAndDestroy( hItem ); |
270 |
291 pItem.Zero(); |
271 hItem = FormatItem( KItem10, aHeap->MinLength() ); |
292 |
272 pItem = hItem->Des(); |
293 hItem = FormatItemLC( KItem10, aHeap->MinLength() ); |
273 model->AppendL( pItem ); |
294 pItem = hItem->Des(); |
|
295 model->AppendL( pItem ); |
|
296 CleanupStack::PopAndDestroy( hItem ); |
274 pItem.Zero(); |
297 pItem.Zero(); |
275 |
298 |
276 hItem = FormatItem( KItem11, aHeap->MaxLength() ); |
299 hItem = FormatItemLC( KItem11, aHeap->MaxLength() ); |
277 pItem = hItem->Des(); |
300 pItem = hItem->Des(); |
278 model->AppendL( pItem ); |
301 model->AppendL( pItem ); |
|
302 CleanupStack::PopAndDestroy( hItem ); |
279 pItem.Zero(); |
303 pItem.Zero(); |
280 |
304 |
281 if( aHeap->DebugAllocatorLibrary() ) |
305 if( aHeap->DebugAllocatorLibrary() ) |
282 hItem = FormatItem( KItem12, KMemSpyCaptionYes ); |
306 hItem = FormatItemLC( KItem12, KMemSpyCaptionYes ); |
283 else |
307 else |
284 hItem = FormatItem( KItem12, KMemSpyCaptionNo ); |
308 hItem = FormatItemLC( KItem12, KMemSpyCaptionNo ); |
285 pItem = hItem->Des(); |
309 pItem = hItem->Des(); |
286 model->AppendL( pItem ); |
310 model->AppendL( pItem ); |
|
311 CleanupStack::PopAndDestroy( hItem ); |
287 pItem.Zero(); |
312 pItem.Zero(); |
288 } |
313 } |
289 else |
314 else |
290 { |
315 { |
291 HBufC* hItem = FormatItem( _L("Not Found"), _L("") ); |
316 HBufC* hItem = FormatItemLC( _L("Not Found"), _L("") ); |
292 TPtr pItem(hItem->Des()); |
317 TPtr pItem(hItem->Des()); |
293 model->AppendL( pItem ); |
318 model->AppendL( pItem ); |
|
319 CleanupStack::PopAndDestroy( hItem ); |
294 pItem.Zero(); |
320 pItem.Zero(); |
295 } |
321 } |
296 |
322 |
297 return model; |
323 return model; |
298 } |
324 } |
299 |
325 |
300 HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, const TDesC& aValue ) |
326 HBufC* CMemSpyViewKernelHeap::FormatItemLC( const TDesC& aCaption, const TDesC& aValue ) |
301 { |
327 { |
302 HBufC* retBuf = HBufC::NewL( KMaxName ); |
328 HBufC* retBuf = HBufC::NewLC( KMaxName ); |
303 TPtr pRetBuf( retBuf->Des() ); |
329 TPtr pRetBuf( retBuf->Des() ); |
304 pRetBuf.Zero(); |
330 pRetBuf.Zero(); |
305 pRetBuf.Append( _L("\t") ); |
331 pRetBuf.Append( _L("\t") ); |
306 pRetBuf.Append( aCaption ); |
332 pRetBuf.Append( aCaption ); |
307 pRetBuf.Append( _L("\t\t") ); |
333 pRetBuf.Append( _L("\t\t") ); |
308 pRetBuf.Append( aValue ); |
334 pRetBuf.Append( aValue ); |
309 return retBuf; |
335 return retBuf; |
310 } |
336 } |
311 |
337 |
312 HBufC* CMemSpyViewKernelHeap::FormatItem( const TDesC& aCaption, TInt aValue ) |
338 HBufC* CMemSpyViewKernelHeap::FormatItemLC( const TDesC& aCaption, TInt aValue ) |
313 { |
339 { |
314 HBufC* retBuf = HBufC::NewL( KMaxName ); |
340 HBufC* retBuf = HBufC::NewLC( KMaxName ); |
315 TPtr pRetBuf( retBuf->Des() ); |
341 TPtr pRetBuf( retBuf->Des() ); |
316 pRetBuf.Zero(); |
342 pRetBuf.Zero(); |
317 |
343 |
318 TBuf<KMemSpyBufferSize> val; |
344 TBuf<KMemSpyBufferSize> val; |
319 val.Format( KMemSpyDecFormat, aValue ); |
345 val.Format( KMemSpyDecFormat, aValue ); |