Mirror of the BLOAT repository https://www.cs.purdue.edu/homes/hosking/bloat/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
bloat/src/EDU/purdue/cs/bloat/editor/InstructionVisitor.java

330 lines
8.4 KiB

/**
* All files in the distribution of BLOAT (Bytecode Level Optimization and
* Analysis tool for Java(tm)) are Copyright 1997-2001 by the Purdue
* Research Foundation of Purdue University. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package EDU.purdue.cs.bloat.editor;
/**
* The visitor pattern allows functionality to be added to a number of classes
* (or in this case one class, <tt>Instruction</tt>, that can vary in
* behavior) without modifying the classes themselves. Additionally, the visitor
* pattern simulates double dispatching. For instance <tt>visit</tt> method of
* <tt>Instruction</tt> calls a particular method of
* <tt>InstructionVisitor</tt> based on the <tt>Instruction</tt>'s opcode.
* <p>
* <tt>InstructionVisitor</tt> provides an interface for performing actions
* based on the instruction type. Classes implementing this interface should not
* be able to miss any of the instruction types. This interface was created as
* an alternative to having 138 different subtypes of Instruction.
*
* @see Instruction#visit
* @see EDU.purdue.cs.bloat.tree.Tree
*
* @author Nate Nystrom (<a
* href="mailto:nystrom@cs.purdue.edu">nystrom@cs.purdue.edu</a>)
*/
public interface InstructionVisitor {
public void visit_nop(Instruction inst);
public void visit_ldc(Instruction inst);
public void visit_iload(Instruction inst);
public void visit_lload(Instruction inst);
public void visit_fload(Instruction inst);
public void visit_dload(Instruction inst);
public void visit_aload(Instruction inst);
public void visit_iaload(Instruction inst);
public void visit_laload(Instruction inst);
public void visit_faload(Instruction inst);
public void visit_daload(Instruction inst);
public void visit_aaload(Instruction inst);
public void visit_baload(Instruction inst);
public void visit_caload(Instruction inst);
public void visit_saload(Instruction inst);
public void visit_istore(Instruction inst);
public void visit_lstore(Instruction inst);
public void visit_fstore(Instruction inst);
public void visit_dstore(Instruction inst);
public void visit_astore(Instruction inst);
public void visit_iastore(Instruction inst);
public void visit_lastore(Instruction inst);
public void visit_fastore(Instruction inst);
public void visit_dastore(Instruction inst);
public void visit_aastore(Instruction inst);
public void visit_bastore(Instruction inst);
public void visit_castore(Instruction inst);
public void visit_sastore(Instruction inst);
public void visit_pop(Instruction inst);
public void visit_pop2(Instruction inst);
public void visit_dup(Instruction inst);
public void visit_dup_x1(Instruction inst);
public void visit_dup_x2(Instruction inst);
public void visit_dup2(Instruction inst);
public void visit_dup2_x1(Instruction inst);
public void visit_dup2_x2(Instruction inst);
public void visit_swap(Instruction inst);
public void visit_iadd(Instruction inst);
public void visit_ladd(Instruction inst);
public void visit_fadd(Instruction inst);
public void visit_dadd(Instruction inst);
public void visit_isub(Instruction inst);
public void visit_lsub(Instruction inst);
public void visit_fsub(Instruction inst);
public void visit_dsub(Instruction inst);
public void visit_imul(Instruction inst);
public void visit_lmul(Instruction inst);
public void visit_fmul(Instruction inst);
public void visit_dmul(Instruction inst);
public void visit_idiv(Instruction inst);
public void visit_ldiv(Instruction inst);
public void visit_fdiv(Instruction inst);
public void visit_ddiv(Instruction inst);
public void visit_irem(Instruction inst);
public void visit_lrem(Instruction inst);
public void visit_frem(Instruction inst);
public void visit_drem(Instruction inst);
public void visit_ineg(Instruction inst);
public void visit_lneg(Instruction inst);
public void visit_fneg(Instruction inst);
public void visit_dneg(Instruction inst);
public void visit_ishl(Instruction inst);
public void visit_lshl(Instruction inst);
public void visit_ishr(Instruction inst);
public void visit_lshr(Instruction inst);
public void visit_iushr(Instruction inst);
public void visit_lushr(Instruction inst);
public void visit_iand(Instruction inst);
public void visit_land(Instruction inst);
public void visit_ior(Instruction inst);
public void visit_lor(Instruction inst);
public void visit_ixor(Instruction inst);
public void visit_lxor(Instruction inst);
public void visit_iinc(Instruction inst);
public void visit_i2l(Instruction inst);
public void visit_i2f(Instruction inst);
public void visit_i2d(Instruction inst);
public void visit_l2i(Instruction inst);
public void visit_l2f(Instruction inst);
public void visit_l2d(Instruction inst);
public void visit_f2i(Instruction inst);
public void visit_f2l(Instruction inst);
public void visit_f2d(Instruction inst);
public void visit_d2i(Instruction inst);
public void visit_d2l(Instruction inst);
public void visit_d2f(Instruction inst);
public void visit_i2b(Instruction inst);
public void visit_i2c(Instruction inst);
public void visit_i2s(Instruction inst);
public void visit_lcmp(Instruction inst);
public void visit_fcmpl(Instruction inst);
public void visit_fcmpg(Instruction inst);
public void visit_dcmpl(Instruction inst);
public void visit_dcmpg(Instruction inst);
public void visit_ifeq(Instruction inst);
public void visit_ifne(Instruction inst);
public void visit_iflt(Instruction inst);
public void visit_ifge(Instruction inst);
public void visit_ifgt(Instruction inst);
public void visit_ifle(Instruction inst);
public void visit_if_icmpeq(Instruction inst);
public void visit_if_icmpne(Instruction inst);
public void visit_if_icmplt(Instruction inst);
public void visit_if_icmpge(Instruction inst);
public void visit_if_icmpgt(Instruction inst);
public void visit_if_icmple(Instruction inst);
public void visit_if_acmpeq(Instruction inst);
public void visit_if_acmpne(Instruction inst);
public void visit_goto(Instruction inst);
public void visit_jsr(Instruction inst);
public void visit_ret(Instruction inst);
public void visit_switch(Instruction inst);
public void visit_ireturn(Instruction inst);
public void visit_lreturn(Instruction inst);
public void visit_freturn(Instruction inst);
public void visit_dreturn(Instruction inst);
public void visit_areturn(Instruction inst);
public void visit_return(Instruction inst);
public void visit_getstatic(Instruction inst);
public void visit_putstatic(Instruction inst);
public void visit_putstatic_nowb(Instruction inst);
public void visit_getfield(Instruction inst);
public void visit_putfield(Instruction inst);
public void visit_putfield_nowb(Instruction inst);
public void visit_invokevirtual(Instruction inst);
public void visit_invokespecial(Instruction inst);
public void visit_invokestatic(Instruction inst);
public void visit_invokeinterface(Instruction inst);
public void visit_new(Instruction inst);
public void visit_newarray(Instruction inst);
public void visit_arraylength(Instruction inst);
public void visit_athrow(Instruction inst);
public void visit_checkcast(Instruction inst);
public void visit_instanceof(Instruction inst);
public void visit_monitorenter(Instruction inst);
public void visit_monitorexit(Instruction inst);
public void visit_multianewarray(Instruction inst);
public void visit_ifnull(Instruction inst);
public void visit_ifnonnull(Instruction inst);
public void visit_rc(Instruction inst);
public void visit_aupdate(Instruction inst);
public void visit_supdate(Instruction inst);
public void visit_aswizzle(Instruction inst);
public void visit_aswrange(Instruction inst);
}