Class CodeAttribute

java.lang.Object
javassist.bytecode.AttributeInfo
javassist.bytecode.CodeAttribute
All Implemented Interfaces:
Opcode

public class CodeAttribute extends AttributeInfo implements Opcode
Code_attribute.

To browse the code field of a Code_attribute structure, use CodeIterator.

See Also:
  • Field Details

  • Constructor Details

    • CodeAttribute

      public CodeAttribute(ConstPool cp, int stack, int locals, byte[] code, ExceptionTable etable)
      Constructs a Code_attribute.
      Parameters:
      cp - constant pool table
      stack - max_stack
      locals - max_locals
      code - code[]
      etable - exception_table[]
  • Method Details

    • copy

      public AttributeInfo copy(ConstPool newCp, Map<String,String> classnames) throws CodeAttribute.RuntimeCopyException
      Makes a copy. Class names are replaced according to the given Map object.
      Overrides:
      copy in class AttributeInfo
      Parameters:
      newCp - the constant pool table used by the new copy.
      classnames - pairs of replaced and substituted class names.
      Returns:
      CodeAttribute object.
      Throws:
      CodeAttribute.RuntimeCopyException - if a BadBytecode exception is thrown, it is converted into RuntimeCopyException.
    • length

      public int length()
      Returns the length of this attribute_info structure. The returned value is attribute_length + 6.
      Overrides:
      length in class AttributeInfo
    • get

      public byte[] get()
      This method is not available.
      Overrides:
      get in class AttributeInfo
      Throws:
      UnsupportedOperationException - always thrown.
    • set

      public void set(byte[] newinfo)
      This method is not available.
      Overrides:
      set in class AttributeInfo
      Throws:
      UnsupportedOperationException - always thrown.
    • getDeclaringClass

      public String getDeclaringClass()
      Returns the name of the class declaring the method including this code attribute.
    • getMaxStack

      public int getMaxStack()
      Returns max_stack.
    • setMaxStack

      public void setMaxStack(int value)
      Sets max_stack.
    • computeMaxStack

      public int computeMaxStack() throws BadBytecode
      Computes the maximum stack size and sets max_stack to the computed size.
      Returns:
      the newly computed value of max_stack
      Throws:
      BadBytecode - if this method fails in computing.
    • getMaxLocals

      public int getMaxLocals()
      Returns max_locals.
    • setMaxLocals

      public void setMaxLocals(int value)
      Sets max_locals.
    • getCodeLength

      public int getCodeLength()
      Returns code_length.
    • getCode

      public byte[] getCode()
      Returns code[].
    • iterator

      public CodeIterator iterator()
      Makes a new iterator for reading this code attribute.
    • getExceptionTable

      public ExceptionTable getExceptionTable()
      Returns exception_table[].
    • getAttributes

      public List<AttributeInfo> getAttributes()
      Returns attributes[]. It returns a list of AttributeInfo. A new element can be added to the returned list and an existing element can be removed from the list.
      See Also:
    • getAttribute

      public AttributeInfo getAttribute(String name)
      Returns the attribute with the specified name. If it is not found, this method returns null.
      Parameters:
      name - attribute name
      Returns:
      an AttributeInfo object or null.
    • setAttribute

      public void setAttribute(StackMapTable smt)
      Adds a stack map table. If another copy of stack map table is already contained, the old one is removed.
      Parameters:
      smt - the stack map table added to this code attribute. If it is null, a new stack map is not added. Only the old stack map is removed.
    • setAttribute

      public void setAttribute(StackMap sm)
      Adds a stack map table for J2ME (CLDC). If another copy of stack map table is already contained, the old one is removed.
      Parameters:
      sm - the stack map table added to this code attribute. If it is null, a new stack map is not added. Only the old stack map is removed.
      Since:
      3.12
    • insertLocalVar

      public void insertLocalVar(int where, int size) throws BadBytecode
      Changes the index numbers of the local variables to append a new parameter. This method does not update LocalVariableAttribute, LocalVariableTypeAttribute, StackMapTable, or StackMap. These attributes must be explicitly updated.
      Parameters:
      where - the index of the new parameter.
      size - the type size of the new parameter (1 or 2).
      Throws:
      BadBytecode
      See Also: