Class Code


  • public class Code
    extends AttributeInfo
    A variable-length attribute used in the attributes table of MethodInfo structures. A Code attribute contains the JVM instructions and auxiliary information for a single method, instance initialization method, or class or interface initialization method. Every JVM implementation must recognize Code attributes. If the method is either native or abstract, its MethodInfo structure must not have a Code attribute. Otherwise, its MethodInfo structure must have exactly one Code attribute.
    Version:
    1.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List<AttributeInfo> attributes
      Attributes of this Code attribute.
      private int codeLength
      The size of the method's code, in bytes.
      private ExceptionTableEntry[] exceptionTable
      The exception handlers in the code array.
      private static java.lang.String LINE_NUMBER_TABLE  
      private static java.lang.String LOCAL_VARIABLE_TABLE  
      private static java.lang.String LOCAL_VARIABLE_TYPE_TABLE  
      private int maxLocals
      The number of local variables in the local variable array allocated upon invocation of this method, including the local variables used to pass parameters to the method on invocation.
      private int maxStack
      The maximum depth of the operand stack of this method at any point during its execution.
      private MethodInfo mi
      The parent method.
      private java.lang.String[] paramNames
      The names of parameters to the parent method, if debugging was enabled during compilation.
      private static java.lang.String STACK_MAP_TABLE  
    • Constructor Summary

      Constructors 
      Constructor Description
      Code​(MethodInfo mi)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getCodeLength()
      Returns the length of the code array, in bytes.
      int getMaxLocals()
      Returns the number of local variables in the local variable array allocated upon invocation of this method, including the local variables used to pass parameters to the method on invocation.
      int getMaxStack()
      Returns the maximum depth of the operand stack of this method at any point during its execution.
      MethodInfo getMethodInfo()
      Returns the method containing this code.
      java.lang.String getParameterName​(int index)
      If debugging was enabled during compilation, this method returns the name of the given parameter to this method.
      static Code read​(MethodInfo mi, java.io.DataInputStream in)
      Reads a Code attribute from an input stream.
      private AttributeInfo readAttribute​(java.io.DataInputStream in)
      Reads an attribute for this Code attribute from an input stream.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • maxStack

        private int maxStack
        The maximum depth of the operand stack of this method at any point during its execution.
      • maxLocals

        private int maxLocals
        The number of local variables in the local variable array allocated upon invocation of this method, including the local variables used to pass parameters to the method on invocation.

        The greatest local variable index for a value of type long or double is maxLocals-2. The greatest local variable index for a value of any other type is maxLocals-1.

      • codeLength

        private int codeLength
        The size of the method's code, in bytes.
      • exceptionTable

        private ExceptionTableEntry[] exceptionTable
        The exception handlers in the code array. The order of the handlers in this table is significant.
      • paramNames

        private java.lang.String[] paramNames
        The names of parameters to the parent method, if debugging was enabled during compilation.
        See Also:
        LOCAL_VARIABLE_TABLE
      • attributes

        private java.util.List<AttributeInfo> attributes
        Attributes of this Code attribute.
      • LINE_NUMBER_TABLE

        private static final java.lang.String LINE_NUMBER_TABLE
        See Also:
        Constant Field Values
      • LOCAL_VARIABLE_TABLE

        private static final java.lang.String LOCAL_VARIABLE_TABLE
        See Also:
        Constant Field Values
      • LOCAL_VARIABLE_TYPE_TABLE

        private static final java.lang.String LOCAL_VARIABLE_TYPE_TABLE
        See Also:
        Constant Field Values
    • Constructor Detail

      • Code

        public Code​(MethodInfo mi)
        Constructor.
        Parameters:
        mi - Information on the parent method.
    • Method Detail

      • getCodeLength

        public int getCodeLength()
        Returns the length of the code array, in bytes.
        Returns:
        The length of the code array.
      • getMaxLocals

        public int getMaxLocals()
        Returns the number of local variables in the local variable array allocated upon invocation of this method, including the local variables used to pass parameters to the method on invocation.

        The greatest local variable index for a value of type long or double is maxLocals-2. The greatest local variable index for a value of any other type is maxLocals-1.

        Returns:
        the maximum size of the local variable array.
      • getMaxStack

        public int getMaxStack()
        Returns the maximum depth of the operand stack of this method at any point during its execution.
        Returns:
        The maximum value of the operand stack.
      • getMethodInfo

        public MethodInfo getMethodInfo()
        Returns the method containing this code.
        Returns:
        The method containing this code.
      • getParameterName

        public java.lang.String getParameterName​(int index)
        If debugging was enabled during compilation, this method returns the name of the given parameter to this method. Otherwise, null is returned.
        Parameters:
        index - The index of the parameter.
        Returns:
        The name of the parameter, or null.
      • read

        public static Code read​(MethodInfo mi,
                                java.io.DataInputStream in)
                         throws java.io.IOException
        Reads a Code attribute from an input stream.
        Parameters:
        mi - The parent method.
        in - The input stream.
        Returns:
        The Code attribute.
        Throws:
        java.io.IOException - If an IO error occurs.
      • readAttribute

        private AttributeInfo readAttribute​(java.io.DataInputStream in)
                                     throws java.io.IOException
        Reads an attribute for this Code attribute from an input stream.
        Parameters:
        in - The input stream to read from.
        Returns:
        The attribute read.
        Throws:
        java.io.IOException - If an IO error occurs.