/* * Fernflower - The Analytical Java Decompiler * http://www.reversed-java.com * * (C) 2008 - 2010, Stiver * * This software is NEITHER public domain NOR free software * as per GNU License. See license.txt for more details. * * This software is distributed WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. */ package org.jetbrains.java.decompiler.code; import java.io.DataOutputStream; import java.io.IOException; public class Instruction implements CodeConstants { // ***************************************************************************** // public fields // ***************************************************************************** public int opcode; public int group = CodeConstants.GROUP_GENERAL; public boolean wide = false; public int bytecode_version = BYTECODE_JAVA_LE_4; // ***************************************************************************** // private fields // ***************************************************************************** private int[] operands = null; // ***************************************************************************** // public methods // ***************************************************************************** public Instruction() {} public int length() { return 1; } public int operandsCount() { return (operands==null)?0:operands.length; } public int getOperand(int index) { return operands[index]; } public Instruction clone() { return ConstantsUtil.getInstructionInstance(opcode, wide, group, bytecode_version, operands==null?null:(int[])operands.clone()); } public String toString() { String res = wide?"@wide ":""; res+="@"+ConstantsUtil.getName(opcode); int len = operandsCount(); for(int i=0;i=opc_ireturn && opcode<=opc_return) && opcode!=opc_athrow && opcode!=opc_jsr && opcode!=opc_tableswitch && opcode!=opc_lookupswitch; } public boolean equalsInstruction(Instruction instr) { if(opcode != instr.opcode || wide != instr.wide || operandsCount() != instr.operandsCount()) { return false; } if(operands != null) { for(int i=0;i