FileDocCategorySizeDatePackage
StackMapEntry.javaAPI DocJava SE 5 API7659Fri Aug 26 14:55:18 BST 2005com.sun.org.apache.bcel.internal.classfile

StackMapEntry

public final class StackMapEntry extends Object implements Cloneable
This class represents a stack map entry recording the types of local variables and the the of stack items at a given byte code offset. See CLDC specification ÷5.3.1.2
version
$Id: StackMapEntry.java,v 1.1.1.1 2001/10/29 20:00:03 jvanzyl Exp $
author
M. Dahm
see
StackMap
see
StackMapType

Fields Summary
private int
byte_code_offset
private int
number_of_locals
private StackMapType[]
types_of_locals
private int
number_of_stack_items
private StackMapType[]
types_of_stack_items
private ConstantPool
constant_pool
Constructors Summary
StackMapEntry(DataInputStream file, ConstantPool constant_pool)
Construct object from file stream.

param
file Input stream
throw
IOException

    this(file.readShort(), file.readShort(), null, -1, null, constant_pool);

    types_of_locals = new StackMapType[number_of_locals];
    for(int i=0; i < number_of_locals; i++)
      types_of_locals[i] = new StackMapType(file, constant_pool);

    number_of_stack_items = file.readShort();
    types_of_stack_items = new StackMapType[number_of_stack_items];
    for(int i=0; i < number_of_stack_items; i++)
      types_of_stack_items[i] = new StackMapType(file, constant_pool);
  
public StackMapEntry(int byte_code_offset, int number_of_locals, StackMapType[] types_of_locals, int number_of_stack_items, StackMapType[] types_of_stack_items, ConstantPool constant_pool)

    this.byte_code_offset = byte_code_offset;
    this.number_of_locals = number_of_locals;
    this.types_of_locals = types_of_locals;
    this.number_of_stack_items = number_of_stack_items;
    this.types_of_stack_items = types_of_stack_items;
    this.constant_pool = constant_pool;
  
Methods Summary
public voidaccept(com.sun.org.apache.bcel.internal.classfile.Visitor v)
Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.

param
v Visitor object

    v.visitStackMapEntry(this);
  
public com.sun.org.apache.bcel.internal.classfile.StackMapEntrycopy()

return
deep copy of this object

    try {
      return (StackMapEntry)clone();
    } catch(CloneNotSupportedException e) {}

    return null;
  
public final voiddump(java.io.DataOutputStream file)
Dump stack map entry

param
file Output file stream
throw
IOException

    file.writeShort(byte_code_offset);

    file.writeShort(number_of_locals);
    for(int i=0; i < number_of_locals; i++)
      types_of_locals[i].dump(file);

    file.writeShort(number_of_stack_items);
    for(int i=0; i < number_of_stack_items; i++)
      types_of_stack_items[i].dump(file);
  
public intgetByteCodeOffset()

 return byte_code_offset; 
public final com.sun.org.apache.bcel.internal.classfile.ConstantPoolgetConstantPool()

return
Constant pool used by this object.

 return constant_pool; 
public intgetNumberOfLocals()

 return number_of_locals; 
public intgetNumberOfStackItems()

 return number_of_stack_items; 
public com.sun.org.apache.bcel.internal.classfile.StackMapType[]getTypesOfLocals()

 return types_of_locals; 
public com.sun.org.apache.bcel.internal.classfile.StackMapType[]getTypesOfStackItems()

 return types_of_stack_items; 
public voidsetByteCodeOffset(int b)

 byte_code_offset = b; 
public final voidsetConstantPool(com.sun.org.apache.bcel.internal.classfile.ConstantPool constant_pool)

param
constant_pool Constant pool to be used for this object.

    this.constant_pool = constant_pool;
  
public voidsetNumberOfLocals(int n)

 number_of_locals = n; 
public voidsetNumberOfStackItems(int n)

 number_of_stack_items = n; 
public voidsetTypesOfLocals(com.sun.org.apache.bcel.internal.classfile.StackMapType[] t)

 types_of_locals = t; 
public voidsetTypesOfStackItems(com.sun.org.apache.bcel.internal.classfile.StackMapType[] t)

 types_of_stack_items = t; 
public final java.lang.StringtoString()

return
String representation.

    StringBuffer buf = new StringBuffer("(offset=" + byte_code_offset);

    if(number_of_locals > 0) {
      buf.append(", locals={");

      for(int i=0; i < number_of_locals; i++) {
	buf.append(types_of_locals[i]);
	if(i < number_of_locals - 1)
	  buf.append(", ");
      }

      buf.append("}");
    }

    if(number_of_stack_items > 0) {
      buf.append(", stack items={");

      for(int i=0; i < number_of_stack_items; i++) {
	buf.append(types_of_stack_items[i]);
	if(i < number_of_stack_items - 1)
	  buf.append(", ");
      }

      buf.append("}");
    }

    buf.append(")");

    return buf.toString();