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 * This class represents a chunk of Java byte code contained in a 286N/A * method. It is instantiated by the 286N/A * <em>Attribute.readAttribute()</em> method. A <em>Code</em> 286N/A * attribute contains informations about operand stack, local 286N/A * variables, byte code and the exceptions handled within this 286N/A * This attribute has attributes itself, namely <em>LineNumberTable</em> which 286N/A * is used for debugging purposes and <em>LocalVariableTable</em> which 286N/A * contains information about the local variables. 286N/A * @author <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A> 286N/A * @see LocalVariableTable 286N/A * Initialize from another object. Note that both objects use the same 286N/A * references (shallow copy). Use copy() for a physical copy. 286N/A * @param name_index Index pointing to the name <em>Code</em> 286N/A * @param length Content length in bytes 286N/A * @param file Input stream 286N/A * @param constant_pool Array of constants 286N/A // Initialize with some default values which will be overwritten later 286N/A /* Read exception table that contains all regions where an exception 286N/A * handler is active, i.e., a try { ... } catch() block. 286N/A /* Read all attributes, currently `LineNumberTable' and 286N/A /* Adjust length, because of setAttributes in this(), s.b. length 286N/A * is incorrect, because it didn't take the internal attributes 286N/A * into account yet! Very subtle bug, fixed in 3.1.1. 286N/A * @param name_index Index pointing to the name <em>Code</em> 286N/A * @param length Content length in bytes 286N/A * @param max_stack Maximum size of stack 286N/A * @param max_locals Number of local variables 286N/A * @param code Actual byte code 286N/A * @param exception_table Table of handled exceptions 286N/A * @param attributes Attributes of code: LineNumber or LocalVariable 286N/A * @param constant_pool Array of constants 286N/A * Called by objects that are traversing the nodes of the tree implicitely 286N/A * defined by the contents of a Java class. I.e., the hierarchy of methods, 286N/A * fields, attributes, etc. spawns a tree of objects. 286N/A * @param v Visitor object 286N/A * Dump code attribute to file stream in binary format. 286N/A * @param file Output file stream 286N/A * @return Collection of code attributes. 286N/A * @return LineNumberTable of Code, if it has one 286N/A * @return LocalVariableTable of Code, if it has one 286N/A * @return Actual byte code of the method. 286N/A * @return Table of handled exceptions. 286N/A * @return Number of local variables. 286N/A * @return Maximum size of stack used by this method. 286N/A * @return the internal length of this code attribute (minus the first 6 bytes) 286N/A * and excluding all its attributes 286N/A return 2 /*max_stack*/ +
2 /*max_locals*/ +
4 /*code length*/ 286N/A +
2 /*exception-table length*/ 286N/A +
2 /* attributes count */;
286N/A * @return the full size of this code attribute, minus its first 6 bytes, 286N/A * including the size of all its contained attributes 286N/A * @param code byte code 286N/A * @param exception_table exception table 286N/A * @param max_locals maximum number of local variables 286N/A * @param max_stack maximum stack size 286N/A * @return String representation of code chunk. 286N/A buf.
append(
"\nException handler(s) = \n" +
"From\tTo\tHandler\tType\n");
286N/A * @return String representation of code chunk. 286N/A * @return deep copy of this attribute