public void setCurrentMember()

in src/main/java/org/adoptopenjdk/jitwatch/ui/code/AssemblyTextBuilder.java [59:147]


    public void setCurrentMember(IMetaMember member, boolean reload)
    {
        if (!reload && member == currentMember)
        {
            return;
        }

        currentMember = member;

        lines.clear();

        if (currentMember == null)
        {
            return;
        }

        lines.add(new AssemblyLine(member.toString(), null));

        Compilation compilation = member.getSelectedCompilation();

        if (compilation != null)
        {
            AssemblyMethod asmMethod = compilation.getAssembly();

            if (asmMethod != null)
            {
                int annoWidth = asmMethod.getMaxAnnotationWidth();
                String annoPad = StringUtil.repeat(C_SPACE, annoWidth);
                String header = asmMethod.getHeader();

                if (header != null)
                {
                    String[] headerLines = header.split(S_NEWLINE);

                    for (String headerLine : headerLines)
                    {
                        lines.add(new AssemblyLine(annoPad + headerLine, null));
                    }
                }

                for (AssemblyBlock block : asmMethod.getBlocks())
                {
                    String title = block.getTitle();

                    if (title != null)
                    {
                        lines.add(new AssemblyLine(annoPad + title, null));
                    }

                    for (final AssemblyInstruction instr : block.getInstructions())
                    {
                        List<String> commentLines = instr.getCommentLines();

                        if (commentLines.size() == 0)
                        {
                            String line = instr.toString(annoWidth, 0, true);
                            if (!instr.getHexaCode().isEmpty())
                            {
                                line = disassembly(line);
                            }
                            AssemblyLine assemblyLine = new AssemblyLine(line, instr);
                            lines.add(assemblyLine);
                        }
                        else
                        {
                            for (int i = 0; i < commentLines.size(); i++)
                            {
                                String line = instr.toString(annoWidth, i, true);
                                if (!instr.getHexaCode().isEmpty())
                                {
                                    line = disassembly(line);
                                }
                                AssemblyLine assemblyLine = new AssemblyLine(line, instr);
                                lines.add(assemblyLine);
                            }
                        }
                    }
                }
            }
            else
            {
                lines.add(new AssemblyLine("No assembly available for this member.", null));
            }
        }
        else
        {
            lines.add(new AssemblyLine("No compilation selected for this member.", null));
        }
    }