Site Tools

Sidebar

Smart Card Solution

User Manual

JavaCard API Samples

Java Card Specification

Knowledge Sharing

javacard:jcvm:6.14.1.2_the_method_debug_info_structure

6.14.1.2 The method_debug_info Structure

The method_debug_info structure describes a method of a class. It can describe methods that are either virtual or non-virtual (static or initialization methods). The structure is defined as follows:

The items in the method_debug_info structure are defined as follows:

name_index

Contains an index into the strings_table[] item of the debug_component structure. The strings_table[] entry at the indexed location must be the simple (meaning, not fully-qualified) name of the method (for example, “lookupAID”).

descriptor_index

Contains an index into the strings_table[] item of the debug_component structure. The strings_table[] entry at the indexed location must be the argument and return types of the method (meaning, the signature without the method name). Class types are fully-qualified (for example, “([BSB)Ljavacard/framework/AID;”)

access_flags

A two-byte mask of modifiers that apply to this method.

Modifier

Value

ACC_PUBLIC

0x0001

ACC_PRIVATE

0x0002

ACC_PROTECTED

0x0004

ACC_STATIC

0x0008

ACC_FINAL

0x0010

ACC_NATIVE

0x0100

ACC_ABSTRACT

0x0400

The ACC_NATIVE flag is only valid for methods of a package located in the card mask. It cannot be used for methods contained in a CAP file.

All other method access and modifier flags are defined in the same way and with the same restrictions as described in The Java Virtual Machine Specification.

location

A byte offset of the method_info structure for this method into the info item of the Method Component ( Section 6.9, Method Component). Abstract methods have a location of zero.

header_size

The size in bytes of the header of the method. Abstract methods have a header_size of zero.

body_size

The size in bytes of the body of the method, not including the method header. Abstract methods have a body_size of zero.

variable_count

The number of variable_info entries in the variable_table[] item. Abstract methods have a variable_count of zero.

line_count

The number of line_info entries in the line_table[] item. Abstract methods have a line_count of zero.

variable_table[]

Contains the variable_info structures for all variables in this method.

The variable_info structure describes a single local variable of a method. It indicates the index into the local variables of the current frame at which the local variable can be found, as well as the name and type of the variable. It also indicates the range of bytecodes within which the variable has a value.

The items in the variable_info structure are defined as follows:

index

The index of the variable in the local stack frame, as used in load and store bytecodes. If the variable at index is of type int, it occupies both index and index + 1.

name_index

Contains an index into the strings_table[] item of the debug_component structure. The strings_table[] entry at the indexed location must be the name of the local variable, (for example, “applets”).

descriptor_index

Contains an index into the strings_table[] item of the debug_component structure. The strings_table[] entry at the indexed location must be the type of the local variable. Class types are fully-qualified (for example, “[Ljavacard/framework/Applet;”).

start_pc

The index of the first bytecode in which the variable is in-scope and valid.

length

Number of bytecodes in which the variable is in-scope and valid. The value of start_pc + length will be either the index of the next bytecode after the valid range, or the first index beyond the end of the bytecode array.

line_table[]

Contains the line_info structures that map bytecode instructions of this method to lines in the class's source file.

Each line_info item represents a mapping of a range of bytecode instructions to a particular line in the source file that contains the method. The range of instructions is from start_pc to end_pc, inclusive. start_pc and end_pc represent a zero-based byte offset within the method. The source_line is the one-based line number in the source file. The structure is defined as follows:

The items in the line_info structure are defined as follows:

start_pc

The byte offset of the first bytecode in the range of instructions.

end_pc

The byte offset of the last operand of the last bytecode in the range of instructions.

source_line

Line number in the source file.

Copyright © 2005, Sun Microsystems, Inc. All Rights Reserved.

javacard/jcvm/6.14.1.2_the_method_debug_info_structure.txt · Last modified: 2017/05/13 04:10 (external edit)