public int addCaptureModificationCode()

in src/main/java/com/intellij/rt/debugger/agent/CollectionBreakpointInstrumentor.java [1078:1107]


    public int addCaptureModificationCode(MethodVisitor mv, int shouldCaptureVar) {
      mv.visitInsn(Opcodes.DUP);
      mv.visitVarInsn(Opcodes.ALOAD, 2);
      Label label = new Label();
      Label end = new Label();
      mv.visitJumpInsn(Opcodes.IF_ACMPNE, label);
      mv.visitLdcInsn(false);
      mv.visitJumpInsn(Opcodes.GOTO, end);
      mv.visitLabel(label);
      mv.visitLdcInsn(true);
      mv.visitLabel(end);
      mv.visitVarInsn(Opcodes.ILOAD, shouldCaptureVar);
      mv.visitInsn(Opcodes.SWAP);
      mv.visitVarInsn(Opcodes.ALOAD, 1);
      mv.visitVarInsn(Opcodes.ALOAD, 2);
      mv.visitMethodInsn(Opcodes.INVOKESTATIC,
                         getInstrumentorClassName(),
                         CREATE_PAIR_METHOD_NAME,
                         CREATE_PAIR_METHOD_DESC,
                         false);
      mv.visitVarInsn(Opcodes.ALOAD, 0);
      mv.visitInsn(Opcodes.SWAP);
      mv.visitLdcInsn(true);
      mv.visitMethodInsn(Opcodes.INVOKESTATIC,
                         getInstrumentorClassName(),
                         CAPTURE_COLLECTION_MODIFICATION_METHOD_NAME,
                         CAPTURE_COLLECTION_MODIFICATION_METHOD_DESC,
                         false);
      return 6;
    }