in test-discovery/src/com/intellij/rt/coverage/testDiscovery/instrumentation/TestDiscoveryInstrumenter.java [67:98]
public MethodVisitor visitMethod(final int access,
final String name,
final String desc,
final String signature,
final String[] exceptions) {
final MethodVisitor mv = cv.visitMethod(access, name, desc, signature, exceptions);
if (mv == null) return null;
if (myMethodNames.length == 0) {
return mv;
}
if ("<clinit>".equals(name)) {
return createMethodVisitor(mv, name);
}
InstrumentedMethodsFilter.Decision decision = myMethodFilter.shouldVisitMethod(access, name, desc, signature, exceptions, myInstrumentConstructors);
if (decision != InstrumentedMethodsFilter.Decision.YES) return mv;
MethodVisitor newMv = new MethodVisitor(Opcodes.API_VERSION, mv) {
final int myMethodId = myCurrentMethodCount++;
@Override
public void visitCode() {
mv.visitFieldInsn(Opcodes.GETSTATIC, getInternalClassName(), METHODS_VISITED, METHODS_VISITED_CLASS);
pushInstruction(this, myMethodId);
visitInsn(Opcodes.ICONST_1);
visitInsn(Opcodes.BASTORE);
super.visitCode();
}
};
return createMethodVisitor(newMv, name);
}