private void run() {
    ssaMeth.forEachBlockDepthFirstDom(
        new SsaBasicBlock.Visitor() {
          @Override
          public void visitBlock(SsaBasicBlock block, SsaBasicBlock unused) {
            block.forEachInsn(
                new SsaInsn.Visitor() {
                  @Override
                  public void visitMoveInsn(NormalSsaInsn insn) {
                    // do nothing
                  }

                  @Override
                  public void visitPhiInsn(PhiInsn insn) {
                    // do nothing
                  }

                  @Override
                  public void visitNonMoveInsn(NormalSsaInsn insn) {
                    processInsn(insn);
                  }
                });
          }
        });

    // Go through lattice and promote fieldSets as necessary
    for (EscapeSet e : latticeValues) {
      if (e.escape != EscapeState.NONE) {
        for (EscapeSet field : e.childSets) {
          if (e.escape.compareTo(field.escape) > 0) {
            field.escape = e.escape;
          }
        }
      }
    }

    // Perform scalar replacement for arrays
    scalarReplacement();
  }
Runs escape analysis and scalar replacement of arrays.
android/android_framework/dex-maker/src/main/java/com/android/dx/ssa/EscapeAnalysis.java