/*
* Copyright (c) 2013-2015 Chris Newland.
* Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD
* Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki
*/
package org.adoptopenjdk.jitwatch.model.assembly;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.C_SPACE;
import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_NEWLINE;
import java.util.ArrayList;
import java.util.List;
import org.adoptopenjdk.jitwatch.util.StringUtil;
public class AssemblyBlock
{
private String title;
private List<AssemblyInstruction> instructions = new ArrayList<>();
public AssemblyBlock()
{
}
public void setTitle(String title)
{
this.title = title;
}
public String getTitle()
{
return title;
}
public void addInstruction(AssemblyInstruction instr)
{
instructions.add(instr);
}
public void replaceLastInstruction(AssemblyInstruction instr)
{
instructions.set(instructions.size() - 1, instr);
}
public List<AssemblyInstruction> getInstructions()
{
return instructions;
}
@Override
public String toString()
{
return toString(0);
}
public String toString(int maxAnnotationWidth)
{
StringBuilder builder = new StringBuilder();
if (title != null)
{
builder.append(StringUtil.repeat(C_SPACE, maxAnnotationWidth));
builder.append(title).append(S_NEWLINE);
}
for (AssemblyInstruction instruction : instructions)
{
builder.append(instruction.toString(maxAnnotationWidth, false)).append(S_NEWLINE);
}
return builder.toString();
}
}