--- old/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/LocalVariable.java 2020-01-16 18:00:58.174755409 +0000 +++ new/src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/LocalVariable.java 2020-01-16 18:00:57.683743348 +0000 @@ -28,19 +28,27 @@ /** * This class represents a local variable within a method. It contains its - * scope, name, signature and index on the method's frame. + * scope, name, signature and index on the method's frame. It is used both + * to represent an element of the LocalVariableTable as well as an element + * of the LocalVariableTypeTable. The nomenclature used here may be a bit confusing; + * while the two items have the same layout in a class file, a LocalVariableTable + * attribute contains a descriptor_index, not a signature_index. The + * LocalVariableTypeTable attribute does have a signature_index. + * @see com.sun.org.apache.bcel.internal.classfile.Utility for more details on the difference. * - * @version $Id$ * @see LocalVariableTable - * @LastModified: Jun 2019 + * @see LocalVariableTypeTable + * @LastModified: Jan 2020 */ public final class LocalVariable implements Cloneable, Node { private int start_pc; // Range in which the variable is valid private int length; private int name_index; // Index in constant pool of variable name + // Technically, a decscriptor_index for a local variable table entry + // and a signature_index for a local variable type table entry. private int signature_index; // Index of variable signature - private int index; /* Variable is `index'th local variable on + private int index; /* Variable is index'th local variable on * this method's frame. */ private ConstantPool constant_pool; @@ -48,18 +56,19 @@ /** - * Initialize from another object. Note that both objects use the same + * Initializes from another LocalVariable. Note that both objects use the same * references (shallow copy). Use copy() for a physical copy. + * + * @param localVariable Another LocalVariable. */ - public LocalVariable(final LocalVariable c) { - this(c.getStartPC(), c.getLength(), c.getNameIndex(), c.getSignatureIndex(), c.getIndex(), - c.getConstantPool()); - this.orig_index = c.getOrigIndex(); + public LocalVariable(final LocalVariable localVariable) { + this(localVariable.getStartPC(), localVariable.getLength(), localVariable.getNameIndex(), + localVariable.getSignatureIndex(), localVariable.getIndex(), localVariable.getConstantPool()); + this.orig_index = localVariable.getOrigIndex(); } - /** - * Construct object from file stream. + * Constructs object from file stream. * @param file Input stream * @throws IOException */ @@ -124,24 +133,24 @@ /** - * Dump local variable to file stream in binary format. + * Dumps local variable to file stream in binary format. * - * @param file Output file stream - * @throws IOException - */ - public final void dump( final DataOutputStream file ) throws IOException { - file.writeShort(start_pc); - file.writeShort(length); - file.writeShort(name_index); - file.writeShort(signature_index); - file.writeShort(index); + * @param dataOutputStream Output file stream + * @exception IOException if an I/O error occurs. + * @see java.io.FilterOutputStream#out + */ + public void dump(final DataOutputStream dataOutputStream) throws IOException { + dataOutputStream.writeShort(start_pc); + dataOutputStream.writeShort(length); + dataOutputStream.writeShort(name_index); + dataOutputStream.writeShort(signature_index); + dataOutputStream.writeShort(index); } - /** * @return Constant pool used by this object. */ - public final ConstantPool getConstantPool() { + public ConstantPool getConstantPool() { return constant_pool; } @@ -149,7 +158,7 @@ /** * @return Variable is valid within getStartPC() .. getStartPC()+getLength() */ - public final int getLength() { + public int getLength() { return length; } @@ -157,7 +166,7 @@ /** * @return Variable name. */ - public final String getName() { + public String getName() { ConstantUtf8 c; c = (ConstantUtf8) constant_pool.getConstant(name_index, Const.CONSTANT_Utf8); return c.getBytes(); @@ -167,7 +176,7 @@ /** * @return Index in constant pool of variable name. */ - public final int getNameIndex() { + public int getNameIndex() { return name_index; } @@ -175,7 +184,7 @@ /** * @return Signature. */ - public final String getSignature() { + public String getSignature() { ConstantUtf8 c; c = (ConstantUtf8) constant_pool.getConstant(signature_index, Const.CONSTANT_Utf8); return c.getBytes(); @@ -185,7 +194,7 @@ /** * @return Index in constant pool of variable signature. */ - public final int getSignatureIndex() { + public int getSignatureIndex() { return signature_index; } @@ -193,7 +202,7 @@ /** * @return index of register where variable is stored */ - public final int getIndex() { + public int getIndex() { return index; } @@ -201,15 +210,15 @@ /** * @return index of register where variable was originally stored */ - public final int getOrigIndex() { + public int getOrigIndex() { return orig_index; } /** - * @return Start of range where he variable is valid + * @return Start of range where the variable is valid */ - public final int getStartPC() { + public int getStartPC() { return start_pc; } @@ -217,7 +226,7 @@ /* * Helper method shared with LocalVariableTypeTable */ - final String toStringShared( final boolean typeTable ) { + String toStringShared( final boolean typeTable ) { final String name = getName(); final String signature = Utility.signatureToString(getSignature(), false); final String label = "LocalVariable" + (typeTable ? "Types" : "" ); @@ -229,7 +238,7 @@ /** * @param constant_pool Constant pool to be used for this object. */ - public final void setConstantPool( final ConstantPool constant_pool ) { + public void setConstantPool( final ConstantPool constant_pool ) { this.constant_pool = constant_pool; } @@ -237,7 +246,7 @@ /** * @param length the length of this local variable */ - public final void setLength( final int length ) { + public void setLength( final int length ) { this.length = length; } @@ -245,7 +254,7 @@ /** * @param name_index the index into the constant pool for the name of this variable */ - public final void setNameIndex( final int name_index ) { // TODO unused + public void setNameIndex( final int name_index ) { // TODO unused this.name_index = name_index; } @@ -253,7 +262,7 @@ /** * @param signature_index the index into the constant pool for the signature of this variable */ - public final void setSignatureIndex( final int signature_index ) { // TODO unused + public void setSignatureIndex( final int signature_index ) { // TODO unused this.signature_index = signature_index; } @@ -261,7 +270,7 @@ /** * @param index the index in the local variable table of this variable */ - public final void setIndex( final int index ) { // TODO unused + public void setIndex( final int index ) { // TODO unused this.index = index; } @@ -269,7 +278,7 @@ /** * @param start_pc Specify range where the local variable is valid. */ - public final void setStartPC( final int start_pc ) { // TODO unused + public void setStartPC( final int start_pc ) { // TODO unused this.start_pc = start_pc; } @@ -278,7 +287,7 @@ * @return string representation. */ @Override - public final String toString() { + public String toString() { return toStringShared(false); }