Package org.eclipse.sisu.space.asm
Class Attribute
java.lang.Object
org.eclipse.sisu.space.asm.Attribute
A non standard class, field, method or code attribute.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) final intgetCount()Returns the length of the attribute list that begins with this attribute.protected Label[]Returns the labels corresponding to this attribute.(package private) final intgetSize(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals) Returns the size of all the attributes in this attribute list.booleanReturns true if this type of attribute is a code attribute.booleanReturns true if this type of attribute is unknown.(package private) final voidput(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals, ByteVector out) Writes all the attributes of this attribute list in the given byte vector.protected Attributeread(ClassReader cr, int off, int len, char[] buf, int codeOff, Label[] labels) Reads atypeattribute.protected ByteVectorwrite(ClassWriter cw, byte[] code, int len, int maxStack, int maxLocals) Returns the byte array form of this attribute.
-
Field Details
-
type
The type of this attribute. -
value
byte[] valueThe raw value of this attribute, used only for unknown attributes. -
next
Attribute nextThe next attribute in this attribute list. May be null.
-
-
Constructor Details
-
Attribute
Constructs a new empty attribute.- Parameters:
type- the type of the attribute.
-
-
Method Details
-
isUnknown
public boolean isUnknown()Returns true if this type of attribute is unknown. The default implementation of this method always returns true.- Returns:
- true if this type of attribute is unknown.
-
isCodeAttribute
public boolean isCodeAttribute()Returns true if this type of attribute is a code attribute.- Returns:
- true if this type of attribute is a code attribute.
-
getLabels
Returns the labels corresponding to this attribute.- Returns:
- the labels corresponding to this attribute, or null if this attribute is not a code attribute that contains labels.
-
read
Reads atypeattribute. This method must return a newAttributeobject, of typetype, corresponding to the len bytes starting at the given offset, in the given class reader.- Parameters:
cr- the class that contains the attribute to be read.off- index of the first byte of the attribute's content incr.b. The 6 attribute header bytes, containing the type and the length of the attribute, are not taken into account here.len- the length of the attribute's content.buf- buffer to be used to callreadUTF8,readClassorreadConst.codeOff- index of the first byte of code's attribute content incr.b, or -1 if the attribute to be read is not a code attribute. The 6 attribute header bytes, containing the type and the length of the attribute, are not taken into account here.labels- the labels of the method's code, or null if the attribute to be read is not a code attribute.- Returns:
- a new
Attributeobject corresponding to the given bytes.
-
write
Returns the byte array form of this attribute.- Parameters:
cw- the class to which this attribute must be added. This parameter can be used to add to the constant pool of this class the items that corresponds to this attribute.code- the bytecode of the method corresponding to this code attribute, or null if this attribute is not a code attributes.len- the length of the bytecode of the method corresponding to this code attribute, or null if this attribute is not a code attribute.maxStack- the maximum stack size of the method corresponding to this code attribute, or -1 if this attribute is not a code attribute.maxLocals- the maximum number of local variables of the method corresponding to this code attribute, or -1 if this attribute is not a code attribute.- Returns:
- the byte array form of this attribute.
-
getCount
final int getCount()Returns the length of the attribute list that begins with this attribute.- Returns:
- the length of the attribute list that begins with this attribute.
-
getSize
Returns the size of all the attributes in this attribute list.- Parameters:
cw- the class writer to be used to convert the attributes into byte arrays, with thewritemethod.code- the bytecode of the method corresponding to these code attributes, or null if these attributes are not code attributes.len- the length of the bytecode of the method corresponding to these code attributes, or null if these attributes are not code attributes.maxStack- the maximum stack size of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.maxLocals- the maximum number of local variables of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.- Returns:
- the size of all the attributes in this attribute list. This size includes the size of the attribute headers.
-
put
Writes all the attributes of this attribute list in the given byte vector.- Parameters:
cw- the class writer to be used to convert the attributes into byte arrays, with thewritemethod.code- the bytecode of the method corresponding to these code attributes, or null if these attributes are not code attributes.len- the length of the bytecode of the method corresponding to these code attributes, or null if these attributes are not code attributes.maxStack- the maximum stack size of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.maxLocals- the maximum number of local variables of the method corresponding to these code attributes, or -1 if these attributes are not code attributes.out- where the attributes must be written.
-