//========================================= // onDelete //========================================= public void onDelete(uint mpHeap, uint mpBlock, HaloWarsMem.BALContext context) { HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(mpHeap); uint blockSize = pHeap.getBlockSize(mpBlock); drawBlock(mpBlock, blockSize, GDIStatic.CommonBGColor); }
//========================================= // onResize //========================================= public void onResize(uint mpHeap, uint mpOrigBlock, uint mNewSize, uint mpNewBlock, HaloWarsMem.BALContext context) { HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(mpHeap); uint blockSize = pHeap.getBlockSize(mpOrigBlock); drawBlock(mpOrigBlock, blockSize, GDIStatic.CommonBGColor); drawBlock(mpNewBlock, mNewSize, pHeap.ColorVal); }
//========================================= // onHeapRegister //========================================= public void onHeapRegister(uint mPtr, int flags, string name) { HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(mPtr); HeapAllocNode has = new HeapAllocNode(pHeap); mTreeView.addNode(has); mTreeView.updatePositions(); mTreeView.Refresh(); }
//========================================= // onHeapRegister //========================================= public void onHeapRegister(uint mPtr, int flags, string name) { HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(mPtr); fastTimeLine.addNewGraphLine(pHeap.getMemPtr(), pHeap.getName(), pHeap.ColorVal); }
//============================================================================ // onMessageRecieved //============================================================================ public void onMessageRecieved(PacketWrapper packet) { HaloWarsMem.eALPacketType type = (HaloWarsMem.eALPacketType)packet.mPacketType; switch (type) { //================================================ case HaloWarsMem.eALPacketType.cALNew: { HaloWarsMem.BALPacketNew pkt = new HaloWarsMem.BALPacketNew(packet.mPacketSize, packet.mPacketData); HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(pkt.mpHeap); if (pHeap == null) { return; } pHeap.allocMem(pkt.mSize, pkt.mpBlock, pkt.mBlockSize, pkt.mContext); //pass on mFileGroupings.onNew(pkt.mpHeap, pkt.mSize, pkt.mpBlock, pkt.mBlockSize, pkt.mContext); break; } //================================================ case HaloWarsMem.eALPacketType.cALResize: { HaloWarsMem.BALPacketResize pkt = new HaloWarsMem.BALPacketResize(packet.mPacketSize, packet.mPacketData); HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(pkt.mpHeap); if (pHeap == null) { return; } //pass on mFileGroupings.onResize(pkt.mpHeap, pkt.mpOrigBlock, pkt.mNewSize, pkt.mpNewBlock, pkt.mContext); //this needs to be done last pHeap.resizeMem(pkt.mpOrigBlock, pkt.mNewSize, pkt.mpNewBlock, pkt.mContext); break; } //================================================ case HaloWarsMem.eALPacketType.cALDelete: { HaloWarsMem.BALPacketDelete pkt = new HaloWarsMem.BALPacketDelete(packet.mPacketSize, packet.mPacketData); HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(pkt.mpHeap); if (pHeap == null) { return; } //pass on mFileGroupings.onDelete(pkt.mpHeap, pkt.mpBlock, pkt.mContext); //need to pass on before deletion to ensure any queries occur pHeap.deleteMem(pkt.mpBlock, pkt.mContext); break; } //================================================ case HaloWarsMem.eALPacketType.cALRegisterHeap: { HaloWarsMem.BALPacketRegisterHeap pkt = new HaloWarsMem.BALPacketRegisterHeap(packet.mPacketSize, packet.mPacketData); AllocStats.registerHeap(pkt); //propagate to those that care.. heapLines.onHeapRegister(pkt.mPtr, pkt.mFlags, pkt.mName); heapFileView.onHeapRegister(pkt.mPtr, pkt.mFlags, pkt.mName); break; } //================================================ case HaloWarsMem.eALPacketType.cALIgnoreLeaf: { HaloWarsMem.BALPacketIgnoreLeaf pkt = new HaloWarsMem.BALPacketIgnoreLeaf(packet.mPacketSize, packet.mPacketData); HaloWarsMem.getSymbolInfo().addIgnoreSymbol(pkt.mSymbolName); break; } case HaloWarsMem.eALPacketType.cALEOF: { heapLines.onDisconnect(); heapKey.onDisconnect(); topAllocs.onDisconnect(); heapFileView.onDisconnect(); mFileTimelines.onDisconnect(); mFileGroupings.onDisconnect(); break; } } ; }
//========================================= // onNew //========================================= public void onNew(uint mpHeap, uint mSize, uint mpBlock, uint mBlockSize, HaloWarsMem.BALContext context) { HeapAlloc pHeap = AllocStats.getHeapFromBasePtr(mpHeap); drawBlock(mpBlock, mBlockSize, pHeap.ColorVal); }