code: public void processOpCall(Op op) {
          // total number of invocations
          invocationsCount.incrementAndGet();
  
          // number of invocations for this specific op
          opCounter.incrementCount(op.opName());
  
          // number of invocations for specific class
          String opClass = getOpClass(op);
          classCounter.incrementCount(opClass);
  
          if(op.x() == null || (op.x() != null && op.x().data().address() == lastZ && op.z() == op.x() && op.y() == null)) {
              // we have possible shift here
              matchingCounter.incrementCount(prevOpMatching + " -> " + opClass);
              matchingCounterDetailed.incrementCount(prevOpMatchingDetailed + " -> " + opClass + " " + op.opName());
          } else {
              matchingCounter.totalsIncrement();
              matchingCounterDetailed.totalsIncrement();
              if (op.y() != null && op.y().data().address() == lastZ) {
                  matchingCounterInverted.incrementCount(prevOpMatchingInverted + " -> " + opClass + " " + op.opName());
              } else {
                  matchingCounterInverted.totalsIncrement();
              }
  
          }
          lastZ = op.z() != null ? op.z().data().address() : 0L;
          prevOpMatching = opClass;
          prevOpMatchingDetailed = opClass + " " + op.opName();
          prevOpMatchingInverted = opClass + " " + op.opName();
  
          updatePairs(op.opName(), opClass);
  
          if (config.isNotOptimalArguments()) {
              PenaltyCause[] causes = processOperands(op.x(), op.y(), op.z());
              for (PenaltyCause cause : causes) {
                  switch (cause) {
                      case NON_EWS_ACCESS:
                          nonEwsAggregator.incrementCount();
                          break;
                      case STRIDED_ACCESS:
                          stridedAggregator.incrementCount();
                          break;
                      case MIXED_ORDER:
                          mixedOrderAggregator.incrementCount();
                          break;
                      case NONE:
                      default:
                          break;
                  }
              }
          }
  
          for (OpProfilerListener listener : listeners) {
              listener.invoke(op);
          }
      }
docs: This method tracks op calls
  
  @param op