jellyj.classfile.javaclass
Class Code

jellyj.classfile.javaclass.Attribute
  |
  +--jellyj.classfile.javaclass.Code

public final class Code
extends Attribute

This class is derived from Attribute and represents a code chunk. It is instantiated by the Attribute.readAttribute() method. A Code attribute contains informations about operand stack, local variables, byte code and the exceptions handled within this method. This attribute has attributes itself, namely LineNumberTable which is used for debugging purposes and LocalVariableTable which contains information about the local variables.

Author:
JellyJ Design Group
See Also: Attribute, CodeException, LineNumberTable, LocalVariableTable

Constructor Summary
 Code()
          Empty constructor, all attributes have to be defined via `setXXX' methods.
 Code(Code c)
          Initialize from another object.
 (package private) Code(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
           
 Code(int name_index, int length, int max_stack, int max_locals, byte[] code, CodeException[] exception_table, Attribute[] attributes, ConstantPool constant_pool)
           

Method Summary
 voidaccept(Visitor v)
          Called by objects that are traversing the nodes of the tree implicitely defined by the contents of a Java class.
 final voiddump(DataOutputStream file)
          Dump code attribute to file stream in binary format.
 final Attribute[]getAttributes()
           
 final byte[]getCode()
           
 final ConstantPoolgetConstantPool()
           
 final CodeException[]getExceptionTable()
           
 final intgetMaxLocals()
           
 final intgetMaxStack()
           
 final voidsetAttributes(Attribute[] attributes)
           
 final voidsetCode(byte[] code)
           
 final voidsetConstantPool(ConstantPool constant_pool)
           
 final voidsetExceptionTable(CodeException[] exception_table)
           
 final voidsetMaxLocals(int max_locals)
           
 final voidsetMaxStack(int max_stack)
           
 final StringtoString()
           

Methods inherited from class jellyj.classfile.javaclass.Attribute
getLength, getNameIndex, getTag, readAttribute, setLength, setNameIndex

Constructor Detail

Code

public Code()
Empty constructor, all attributes have to be defined via `setXXX' methods. Use at your own risk.

Code

public Code(Code c)
Initialize from another object. Note that both objects use the same references (shallow copy). Use clone() for a physical copy.

Code

Code(int name_index, int length, DataInputStream file, ConstantPool constant_pool)
throws java.io.IOException
Parameters:
name_index - Index pointing to the name Code
length - Content length in bytes
file - Input stream
constant_pool - Array of constants

Code

public Code(int name_index, int length, int max_stack, int max_locals, byte[] code, CodeException[] exception_table, Attribute[] attributes, ConstantPool constant_pool)
Parameters:
name_index - Index pointing to the name Code
length - Content length in bytes
max_stack - Maximum size of stack
max_locals - Number of local variables
code - Actual byte code
exception_table - Table of handled exceptions
attributes - Attributes of code: LineNumber or LocalVariable
constant_pool - Array of constants
Method Detail

accept

public void accept(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.
Parameters:
v - Visitor object

dump

public final void dump(DataOutputStream file)
throws java.io.IOException
Dump code attribute to file stream in binary format.
Parameters:
file - Output file stream
throw IOException

getAttributes

public final Attribute[] getAttributes()
Returns: Collection of code attributes.
See Also:
Attribute

getCode

public final byte[] getCode()
Returns: Actual byte code of the method.

getConstantPool

public final ConstantPool getConstantPool()
Returns: Constant pool used by this object.
See Also:
ConstantPool

getExceptionTable

public final CodeException[] getExceptionTable()
Returns: Table of handled exceptions.
See Also:
CodeException

getMaxLocals

public final int getMaxLocals()
Returns: Number of local variables.

getMaxStack

public final int getMaxStack()
Returns: Maximum size of stack used by this method.

setAttributes

public final void setAttributes(Attribute[] attributes)
Parameters:
attributes.

setCode

public final void setCode(byte[] code)
Parameters:
code - byte code

setConstantPool

public final void setConstantPool(ConstantPool constant_pool)
Parameters:
constant_pool - Constant pool to be used for this object.
See Also:
ConstantPool

setExceptionTable

public final void setExceptionTable(CodeException[] exception_table)
Parameters:
exception_table - exception table

setMaxLocals

public final void setMaxLocals(int max_locals)
Parameters:
max_locals - maximum number of local variables

setMaxStack

public final void setMaxStack(int max_stack)
Parameters:
max_stack - maximum stack size

toString

public final String toString()
Returns: String representation of code chunk.

Association Links

to Class jellyj.classfile.javaclass.CodeException

to Class jellyj.classfile.javaclass.Attribute

to Class jellyj.classfile.javaclass.ConstantPool