286N/A * reserved comment block 286N/A * DO NOT REMOVE OR ALTER! 286N/A/* ==================================================================== 286N/A * The Apache Software License, Version 1.1 286N/A * Copyright (c) 2001 The Apache Software Foundation. All rights 286N/A * Redistribution and use in source and binary forms, with or without 286N/A * modification, are permitted provided that the following conditions 286N/A * 1. Redistributions of source code must retain the above copyright 286N/A * notice, this list of conditions and the following disclaimer. 286N/A * 2. Redistributions in binary form must reproduce the above copyright 286N/A * notice, this list of conditions and the following disclaimer in 286N/A * the documentation and/or other materials provided with the 286N/A * 3. The end-user documentation included with the redistribution, 286N/A * if any, must include the following acknowledgment: 286N/A * "This product includes software developed by the 286N/A * Alternately, this acknowledgment may appear in the software itself, 286N/A * if and wherever such third-party acknowledgments normally appear. 286N/A * 4. The names "Apache" and "Apache Software Foundation" and 286N/A * "Apache BCEL" must not be used to endorse or promote products 286N/A * derived from this software without prior written permission. For 286N/A * written permission, please contact apache@apache.org. 286N/A * 5. Products derived from this software may not be called "Apache", 286N/A * "Apache BCEL", nor may "Apache" appear in their name, without 286N/A * prior written permission of the Apache Software Foundation. 286N/A * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 286N/A * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 286N/A * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 286N/A * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 286N/A * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 286N/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 286N/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 286N/A * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 286N/A * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 286N/A * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 286N/A * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 286N/A * ==================================================================== 286N/A * This software consists of voluntary contributions made by many 286N/A * individuals on behalf of the Apache Software Foundation. For more 286N/A * information on the Apache Software Foundation, please see 286N/A * Instances of this class may be used, e.g., to generate typed 286N/A * versions of instructions. Its main purpose is to be used as the 286N/A * byte code generating backend of a compiler. You can subclass it to 286N/A * add your own create methods. 286N/A * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> 286N/A /** Initialize with ClassGen object 286N/A /** Initialize just with ConstantPoolGen object 286N/A /** Create an invoke instruction. 286N/A * @param class_name name of the called class 286N/A * @param name name of the called method 286N/A * @param ret_type return type of method 286N/A * @param arg_types argument types of method 286N/A * @param kind how to invoke, i.e., INVOKEINTERFACE, INVOKESTATIC, INVOKEVIRTUAL, 286N/A /** Create a call to the most popular System.out.println() method. 286N/A * @param s the string to print 286N/A /** Uses PUSH to push a constant value onto the stack. 286N/A * @param value must be of type Number, Boolean, Character or String 286N/A /** Create a field instruction. 286N/A * @param class_name name of the accessed class 286N/A * @param name name of the referenced field 286N/A * @param type type of field 286N/A * @param kind how to access, i.e., GETFIELD, PUTFIELD, GETSTATIC, PUTSTATIC 286N/A /** Create reference to `this' 286N/A /** Create typed return 286N/A * Create binary operation for simple basic types, such as int and float. 286N/A * @param op operation, such as "+", "*", "<<", etc. 286N/A * @param size size of operand, either 1 (int, e.g.) or 2 (double) 286N/A * @param size size of operand, either 1 (int, e.g.) or 2 (double) 286N/A * @param size size of operand, either 1 (int, e.g.) or 2 (double) 286N/A * @param size size of operand, either 1 (int, e.g.) or 2 (double) 286N/A * @param index index of local variable 286N/A * @param index index of local variable 286N/A * @param type type of elements of array, i.e., array.getElementType() 286N/A * @param type type of elements of array, i.e., array.getElementType() 286N/A /** Create conversion operation for two stack operands, this may be an I2C, instruction, e.g., 286N/A * if the operands are basic types and CHECKCAST if they are reference types. 286N/A /** Create new array of given size and type. 286N/A * @return an instruction that creates the corresponding array at runtime, i.e. is an AllocationInstruction 286N/A /** Create "null" value for reference types, 0 for basic types like int 286N/A /** Create branch instruction by given opcode, except LOOKUPSWITCH and TABLESWITCH. 286N/A * For those you should use the SWITCH compound instruction.