This page will describe the AspectJ Metrics in SableVM project.

The following classfile attributes are added during weaving:

Code Attributes

ca.mcgill.sable.InstructionKind
ca.mcgill.sable.InstructionSource
ca.mcgill.sable.InstructionShadow

Each is a code attribute for which the info field is a stream of (offset:short, value:int) pairs. The offset indicates the start of a range of bytecode instructions, each of which has the given value. A value of -1 means "no tag".

For example,
1:
2:
3: 1
4: 1
5: 2
6:

Would be encoded as (1,-1)(3,1)(5,2)(6,-1)

Method Attributes

ca.mcgill.sable.ProceedMethod

Identifies a method as being a proceed method for around advice. This is required by the propagation algorithm to maintain a correct value of "advice depth".

Class Attributes

ca.mcgill.sable.InstructionSource_map
ca.mcgill.sable.InstructionShadow_map

The info field of each of these attributes is a stream of (id:int, cp_index:int) pairs, mapping a shadow or source id to a descriptive string in the constant pool.