/* * Copyright (c) 2013-2016 Chris Newland. * Licensed under https://github.com/AdoptOpenJDK/jitwatch/blob/master/LICENSE-BSD * Instructions: https://github.com/AdoptOpenJDK/jitwatch/wiki */ package org.adoptopenjdk.jitwatch.jarscan.sequencecount; import java.util.ArrayList; import java.util.List; import org.adoptopenjdk.jitwatch.model.bytecode.Opcode; import static org.adoptopenjdk.jitwatch.core.JITWatchConstants.S_COMMA; public class InstructionSequence implements Comparable<InstructionSequence> { private List<Opcode> sequence = new ArrayList<>(); public InstructionSequence(List<Opcode> opcodeList) { sequence.addAll(opcodeList); } @Override public String toString() { StringBuilder builder = new StringBuilder(); for (Opcode opcode : sequence) { builder.append(opcode.getMnemonic()).append(S_COMMA); } builder.delete(builder.length() - 1, builder.length()); return builder.toString(); } public Opcode getOpcodeAtIndex(int index) { return sequence.get(index); } @Override public int hashCode() { return toString().hashCode(); } @Override public boolean equals(Object obj) { return toString().equals(obj.toString()); } @Override public int compareTo(InstructionSequence o) { return toString().compareTo(o.toString()); } }