Search in sources :

Example 1 with MM_LockingFreeHeapRegionListPointer

use of com.ibm.j9ddr.vm29.pointer.generated.MM_LockingFreeHeapRegionListPointer in project openj9 by eclipse.

the class DumpSegregatedStatsCommand method getTotalRegions.

/**
 * Based off of MM_HeapRegionQueue::getTotalRegions. Returns the number of regions.
 * This function will calculate the number of regions differently according to the type of
 * the actual subclass.
 * @throws CorruptDataException
 */
public long getTotalRegions(MM_HeapRegionListPointer heapRegionList) throws CorruptDataException {
    long count = 0;
    StructurePointer heapRegionQueue = heapRegionList.getAsRuntimeType();
    if (heapRegionQueue instanceof MM_LockingHeapRegionQueuePointer) {
        MM_LockingHeapRegionQueuePointer lockingHeapRegionQueue = (MM_LockingHeapRegionQueuePointer) heapRegionQueue;
        if (lockingHeapRegionQueue._singleRegionsOnly()) {
            count = lockingHeapRegionQueue._length().longValue();
        } else {
            MM_HeapRegionDescriptorSegregatedPointer heapRegionDescriptorSegregated = lockingHeapRegionQueue._head();
            while (heapRegionDescriptorSegregated.notNull()) {
                count += heapRegionDescriptorSegregated._regionsInSpan().longValue();
                heapRegionDescriptorSegregated = heapRegionDescriptorSegregated._next();
            }
        }
    } else if (heapRegionQueue instanceof MM_LockingFreeHeapRegionListPointer) {
        MM_LockingFreeHeapRegionListPointer lockingFreeHeapRegionQueue = (MM_LockingFreeHeapRegionListPointer) heapRegionQueue;
        MM_HeapRegionDescriptorSegregatedPointer heapRegionDescriptorSegregated = lockingFreeHeapRegionQueue._head();
        while (heapRegionDescriptorSegregated.notNull()) {
            count += heapRegionDescriptorSegregated._regionsInSpan().longValue();
            heapRegionDescriptorSegregated = heapRegionDescriptorSegregated._next();
        }
    } else {
        throw new CorruptDataException("Bad HeapRegionList type");
    }
    return count;
}
Also used : MM_LockingHeapRegionQueuePointer(com.ibm.j9ddr.vm29.pointer.generated.MM_LockingHeapRegionQueuePointer) MM_HeapRegionDescriptorSegregatedPointer(com.ibm.j9ddr.vm29.pointer.generated.MM_HeapRegionDescriptorSegregatedPointer) StructurePointer(com.ibm.j9ddr.vm29.pointer.StructurePointer) CorruptDataException(com.ibm.j9ddr.CorruptDataException) MM_LockingFreeHeapRegionListPointer(com.ibm.j9ddr.vm29.pointer.generated.MM_LockingFreeHeapRegionListPointer)

Example 2 with MM_LockingFreeHeapRegionListPointer

use of com.ibm.j9ddr.vm29.pointer.generated.MM_LockingFreeHeapRegionListPointer in project openj9 by eclipse.

the class DumpSegregatedStatsCommand method getFreeCellCount.

/**
 * Count the number of free cells in the entire MM_HeapRegionList
 * @throws CorruptDataException
 */
public long getFreeCellCount(MM_HeapRegionListPointer heapRegionList) throws CorruptDataException {
    StructurePointer heapRegionQueue = heapRegionList.getAsRuntimeType();
    long freeCellCount = 0;
    if (heapRegionQueue instanceof MM_LockingHeapRegionQueuePointer) {
        MM_LockingHeapRegionQueuePointer lockingHeapRegionQueue = (MM_LockingHeapRegionQueuePointer) heapRegionQueue;
        MM_HeapRegionDescriptorSegregatedPointer heapRegionDescriptorSegregated = lockingHeapRegionQueue._head();
        while (heapRegionDescriptorSegregated.notNull()) {
            freeCellCount += getFreeCellCount(heapRegionDescriptorSegregated);
            heapRegionDescriptorSegregated = heapRegionDescriptorSegregated._next();
        }
    } else if (heapRegionQueue instanceof MM_LockingFreeHeapRegionListPointer) {
        MM_LockingFreeHeapRegionListPointer lockingFreeHeapRegionQueue = (MM_LockingFreeHeapRegionListPointer) heapRegionQueue;
        MM_HeapRegionDescriptorSegregatedPointer heapRegionDescriptorSegregated = lockingFreeHeapRegionQueue._head();
        while (heapRegionDescriptorSegregated.notNull()) {
            freeCellCount += getFreeCellCount(heapRegionDescriptorSegregated);
            heapRegionDescriptorSegregated = heapRegionDescriptorSegregated._next();
        }
    } else {
        throw new CorruptDataException("Bad HeapRegionList type");
    }
    return freeCellCount;
}
Also used : MM_LockingHeapRegionQueuePointer(com.ibm.j9ddr.vm29.pointer.generated.MM_LockingHeapRegionQueuePointer) MM_HeapRegionDescriptorSegregatedPointer(com.ibm.j9ddr.vm29.pointer.generated.MM_HeapRegionDescriptorSegregatedPointer) StructurePointer(com.ibm.j9ddr.vm29.pointer.StructurePointer) CorruptDataException(com.ibm.j9ddr.CorruptDataException) MM_LockingFreeHeapRegionListPointer(com.ibm.j9ddr.vm29.pointer.generated.MM_LockingFreeHeapRegionListPointer)

Aggregations

CorruptDataException (com.ibm.j9ddr.CorruptDataException)2 StructurePointer (com.ibm.j9ddr.vm29.pointer.StructurePointer)2 MM_HeapRegionDescriptorSegregatedPointer (com.ibm.j9ddr.vm29.pointer.generated.MM_HeapRegionDescriptorSegregatedPointer)2 MM_LockingFreeHeapRegionListPointer (com.ibm.j9ddr.vm29.pointer.generated.MM_LockingFreeHeapRegionListPointer)2 MM_LockingHeapRegionQueuePointer (com.ibm.j9ddr.vm29.pointer.generated.MM_LockingHeapRegionQueuePointer)2