/*
* Copyright (c) 2017 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.compilation.codecache;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.adoptopenjdk.jitwatch.model.CodeCacheEvent;
public class CodeCacheWalkerResult
{
private List<CodeCacheEvent> events;
private long lowestAddress;
private long highestAddress;
public CodeCacheWalkerResult()
{
events = new ArrayList<>();
}
public void reset()
{
events.clear();
}
public void addEvent(CodeCacheEvent event)
{
long nativeCodeStart = event.getNativeAddress();
long nativeCodeEnd = nativeCodeStart + event.getNativeCodeSize();
if (events.size() == 0)
{
lowestAddress = nativeCodeStart;
highestAddress = nativeCodeEnd;
}
else
{
lowestAddress = Math.min(nativeCodeStart, lowestAddress);
highestAddress = Math.max(nativeCodeEnd, highestAddress);
}
events.add(event);
}
public List<CodeCacheEvent> getEvents()
{
Collections.sort(events, new Comparator<CodeCacheEvent>()
{
@Override
public int compare(CodeCacheEvent o1, CodeCacheEvent o2)
{
return Long.compare(o1.getStamp(), o2.getStamp());
}
});
return events;
}
public long getLowestAddress()
{
return lowestAddress;
}
public long getHighestAddress()
{
return highestAddress;
}
}