Package javassist.bytecode

# Class StackMap

java.lang.Object
javassist.bytecode.AttributeInfo
javassist.bytecode.StackMap

public class StackMap extends AttributeInfo
Another `stack_map` attribute defined in CLDC 1.1 for J2ME.

This is an entry in the attributes table of a Code attribute. It was introduced by J2ME CLDC 1.1 (JSR 139) for pre-verification.

According to the CLDC specification, the sizes of some fields are not 16bit but 32bit if the code size is more than 64K or the number of the local variables is more than 64K. However, for the J2ME CLDC technology, they are always 16bit. The implementation of the StackMap class assumes they are 16bit.

Since:
  3.12
See Also:
  - `MethodInfo.doPreverify`
  - `StackMapTable`

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`StackMap.Walker`
A code walker for a StackMap attribute.
`static class`
`StackMap.Writer`
Internal use only.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DOUBLE`
`Double_variable_info.tag`.
`static final int`
`FLOAT`
`Float_variable_info.tag`.
`static final int`
`INTEGER`
`Integer_variable_info.tag`.
`static final int`
`LONG`
`Long_variable_info.tag`.
`static final int`
`NULL`
`Null_variable_info.tag`.
`static final int`
`OBJECT`
`Object_variable_info.tag`.
`static final String`
`tag`
The name of this attribute `"StackMap"`.
`static final int`
`THIS`
`UninitializedThis_variable_info.tag`.
`static final int`
`TOP`
`Top_variable_info.tag`.
`static final int`
`UNINIT`
`Uninitialized_variable_info.tag`.

## Method Summary

Modifier and Type
Method
Description
`AttributeInfo`
`copy(ConstPool newCp, Map<String,String> classnames)`
Makes a copy.
`void`
`insertLocal(int index, int tag, int classInfo)`
Updates this stack map table when a new local variable is inserted for a new parameter.
`int`
`numOfEntries()`
Returns `number_of_entries`.
`void`
`print(PrintWriter out)`
Prints this stack map.
`void`
`removeNew(int where)`
Undocumented method.

### Methods inherited from class javassist.bytecode.AttributeInfo

`get, getConstPool, getName, length, set`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### tag

public static final String tag
The name of this attribute `"StackMap"`.

See Also:
  - Constant Field Values

### TOP

public static final int TOP
`Top_variable_info.tag`.

See Also:
  - Constant Field Values

### INTEGER

public static final int INTEGER
`Integer_variable_info.tag`.

See Also:
  - Constant Field Values

### FLOAT

public static final int FLOAT
`Float_variable_info.tag`.

See Also:
  - Constant Field Values

### DOUBLE

public static final int DOUBLE
`Double_variable_info.tag`.

See Also:
  - Constant Field Values

### LONG

public static final int LONG
`Long_variable_info.tag`.

See Also:
  - Constant Field Values

### NULL

public static final int NULL
`Null_variable_info.tag`.

See Also:
  - Constant Field Values

### THIS

public static final int THIS
`UninitializedThis_variable_info.tag`.

See Also:
  - Constant Field Values

### OBJECT

public static final int OBJECT
`Object_variable_info.tag`.

See Also:
  - Constant Field Values

### UNINIT

public static final int UNINIT
`Uninitialized_variable_info.tag`.

See Also:
  - Constant Field Values

## Method Details

### numOfEntries

public int numOfEntries()
Returns `number_of_entries`.

### copy

public AttributeInfo copy(ConstPool newCp, Map<String,String> classnames)
Makes a copy.

Overrides:
  `copy` in class `AttributeInfo`
Parameters:
  `newCp` - the constant pool table used by the new copy.
  `classnames` - pairs of replaced and substituted class names.

### insertLocal

public void insertLocal(int index, int tag, int classInfo) throws BadBytecode
Updates this stack map table when a new local variable is inserted for a new parameter.

Parameters:
  `index` - the index of the added local variable.
  `tag` - the type tag of that local variable. It is available by `StackMapTable.typeTagOf(char)`.
  `classInfo` - the index of the `CONSTANT_Class_info` structure in a constant pool table. This should be zero unless the tag is `ITEM_Object`.
Throws:
  `BadBytecode`
See Also:
  - `CtBehavior.addParameter(javassist.CtClass)`
  - `StackMapTable.typeTagOf(char)`
  - `ConstPool`

### removeNew

public void removeNew(int where) throws CannotCompileException
Undocumented method. Do not use; internal-use only.

This method is for javassist.convert.TransformNew. It is called to update the stack map when the NEW opcode (and the following DUP) is removed.

Parameters:
  `where` - the position of the removed NEW opcode.
Throws:
  `CannotCompileException`

### print

public void print(PrintWriter out)
Prints this stack map.