public MethodVisitor visitMethod()

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);
  }