org.jacoco.core.internal.instr
Class InstrSupport

java.lang.Object
  extended by org.jacoco.core.internal.instr.InstrSupport

public final class InstrSupport
extends Object

Constants and utilities for byte code instrumentation.


Field Summary
static int ASM_API_VERSION
          ASM API version
static int DATAFIELD_ACC
          Access modifiers of the field that stores coverage information of a class.
static 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 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 String INITMETHOD_DESC
          Descriptor of the initialization method.
static String INITMETHOD_NAME
          Name of the initialization method.
 
Method Summary
static void assertNotInstrumented(String member, 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 a ClassReader instance for given bytes of class even if its version not yet supported by ASM.
static int getMajorVersion(byte[] b)
          Gets major version number from given bytes of class (unsigned two bytes at offset 6).
static int getMajorVersion(org.objectweb.asm.ClassReader reader)
          Gets major version number from given ClassReader.
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.
static void setMajorVersion(int majorVersion, byte[] b)
          Sets major version number in given bytes of class (unsigned two bytes at offset 6).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 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 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 String INITMETHOD_NAME
Name of the initialization method.

See Also:
Constant Field Values

INITMETHOD_DESC

public static final 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

getMajorVersion

public static int getMajorVersion(byte[] b)
Gets major version number from given bytes of class (unsigned two bytes at offset 6).

Parameters:
b - bytes of class
Returns:
major version of bytecode
See Also:
Java Virtual Machine Specification §4 The class File Format, setMajorVersion(int, byte[]), getMajorVersion(ClassReader)

setMajorVersion

public static void setMajorVersion(int majorVersion,
                                   byte[] b)
Sets major version number in given bytes of class (unsigned two bytes at offset 6).

Parameters:
majorVersion - major version of bytecode to set
b - bytes of class
See Also:
getMajorVersion(byte[])

getMajorVersion

public static int getMajorVersion(org.objectweb.asm.ClassReader reader)
Gets major version number from given ClassReader.

Parameters:
reader - reader to get information about the class
Returns:
major version of bytecode
See Also:
ClassReader.ClassReader(byte[], int, int), getMajorVersion(byte[])

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(String member,
                                         String owner)
                                  throws 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 check
owner - name of the class owning the member
Throws:
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 from GeneratorAdapter.push(int).

Parameters:
mv - visitor to emit the instruction
value - the value to be pushed on the stack.

classReaderFor

public static org.objectweb.asm.ClassReader classReaderFor(byte[] b)
Creates a ClassReader instance for given bytes of class even if its version not yet supported by ASM.

Parameters:
b - bytes of class
Returns:
ClassReader


Copyright © 2009–2023 Mountainminds GmbH & Co. KG. All rights reserved.