memspy/Engine/Source/Helpers/MemSpyEngineHelperActiveObject.cpp
branchRCL_3
changeset 49 7fdc9a71d314
parent 44 52e343bb8f80
child 59 8ad140f3dd41
--- a/memspy/Engine/Source/Helpers/MemSpyEngineHelperActiveObject.cpp	Wed Sep 15 00:19:18 2010 +0300
+++ b/memspy/Engine/Source/Helpers/MemSpyEngineHelperActiveObject.cpp	Wed Sep 15 13:53:27 2010 +0300
@@ -68,7 +68,7 @@
 
 EXPORT_C CMemSpyEngineActiveObjectArray* CMemSpyEngineHelperActiveObject::ActiveObjectListL( const CMemSpyThread& aThread )
     {
-    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - START");
+    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - START");
     CMemSpyEngineActiveObjectArray* array = CMemSpyEngineActiveObjectArray::NewLC();
 
     // Is the thread's process already suspended? If not, we need to do it now.
@@ -76,7 +76,7 @@
     const TBool isSuspended = ( iEngine.SuspendedProcessId() == parentProcessId );
     if  ( !isSuspended )
         {
-        //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - suspending process");
+        //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - suspending process");
         iEngine.ProcessSuspendLC( parentProcessId );
         }
 
@@ -84,7 +84,7 @@
     CleanupStack::PushL( TCleanupItem( CleanupHeapWalk, this ) );
 
     // Get the thread info
-    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - getting thread info...");
+    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - getting thread info...");
     TMemSpyDriverThreadInfo threadInfo;
     TInt err = iEngine.Driver().GetThreadInfo( aThread.Id(), threadInfo );
     User::LeaveIfError( err );
@@ -95,15 +95,15 @@
 #endif
 
     // Get the heap info - we need this for verification purposes
-    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - getting heap info...");
+    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - getting heap info...");
     err = iEngine.Driver().GetHeapInfoUser( iHeapInfo, aThread.Id() );
     User::LeaveIfError( err );
-    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - allocated cell header length is: %d", iHeapInfo.iHeapCellHeaderLengthAllocated);
+    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - allocated cell header length is: %d", iHeapInfo.iHeapCellHeaderLengthAllocated);
 
     // Do we have a ROM-based scheduler pointer?
-    if  ( scheduler != NULL && iHeapInfo.Type() == TMemSpyHeapInfo::ETypeRHeap )
+    if  ( scheduler != NULL && iHeapInfo.Type() != TMemSpyHeapInfo::ETypeUnknown )
         {
-        //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - scheduler: 0x%08x", scheduler);
+        //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - scheduler: 0x%08x", scheduler);
 
         // Let's try to get the scheduler's heap cell...
         HBufC8* data = SchedulerHeapCellDataLC( scheduler, aThread.Id() );
@@ -114,14 +114,14 @@
         }
 
     // Tidy up
-    CleanupStack::PopAndDestroy(); // heap walk cleanup item
+    CleanupStack::PopAndDestroy(this); // heap walk cleanup item
     if  ( !isSuspended )
         {
-        iEngine.ProcessResume();
+        CleanupStack::PopAndDestroy(); // will resume the process we suspended earlier
         }
     //
     CleanupStack::Pop( array );
-    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListLC() - END");
+    //RDebug::Printf("CMemSpyEngineHelperActiveObject::ActiveObjectListL() - END");
     return array;
     }
 
@@ -149,9 +149,9 @@
     //RDebug::Printf("CMemSpyEngineHelperActiveObject::SchedulerHeapCellDataLC() - err: %d, cellLength: %d, cellAllocationNumber: %d, cellType: %d", err, cellLength, cellAllocationNumber, cellType);
     User::LeaveIfError( err );
     
-    if  ( cellType == EMemSpyDriverGoodAllocatedCell )
+	if (cellType & EMemSpyDriverAllocatedCellMask)
         {
-        const TInt payloadLength = cellLength - iHeapInfo.AsRHeap().MetaData().HeaderSizeAllocated();
+        const TInt payloadLength = cellLength;
         HBufC8* data = HBufC8::NewLC( payloadLength );
         TPtr8 pData( data->Des() );
         //
@@ -281,9 +281,9 @@
     //RDebug::Printf("CMemSpyEngineHelperActiveObject::ReadActiveObjectDataL() - err: %d, cellLength: %d, cellAllocationNumber: %d, cellType: %d", err, cellLength, cellAllocationNumber, cellType);
     User::LeaveIfError( err );
     
-    if  ( cellType == EMemSpyDriverGoodAllocatedCell )
+    if (cellType & EMemSpyDriverAllocatedCellMask)
         {
-        const TInt payloadLength = cellLength - iHeapInfo.AsRHeap().MetaData().HeaderSizeAllocated();
+        const TInt payloadLength = cellLength;
         //RDebug::Printf("CMemSpyEngineHelperActiveObject::ReadActiveObjectDataL() - payloadLength: %d", payloadLength);
 
         // const TInt payloadLength = Max( 512, cellLength - iHeapInfo.iHeapCellHeaderLengthAllocated ); // Prevent negative payload lengths?