public void execute(ExecutionContext ec) throws DMLRuntimeException {
  ArrayList<Instruction> tmp=_inst;
  try {
    if (DMLScript.isActiveAM())     DMLAppMasterUtils.setupProgramBlockRemoteMaxMemory(this);
    long t0=DMLScript.STATISTICS ? System.nanoTime() : 0;
    if (ConfigurationManager.isDynamicRecompilation() && _sb != null && _sb.requiresRecompilation()) {
      tmp=Recompiler.recompileHopsDag(_sb,_sb.get_hops(),ec.getVariables(),null,false,_tid);
      if (MLContextProxy.isActive())       tmp=MLContextProxy.performCleanupAfterRecompilation(tmp);
    }
    if (DMLScript.STATISTICS) {
      long t1=System.nanoTime();
      Statistics.incrementHOPRecompileTime(t1 - t0);
      if (tmp != _inst)       Statistics.incrementHOPRecompileSB();
    }
  }
 catch (  Exception ex) {
    throw new DMLRuntimeException("Unable to recompile program block.",ex);
  }
  executeInstructions(tmp,ec);
}

public void execute ( ExecutionContext ec ) throws DMLRuntimeException { ArrayList < Instruction > tmp = _inst ; try { if ( DMLScript . isActiveAM ( ) ) DMLAppMasterUtils . setupProgramBlockRemoteMaxMemory ( this ) ; long t0 = DMLScript . STATISTICS ? System . nanoTime ( ) : 0 ; if ( ConfigurationManager . isDynamicRecompilation ( ) && _sb != null && _sb . requiresRecompilation ( ) ) { tmp = Recompiler . recompileHopsDag ( _sb , _sb . get_hops ( ) , ec . getVariables ( ) , null , false , _tid ) ; if ( MLContextProxy . isActive ( ) ) tmp = MLContextProxy . performCleanupAfterRecompilation ( tmp ) ; } if ( DMLScript . STATISTICS ) { long t1 = System . nanoTime ( ) ; Statistics . incrementHOPRecompileTime ( t1 - t0 ) ; if ( tmp != _inst ) Statistics . incrementHOPRecompileSB ( ) ; } } catch ( Exception ex ) { throw new DMLRuntimeException ( "Unable to recompile program block." , ex ) ; } executeInstructions ( tmp , ec ) ; }
executes this program block ( incl recompilation if required ) .
