Changes in / [c47ca77:c9aba81]


Ignore:
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/coroutine.cfa

    rc47ca77 rc9aba81  
    8383
    8484void ^?{}(coroutine_desc& this) {
    85       if(this.state != Halted && this.state != Start) {
     85      if(this.state != Halted) {
    8686            coroutine_desc * src = TL_GET( this_coroutine );
    8787            coroutine_desc * dst = &this;
  • src/Concurrency/Keywords.cc

    rc47ca77 rc9aba81  
    575575
    576576                //in reverse order :
    577                 // monitor_dtor_guard_t __guard = { __monitors, func };
     577                // monitor_guard_t __guard = { __monitors, #, func };
    578578                body->push_front(
    579579                        new DeclStmt( new ObjectDecl(
     
    634634                assert(generic_func);
    635635
    636                 // in reverse order :
     636                //in reverse order :
    637637                // monitor_guard_t __guard = { __monitors, #, func };
    638638                body->push_front(
  • src/Concurrency/Waitfor.cc

    rc47ca77 rc9aba81  
    6666void foo() {
    6767        while( true ) {
    68                 {
    69                         acceptable_t acceptables[3];
    70                         if( a < 1 ) {
    71                                 acceptables[0].func = f;
    72                                 acceptables[0].mon = a;
     68
     69                acceptable_t acceptables[3];
     70                if( a < 1 ) {
     71                        acceptables[0].func = f;
     72                        acceptables[0].mon = a;
     73                }
     74                acceptables[1].func = g;
     75                acceptables[1].mon = a;
     76
     77                acceptables[2].func = f;
     78                acceptables[2].mon = a;
     79                acceptables[2].is_dtor = true;
     80
     81                int ret = waitfor_internal( acceptables, swagl() );
     82
     83                switch( ret ) {
     84                        case 0:
     85                        {
     86                                bar();
    7387                        }
    74                         acceptables[1].func = g;
    75                         acceptables[1].mon = a;
    76 
    77                         acceptables[2].func = f;
    78                         acceptables[2].mon = a;
    79                         acceptables[2].is_dtor = true;
    80 
    81                         int ret = waitfor_internal( acceptables, swagl() );
    82 
    83                         switch( ret ) {
    84                                 case 0:
     88                        case 1:
     89                        {
     90                                baz();
     91                        }
     92                        case 2:
     93                                signal(a);
    8594                                {
    86                                         bar();
     95                                        break;
    8796                                }
    88                                 case 1:
    89                                 {
    90                                         baz();
    91                                 }
    92                                 case 2:
    93                                         signal(a);
    94                                         {
    95                                                 break;
    96                                         }
    97                         }
    9897                }
    9998        }
     
    556555                                        new ConstantExpr( Constant::from_ulong( i++ ) ),
    557556                                        {
    558                                                 new CompoundStmt({
    559                                                         clause.statement,
    560                                                         new BranchStmt(
    561                                                                 "",
    562                                                                 BranchStmt::Break
    563                                                         )
    564                                                 })
     557                                                clause.statement,
     558                                                new BranchStmt(
     559                                                        "",
     560                                                        BranchStmt::Break
     561                                                )
    565562                                        }
    566563                                )
     
    573570                                        new ConstantExpr( Constant::from_int( -2 ) ),
    574571                                        {
    575                                                 new CompoundStmt({
    576                                                         waitfor->timeout.statement,
    577                                                         new BranchStmt(
    578                                                                 "",
    579                                                                 BranchStmt::Break
    580                                                         )
    581                                                 })
     572                                                waitfor->timeout.statement,
     573                                                new BranchStmt(
     574                                                        "",
     575                                                        BranchStmt::Break
     576                                                )
    582577                                        }
    583578                                )
     
    590585                                        new ConstantExpr( Constant::from_int( -1 ) ),
    591586                                        {
    592                                                 new CompoundStmt({
    593                                                         waitfor->orelse.statement,
    594                                                         new BranchStmt(
    595                                                                 "",
    596                                                                 BranchStmt::Break
    597                                                         )
    598                                                 })
     587                                                waitfor->orelse.statement,
     588                                                new BranchStmt(
     589                                                        "",
     590                                                        BranchStmt::Break
     591                                                )
    599592                                        }
    600593                                )
Note: See TracChangeset for help on using the changeset viewer.