in util/src/com/intellij/rt/coverage/instrumentation/ExtraFieldInstrumenter.java [84:118]
public MethodVisitor createMethodVisitor(MethodVisitor mv,
final String name) {
if ("<clinit>".equals(name)) {
if (myInterface && (myJava8AndAbove || myShouldCoverClinit)) {
mv = new MethodVisitor(Opcodes.API_VERSION, mv) {
@Override
public void visitCode() {
initField(mv);
mySeenClinit = true;
super.visitCode();
}
};
}
if (!myShouldCoverClinit) {
return mv;
}
}
if (myInterface) return mv;
return new MethodVisitor(Opcodes.API_VERSION, mv) {
@Override
public void visitCode() {
super.visitFieldInsn(Opcodes.GETSTATIC, myInternalClassName, myFieldName, myFieldType);
final Label alreadyInitialized = new Label();
super.visitJumpInsn(Opcodes.IFNONNULL, alreadyInitialized);
initField(mv);
super.visitLabel(alreadyInitialized);
super.visitCode();
}
};
}