protected void paintGraph()

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();
    }