< prev index next >

src/java.xml/share/classes/com/sun/org/apache/bcel/internal/classfile/LocalVariable.java

Print this page

        

*** 26,67 **** import com.sun.org.apache.bcel.internal.Const; /** * This class represents a local variable within a method. It contains its ! * scope, name, signature and index on the method's frame. * - * @version $Id$ * @see LocalVariableTable ! * @LastModified: Jun 2019 */ 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 private int signature_index; // Index of variable signature ! private int index; /* Variable is `index'th local variable on * this method's frame. */ private ConstantPool constant_pool; private int orig_index; // never changes; used to match up with LocalVariableTypeTable entries /** ! * Initialize from another object. Note that both objects use the same * references (shallow copy). Use copy() for a physical copy. */ ! public LocalVariable(final LocalVariable c) { ! this(c.getStartPC(), c.getLength(), c.getNameIndex(), c.getSignatureIndex(), c.getIndex(), ! c.getConstantPool()); ! this.orig_index = c.getOrigIndex(); } - /** ! * Construct object from file stream. * @param file Input stream * @throws IOException */ LocalVariable(final DataInput file, final ConstantPool constant_pool) throws IOException { this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file --- 26,76 ---- import com.sun.org.apache.bcel.internal.Const; /** * This class represents a local variable within a method. It contains its ! * 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. * * @see LocalVariableTable ! * @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 * this method's frame. */ private ConstantPool constant_pool; private int orig_index; // never changes; used to match up with LocalVariableTypeTable entries /** ! * 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 localVariable) { ! this(localVariable.getStartPC(), localVariable.getLength(), localVariable.getNameIndex(), ! localVariable.getSignatureIndex(), localVariable.getIndex(), localVariable.getConstantPool()); ! this.orig_index = localVariable.getOrigIndex(); } /** ! * Constructs object from file stream. * @param file Input stream * @throws IOException */ LocalVariable(final DataInput file, final ConstantPool constant_pool) throws IOException { this(file.readUnsignedShort(), file.readUnsignedShort(), file.readUnsignedShort(), file
*** 122,225 **** v.visitLocalVariable(this); } /** ! * Dump 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); } - /** * @return Constant pool used by this object. */ ! public final ConstantPool getConstantPool() { return constant_pool; } /** * @return Variable is valid within getStartPC() .. getStartPC()+getLength() */ ! public final int getLength() { return length; } /** * @return Variable name. */ ! public final String getName() { ConstantUtf8 c; c = (ConstantUtf8) constant_pool.getConstant(name_index, Const.CONSTANT_Utf8); return c.getBytes(); } /** * @return Index in constant pool of variable name. */ ! public final int getNameIndex() { return name_index; } /** * @return Signature. */ ! public final String getSignature() { ConstantUtf8 c; c = (ConstantUtf8) constant_pool.getConstant(signature_index, Const.CONSTANT_Utf8); return c.getBytes(); } /** * @return Index in constant pool of variable signature. */ ! public final int getSignatureIndex() { return signature_index; } /** * @return index of register where variable is stored */ ! public final int getIndex() { return index; } /** * @return index of register where variable was originally stored */ ! public final int getOrigIndex() { return orig_index; } /** ! * @return Start of range where he variable is valid */ ! public final int getStartPC() { return start_pc; } /* * Helper method shared with LocalVariableTypeTable */ ! final String toStringShared( final boolean typeTable ) { final String name = getName(); final String signature = Utility.signatureToString(getSignature(), false); final String label = "LocalVariable" + (typeTable ? "Types" : "" ); return label + "(start_pc = " + start_pc + ", length = " + length + ", index = " + index + ":" + signature + " " + name + ")"; --- 131,234 ---- v.visitLocalVariable(this); } /** ! * Dumps local variable to file stream in binary format. * ! * @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 ConstantPool getConstantPool() { return constant_pool; } /** * @return Variable is valid within getStartPC() .. getStartPC()+getLength() */ ! public int getLength() { return length; } /** * @return Variable name. */ ! public String getName() { ConstantUtf8 c; c = (ConstantUtf8) constant_pool.getConstant(name_index, Const.CONSTANT_Utf8); return c.getBytes(); } /** * @return Index in constant pool of variable name. */ ! public int getNameIndex() { return name_index; } /** * @return Signature. */ ! public String getSignature() { ConstantUtf8 c; c = (ConstantUtf8) constant_pool.getConstant(signature_index, Const.CONSTANT_Utf8); return c.getBytes(); } /** * @return Index in constant pool of variable signature. */ ! public int getSignatureIndex() { return signature_index; } /** * @return index of register where variable is stored */ ! public int getIndex() { return index; } /** * @return index of register where variable was originally stored */ ! public int getOrigIndex() { return orig_index; } /** ! * @return Start of range where the variable is valid */ ! public int getStartPC() { return start_pc; } /* * Helper method shared with LocalVariableTypeTable */ ! String toStringShared( final boolean typeTable ) { final String name = getName(); final String signature = Utility.signatureToString(getSignature(), false); final String label = "LocalVariable" + (typeTable ? "Types" : "" ); return label + "(start_pc = " + start_pc + ", length = " + length + ", index = " + index + ":" + signature + " " + name + ")";
*** 227,286 **** /** * @param constant_pool Constant pool to be used for this object. */ ! public final void setConstantPool( final ConstantPool constant_pool ) { this.constant_pool = constant_pool; } /** * @param length the length of this local variable */ ! public final void setLength( final int length ) { this.length = length; } /** * @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 this.name_index = name_index; } /** * @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 this.signature_index = signature_index; } /** * @param index the index in the local variable table of this variable */ ! public final void setIndex( final int index ) { // TODO unused this.index = index; } /** * @param start_pc Specify range where the local variable is valid. */ ! public final void setStartPC( final int start_pc ) { // TODO unused this.start_pc = start_pc; } /** * @return string representation. */ @Override ! public final String toString() { return toStringShared(false); } /** --- 236,295 ---- /** * @param constant_pool Constant pool to be used for this object. */ ! public void setConstantPool( final ConstantPool constant_pool ) { this.constant_pool = constant_pool; } /** * @param length the length of this local variable */ ! public void setLength( final int length ) { this.length = length; } /** * @param name_index the index into the constant pool for the name of this variable */ ! public void setNameIndex( final int name_index ) { // TODO unused this.name_index = name_index; } /** * @param signature_index the index into the constant pool for the signature of this variable */ ! public void setSignatureIndex( final int signature_index ) { // TODO unused this.signature_index = signature_index; } /** * @param index the index in the local variable table of this variable */ ! public void setIndex( final int index ) { // TODO unused this.index = index; } /** * @param start_pc Specify range where the local variable is valid. */ ! public void setStartPC( final int start_pc ) { // TODO unused this.start_pc = start_pc; } /** * @return string representation. */ @Override ! public String toString() { return toStringShared(false); } /**
< prev index next >