in src/main/java/org/adoptopenjdk/jitwatch/ui/nmethod/codecache/CodeCacheLayoutPanel.java [276:381]
protected void paintGraph(Graphics g)
{
super.paintGraph(g);
if (!preDraw())
{
return;
}
// TimerUtil.timerStart(getClass().getName() + ".redraw()");
IMetaMember selectedMember = parent.getSelectedMember();
if (selectedMember == null)
{
return;
}
Graphics2D g2d = (Graphics2D) g;
Compilation selectedCompilation = selectedMember.getSelectedCompilation();
List<CodeCacheEvent> eventsOfSelectedMember = new ArrayList<>();
Color fillColour;
double paneHeight = pane.getHeight();
for (CodeCacheEvent event : codeCacheData.getEvents())
{
if (!showEvent(event))
{
continue;
}
final Compilation eventCompilation = event.getCompilation();
final IMetaMember compilationMember = eventCompilation.getMember();
if (eventCompilation != null)
{
if (selectedMember.equals(compilationMember))
{
eventsOfSelectedMember.add(event);
}
else
{
double scaledSize = (double) event.getNativeCodeSize() / (double) addressRange;
double w = scaledSize * width;
if (w > 0.0)
{
long addressOffset = event.getNativeAddress() - lowAddress;
double scaledAddress = (double) addressOffset / (double) addressRange;
int latestCompilationIndex = compilationMember.getCompilations().size() - 1;
if (eventCompilation.getIndex() == latestCompilationIndex)
{
fillColour = LATEST_COMPILATION;
}
else
{
fillColour = NOT_LATEST_COMPILATION;
}
double x = scaledAddress * width;
double y = 0;
plotCompilation(g2d, x, y, w, paneHeight, fillColour, eventCompilation, true);
}
}
}
}
for (CodeCacheEvent event : eventsOfSelectedMember)
{
long addressOffset = event.getNativeAddress() - lowAddress;
double scaledAddress = (double) addressOffset / (double) addressRange;
double scaledSize = (double) event.getNativeCodeSize() / (double) addressRange;
double x = scaledAddress * width;
double y = 0;
double w = scaledSize * width;
final Compilation eventCompilation = event.getCompilation();
if (event.getCompilation().equals(selectedCompilation))
{
fillColour = COLOR_SELECTED_COMPILATION;
}
else
{
fillColour = COLOR_OTHER_MEMBER_COMPILATIONS;
}
plotCompilation(g2d, x, y, w, paneHeight, fillColour, eventCompilation, true);
plotMarker(g, x, paneHeight, eventCompilation);
}
pane.repaint();
}