Ignore:
Timestamp:
Nov 17, 2020, 4:29:51 PM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
3ea8ad1
Parents:
1e208ea
Message:

Minor improvments to assertions and comments

File:
1 edited

Legend:

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

    r1e208ea r9d6e1b8a  
    251251                /* paranoid */ verify( ! __preemption_enabled() );
    252252                /* paranoid */ verify( kernelTLS().this_thread == thrd_dst );
     253                /* paranoid */ verify( thrd_dst->curr_cluster == this->cltr );
    253254                /* paranoid */ verify( thrd_dst->context.SP );
    254255                /* paranoid */ verify( thrd_dst->state != Halted );
     
    267268                /* paranoid */ verifyf( ((uintptr_t)thrd_dst->context.SP) < ((uintptr_t)__get_stack(thrd_dst->curr_cor)->base ), "ERROR : Destination $thread %p has been corrupted.\n StackPointer too small.\n", thrd_dst );
    268269                /* paranoid */ verify( thrd_dst->context.SP );
     270                /* paranoid */ verify( thrd_dst->curr_cluster == this->cltr );
    269271                /* paranoid */ verify( kernelTLS().this_thread == thrd_dst );
    270272                /* paranoid */ verify( ! __preemption_enabled() );
     
    360362void __schedule_thread( $thread * thrd ) {
    361363        /* paranoid */ verify( ! __preemption_enabled() );
     364        /* paranoid */ verify( kernelTLS().this_proc_id );
    362365        /* paranoid */ verify( thrd );
    363366        /* paranoid */ verify( thrd->state != Halted );
    364         /* paranoid */ verify( kernelTLS().this_proc_id );
     367        /* paranoid */ verify( thrd->curr_cluster );
    365368        /* paranoid */ #if defined( __CFA_WITH_VERIFY__ )
    366369        /* paranoid */  if( thrd->state == Blocked || thrd->state == Start ) assertf( thrd->preempted == __NO_PREEMPTION,
     
    473476                disable_interrupts();
    474477
     478                /* paranoid */ verify( ! __preemption_enabled() );
     479                /* paranoid */ verify( thrd->state == Active );
     480                /* paranoid */ verify( 0x0D15EA5E0D15EA5Ep == thrd->canary );
     481                /* paranoid */ verify( kernelTLS().this_thread == thrd );
     482                /* paranoid */ verify( thrd->context.SP );
     483                /* paranoid */ verifyf( ((uintptr_t)thrd->context.SP) > ((uintptr_t)__get_stack(thrd->curr_cor)->limit), "ERROR : $thread %p has been corrupted.\n StackPointer too large.\n", thrd );
     484                /* paranoid */ verifyf( ((uintptr_t)thrd->context.SP) < ((uintptr_t)__get_stack(thrd->curr_cor)->base ), "ERROR : $thread %p has been corrupted.\n StackPointer too small.\n", thrd );
     485
    475486                thrd->state = Halted;
    476487                if( TICKET_RUNNING != thrd->ticket ) { abort( "Thread terminated with pending unpark" ); }
    477                 if( thrd != this->owner || this->recursion != 1) { abort( "Thread internal monitor has unbalanced recursion" ); }
     488                if( thrd != this->owner ) { abort( "Thread internal monitor has incorrect owner" ); }
     489                if( this->recursion != 1) { abort( "Thread internal monitor has unbalanced recursion" ); }
    478490
    479491                // Leave the thread
    480                 /* paranoid */ verify( ! __preemption_enabled() );
    481492                returnToKernel();
     493
     494                // Control flow should never reach here!
    482495                abort();
    483 
    484                 // Control flow should never reach here!
    485496        }
    486497}
Note: See TracChangeset for help on using the changeset viewer.