Package org.jacoco.core.internal.instr
Class InstrSupport
- java.lang.Object
-
- org.jacoco.core.internal.instr.InstrSupport
-
public final class InstrSupport extends java.lang.Object
Constants and utilities for byte code instrumentation.
-
-
Field Summary
Fields Modifier and Type Field Description static int
ASM_API_VERSION
ASM API versionstatic int
DATAFIELD_ACC
Access modifiers of the field that stores coverage information of a class.static java.lang.String
DATAFIELD_DESC
Data type of the field that stores coverage information for a class (boolean[]
).static int
DATAFIELD_INTF_ACC
Access modifiers of the field that stores coverage information of a Java 8 interface.static java.lang.String
DATAFIELD_NAME
Name of the field that stores coverage information of a class.static int
INITMETHOD_ACC
Access modifiers of the initialization method.static java.lang.String
INITMETHOD_DESC
Descriptor of the initialization method.static java.lang.String
INITMETHOD_NAME
Name of the initialization method.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
assertNotInstrumented(java.lang.String member, java.lang.String owner)
Ensures that the given member does not correspond to a internal member created by the instrumentation process.static org.objectweb.asm.ClassReader
classReaderFor(byte[] b)
Creates aClassReader
instance for given bytes of class even if its version not yet supported by ASM.static int
getVersionMajor(byte[] b)
Gets major of bytecode version number from given bytes of class.static boolean
needsFrames(int version)
Determines whether the given class file version requires stackmap frames.static void
push(org.objectweb.asm.MethodVisitor mv, int value)
Generates the instruction to push the given int value on the stack.
-
-
-
Field Detail
-
ASM_API_VERSION
public static final int ASM_API_VERSION
ASM API version- See Also:
- Constant Field Values
-
DATAFIELD_NAME
public static final java.lang.String DATAFIELD_NAME
Name of the field that stores coverage information of a class.- See Also:
- Constant Field Values
-
DATAFIELD_ACC
public static final int DATAFIELD_ACC
Access modifiers of the field that stores coverage information of a class. According to Java Virtual Machine Specification §6.5.putstatic this field must not be final:if the field is final, it must be declared in the current class, and the instruction must occur in the
<clinit>
method of the current class.- See Also:
- Constant Field Values
-
DATAFIELD_INTF_ACC
public static final int DATAFIELD_INTF_ACC
Access modifiers of the field that stores coverage information of a Java 8 interface. According to Java Virtual Machine Specification §4.5:Fields of interfaces must have their ACC_PUBLIC, ACC_STATIC, and ACC_FINAL flags set; they may have their ACC_SYNTHETIC flag set and must not have any of the other flags.
- See Also:
- Constant Field Values
-
DATAFIELD_DESC
public static final java.lang.String DATAFIELD_DESC
Data type of the field that stores coverage information for a class (boolean[]
).- See Also:
- Constant Field Values
-
INITMETHOD_NAME
public static final java.lang.String INITMETHOD_NAME
Name of the initialization method.- See Also:
- Constant Field Values
-
INITMETHOD_DESC
public static final java.lang.String INITMETHOD_DESC
Descriptor of the initialization method.- See Also:
- Constant Field Values
-
INITMETHOD_ACC
public static final int INITMETHOD_ACC
Access modifiers of the initialization method.- See Also:
- Constant Field Values
-
-
Method Detail
-
getVersionMajor
public static int getVersionMajor(byte[] b)
Gets major of bytecode version number from given bytes of class.- Parameters:
b
- bytes of class- Returns:
- version of bytecode
-
needsFrames
public static boolean needsFrames(int version)
Determines whether the given class file version requires stackmap frames.- Parameters:
version
- class file version- Returns:
true
if frames are required
-
assertNotInstrumented
public static void assertNotInstrumented(java.lang.String member, java.lang.String owner) throws java.lang.IllegalStateException
Ensures that the given member does not correspond to a internal member created by the instrumentation process. This would mean that the class is already instrumented.- Parameters:
member
- name of the member to checkowner
- name of the class owning the member- Throws:
java.lang.IllegalStateException
- thrown if the member has the same name than the instrumentation member
-
push
public static void push(org.objectweb.asm.MethodVisitor mv, int value)
Generates the instruction to push the given int value on the stack. Implementation taken fromGeneratorAdapter.push(int)
.- Parameters:
mv
- visitor to emit the instructionvalue
- the value to be pushed on the stack.
-
classReaderFor
public static org.objectweb.asm.ClassReader classReaderFor(byte[] b)
Creates aClassReader
instance for given bytes of class even if its version not yet supported by ASM.- Parameters:
b
- bytes of class- Returns:
ClassReader
-
-