private void processInsn(SsaInsn insn) {
    int op = insn.getOpcode().getOpcode();
    RegisterSpec result = insn.getResult();
    EscapeSet escSet;

    // Identify new objects
    if (op == RegOps.MOVE_RESULT_PSEUDO
        && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) {
      // Handle objects generated through move_result_pseudo
      escSet = processMoveResultPseudoInsn(insn);
      processRegister(result, escSet);
    } else if (op == RegOps.MOVE_PARAM && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) {
      // Track method arguments that are objects
      escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE);
      latticeValues.add(escSet);
      processRegister(result, escSet);
    } else if (op == RegOps.MOVE_RESULT
        && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) {
      // Track method return values that are objects
      escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE);
      latticeValues.add(escSet);
      processRegister(result, escSet);
    }
  }
Process a single instruction, looking for new objects resulting from move result or move param.

@param insn {@code non-null;} instruction to process
android/android_framework/dex-maker/src/main/java/com/android/dx/ssa/EscapeAnalysis.java