private int startOnOffer(int stat){
  for (; ; ) {
    Executor e;
    int c;
    if ((c=ctl) == DISABLED || (e=executor) == null) {
      stat=-1;
      break;
    }
 else     if ((c & ACTIVE) != 0) {
      if ((c & CONSUME) != 0 || U.compareAndSwapInt(this,CTL,c,c | CONSUME))       break;
    }
 else     if (demand == 0L || tail == head)     break;
 else     if (U.compareAndSwapInt(this,CTL,c,c | (ACTIVE | CONSUME))) {
      try {
        e.execute(new ConsumerTask<T>(this));
        break;
      }
 catch (      RuntimeException ex) {
        back_out();
        throw ex;
      }
catch (      Error ex) {
        back_out();
        throw ex;
      }
    }
  }
  return stat;
}

private int startOnOffer ( int stat ) { for ( ; ; ) { Executor e ; int c ; if ( ( c = ctl ) == DISABLED || ( e = executor ) == null ) { stat = - 1 ; break ; } else if ( ( c & ACTIVE ) != 0 ) { if ( ( c & CONSUME ) != 0 || U . compareAndSwapInt ( this , CTL , c , c | CONSUME ) ) break ; } else if ( demand == 0L || tail == head ) break ; else if ( U . compareAndSwapInt ( this , CTL , c , c | ( ACTIVE | CONSUME ) ) ) { try { e . execute ( new ConsumerTask < T > ( this ) ) ; break ; } catch ( RuntimeException ex ) { back_out ( ) ; throw ex ; } catch ( Error ex ) { back_out ( ) ; throw ex ; } } } return stat ; }
tries to start consumer task after offer .
