Changes in / [aeb31b1:a78c3ff]


Ignore:
Files:
10 added
15 deleted
14 edited

Legend:

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

    raeb31b1 ra78c3ff  
    160160        static inline void process(struct io_uring_cqe & cqe ) {
    161161                struct io_future_t * future = (struct io_future_t *)(uintptr_t)cqe.user_data;
    162                 __cfadbg_print_safe( io, "Kernel I/O : Syscall completed : cqe %p, result %d for %p\n", &cqe, cqe.res, future );
     162                __cfadbg_print_safe( io, "Kernel I/O : Syscall completed : cqe %p, result %d for %p\n", future, cqe.res, data->thrd );
    163163
    164164                fulfil( *future, cqe.res );
     
    298298                __u32 mask = *ring.submit_q.mask;
    299299
    300                 __u32 off = thread_rand();
     300                disable_interrupts();
     301                        __u32 off = __tls_rand();
     302                enable_interrupts( __cfaabi_dbg_ctx );
    301303
    302304                // Loop around looking for an available spot
     
    342344                __u32 ready_mask = ring.submit_q.ready_cnt - 1;
    343345
    344                 __u32 off = thread_rand();
     346                disable_interrupts();
     347                        __u32 off = __tls_rand();
     348                enable_interrupts( __cfaabi_dbg_ctx );
    345349
    346350                __u32 picked;
  • libcfa/src/concurrency/io/call.cfa.in

    raeb31b1 ra78c3ff  
    8484
    8585                /* paranoid */ verifyf( cltr->io.ctxs, "default io contexts for cluster %p are missing\\n", cltr);
    86                 return &cltr->io.ctxs[ thread_rand() % cltr->io.cnt ];
     86                return &cltr->io.ctxs[ __tls_rand() % cltr->io.cnt ];
    8787        }
    8888#endif
  • libcfa/src/concurrency/kernel.cfa

    raeb31b1 ra78c3ff  
    619619        lock( kernel_abort_lock __cfaabi_dbg_ctx2 );
    620620
    621         // disable interrupts, it no longer makes sense to try to interrupt this processor
    622         disable_interrupts();
    623 
    624621        // first task to abort ?
    625622        if ( kernel_abort_called ) {                    // not first task to abort ?
  • libcfa/src/concurrency/kernel/fwd.hfa

    raeb31b1 ra78c3ff  
    132132                }
    133133
    134                 extern uint64_t thread_rand();
    135 
    136134                //-----------------------------------------------------------------------
    137135                // Statics call at the end of each thread to register statistics
  • libcfa/src/concurrency/thread.cfa

    raeb31b1 ra78c3ff  
    162162}
    163163
    164 uint64_t thread_rand() {
    165         disable_interrupts();
    166         uint64_t ret = __tls_rand();
    167         enable_interrupts( __cfaabi_dbg_ctx );
    168         return ret;
    169 }
    170 
    171164// Local Variables: //
    172165// mode: c //
  • libcfa/src/interpose.cfa

    raeb31b1 ra78c3ff  
    220220}
    221221
    222 static volatile int __abort_stage = 0;
    223 
    224222// Cannot forward va_list.
    225223void __abort( bool signalAbort, const char fmt[], va_list args ) {
    226         int stage = __atomic_add_fetch( &__abort_stage, 1, __ATOMIC_SEQ_CST );
    227 
    228         // First stage: stop the cforall kernel and print
    229         if(stage == 1) {
    230                 // increment stage
    231                 stage = __atomic_add_fetch( &__abort_stage, 1, __ATOMIC_SEQ_CST );
    232 
    233                 // must be done here to lock down kernel
    234                 void * kernel_data = kernel_abort();
    235                 int len;
    236 
    237                 signal( SIGABRT, SIG_DFL );                                                     // prevent final "real" abort from recursing to handler
    238 
    239                 len = snprintf( abort_text, abort_text_size, "Cforall Runtime error (UNIX pid:%ld) ", (long int)getpid() ); // use UNIX pid (versus getPid)
    240                 __cfaabi_bits_write( STDERR_FILENO, abort_text, len );
    241 
    242                 assert( fmt );
    243                 len = vsnprintf( abort_text, abort_text_size, fmt, args );
    244                 __cfaabi_bits_write( STDERR_FILENO, abort_text, len );
    245 
    246                 // add optional newline if missing at the end of the format text
    247                 if ( fmt[strlen( fmt ) - 1] != '\n' ) {
    248                         __cfaabi_bits_write( STDERR_FILENO, "\n", 1 );
    249                 } // if
    250                 kernel_abort_msg( kernel_data, abort_text, abort_text_size );
    251         }
    252 
    253         // Second stage: print the backtrace
    254         if(stage == 2) {
    255                 // increment stage
    256                 stage = __atomic_add_fetch( &__abort_stage, 1, __ATOMIC_SEQ_CST );
    257 
    258                 // print stack trace in handler
    259                 __cfaabi_backtrace( signalAbort ? 4 : 2 );
    260         }
    261 
    262         do {
    263                 // Finally call abort
    264                 __cabi_libc.abort();
    265 
    266                 // Loop so that we never return
    267         } while(true);
     224        void * kernel_data = kernel_abort();                            // must be done here to lock down kernel
     225        int len;
     226
     227        signal( SIGABRT, SIG_DFL );                                                     // prevent final "real" abort from recursing to handler
     228
     229        len = snprintf( abort_text, abort_text_size, "Cforall Runtime error (UNIX pid:%ld) ", (long int)getpid() ); // use UNIX pid (versus getPid)
     230        __cfaabi_bits_write( STDERR_FILENO, abort_text, len );
     231
     232        assert( fmt );
     233        len = vsnprintf( abort_text, abort_text_size, fmt, args );
     234        __cfaabi_bits_write( STDERR_FILENO, abort_text, len );
     235
     236        if ( fmt[strlen( fmt ) - 1] != '\n' ) {                         // add optional newline if missing at the end of the format text
     237                __cfaabi_bits_write( STDERR_FILENO, "\n", 1 );
     238        } // if
     239        kernel_abort_msg( kernel_data, abort_text, abort_text_size );
     240
     241        __cfaabi_backtrace( signalAbort ? 4 : 2 );
     242
     243        __cabi_libc.abort();                                                            // print stack trace in handler
    268244}
    269245
  • src/ResolvExpr/AlternativeFinder.cc

    raeb31b1 ra78c3ff  
    131131
    132132        void printAlts( const AltList &list, std::ostream &os, unsigned int indentAmt ) {
    133                 std::vector<std::string> sorted;
    134                 sorted.reserve(list.size());
    135                 for(const auto & c : list) {
    136                         std::stringstream ss;
    137                         c.print( ss, indentAmt );
    138                         sorted.push_back(ss.str());
    139                 }
    140 
    141                 std::sort(sorted.begin(), sorted.end());
    142 
    143                 for ( const auto & s : sorted ) {
    144                         os << s << std::endl;
     133                Indenter indent = { indentAmt };
     134
     135                std::vector<int> idx;
     136                idx.reserve(list.size());
     137                for(int i = 0; i < list.size(); i++) { idx.push_back(i); }
     138
     139                std::sort(idx.begin(), idx.end(), [&list](int lhs_idx, int rhs_idx) -> bool {
     140                        const auto & lhs = list.at(lhs_idx);
     141                        const auto & rhs = list.at(rhs_idx);
     142                        if(lhs.expr->location.startsBefore(rhs.expr->location)) return true;
     143                        if(rhs.expr->location.startsBefore(lhs.expr->location)) return false;
     144
     145                        if(lhs.env.size() < rhs.env.size()) return true;
     146                        if(lhs.env.size() > rhs.env.size()) return false;
     147
     148                        if(lhs.openVars.size() < rhs.openVars.size()) return true;
     149                        if(lhs.openVars.size() > rhs.openVars.size()) return false;
     150
     151                        if(lhs.need.size() < rhs.need.size()) return true;
     152                        if(lhs.need.size() > rhs.need.size()) return false;
     153
     154                        return false;
     155                });
     156
     157                for ( AltList::const_iterator i = list.begin(); i != list.end(); ++i ) {
     158                        i->print( os, indent );
     159                        os << std::endl;
    145160                }
    146161        }
  • src/ResolvExpr/Candidate.cpp

    raeb31b1 ra78c3ff  
    4141
    4242void print( std::ostream & os, const CandidateList & cands, Indenter indent ) {
    43         std::vector<std::string> sorted;
    44         sorted.reserve(cands.size());
    45         for(const auto & c : cands) {
    46                 std::stringstream ss;
    47                 print( ss, *c, indent );
    48                 sorted.push_back(ss.str());
    49         }
    50 
    51         std::sort(sorted.begin(), sorted.end());
    52 
    53         for ( const auto & s : sorted ) {
    54                 os << s << std::endl;
     43        for ( const CandidateRef & cand : cands ) {
     44                print( os, *cand, indent );
     45                os << std::endl;
    5546        }
    5647}
  • tests/.expect/castError.oast.txt

    raeb31b1 ra78c3ff  
    33  Name: f
    44... to:
    5   char
    6 with resolved type:
    75  char Alternatives are:
    86Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    9       Variable Expression: f: double
    10       with resolved type:
    11         double
     7      Variable Expression: f: function
     8        accepting unspecified arguments
     9      ... returning nothing
     10
    1211    ... to:
    13       char
    14     with resolved type:
    1512      char
    1613  (types:
     
    2017
    2118Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    22       Variable Expression: f: function
    23         accepting unspecified arguments
    24       ... returning nothing
    25 
    26       with resolved type:
    27         pointer to function
    28           accepting unspecified arguments
    29         ... returning nothing
    30 
     19      Variable Expression: f: double
    3120    ... to:
    32       char
    33     with resolved type:
    3421      char
    3522  (types:
     
    4027Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    4128      Variable Expression: f: signed int
    42       with resolved type:
    43         signed int
    4429    ... to:
    45       char
    46     with resolved type:
    4730      char
    4831  (types:
     
    5639  Comma Expression:
    5740    constant expression (3 3: signed int)
    58     with resolved type:
    59       signed int
    6041    Name: v
    61 ... to: nothing
    62 with resolved type:
    63   void  Alternatives are:
     42... to: nothing Alternatives are:
    6443Cost ( 0, 0, 2, 0, 0, 0, 0 ): Generated Cast of:
    6544      Comma Expression:
    6645        constant expression (3 3: signed int)
    67         with resolved type:
    68           signed int
    69         Variable Expression: v: signed short int
    70         with resolved type:
    71           signed short int
    72       with resolved type:
    73         signed short int
     46        Variable Expression: v: unsigned char
    7447    ... to: nothing
    75     with resolved type:
    76       void
    7748  (types:
    7849    void
     
    8354      Comma Expression:
    8455        constant expression (3 3: signed int)
    85         with resolved type:
    86           signed int
    87         Variable Expression: v: unsigned char
    88         with resolved type:
    89           unsigned char
    90       with resolved type:
    91         unsigned char
     56        Variable Expression: v: signed short int
    9257    ... to: nothing
    93     with resolved type:
    94       void
    9558  (types:
    9659    void
     
    10669    char
    10770
    108 with resolved type:
    109   instance of struct S with body 1
    110   ... with parameters
    111     char
    112 
  • tests/errors/.expect/completeType.nast.x64.txt

    raeb31b1 ra78c3ff  
    99... with resolved type:
    1010  void Alternatives are:
     11Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
     12      Application of
     13        Variable Expression: *?: forall
     14          DT: data type
     15          function
     16        ... with parameters
     17          pointer to instance of type DT (not function type)
     18        ... returning
     19          reference to instance of type DT (not function type)
     20
     21        ... with resolved type:
     22          pointer to forall
     23            [unbound]:data type
     24            function
     25          ... with parameters
     26            pointer to instance of type [unbound] (not function type)
     27          ... returning
     28            reference to instance of type [unbound] (not function type)
     29
     30        ... to arguments
     31        Variable Expression: x: pointer to instance of struct B with body
     32        ... with resolved type:
     33          pointer to instance of struct B with body
     34
     35      ... with resolved type:
     36        reference to instance of struct B with body
     37    ... to: nothing
     38    ... with resolved type:
     39      void
     40  (types:
     41    void
     42  )
     43  Environment:([unbound]) -> instance of struct B with body (no widening)
     44
     45
    1146Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
    1247      Application of
     
    4277  )
    4378  Environment:([unbound]) -> instance of struct A without body (no widening)
    44 
    45 
    46 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
    47       Application of
    48         Variable Expression: *?: forall
    49           DT: data type
    50           function
    51         ... with parameters
    52           pointer to instance of type DT (not function type)
    53         ... returning
    54           reference to instance of type DT (not function type)
    55 
    56         ... with resolved type:
    57           pointer to forall
    58             [unbound]:data type
    59             function
    60           ... with parameters
    61             pointer to instance of type [unbound] (not function type)
    62           ... returning
    63             reference to instance of type [unbound] (not function type)
    64 
    65         ... to arguments
    66         Variable Expression: x: pointer to instance of struct B with body
    67         ... with resolved type:
    68           pointer to instance of struct B with body
    69 
    70       ... with resolved type:
    71         reference to instance of struct B with body
    72     ... to: nothing
    73     ... with resolved type:
    74       void
    75   (types:
    76     void
    77   )
    78   Environment:([unbound]) -> instance of struct B with body (no widening)
    7979
    8080
  • tests/meta/.expect/archVast.nast.arm64.txt

    raeb31b1 ra78c3ff  
    33  Name: FA64
    44... to:
    5   char
    6 ... with resolved type:
    75  char Alternatives are:
    86Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    97      Variable Expression: FA64: signed int
    10       ... with resolved type:
    11         signed int
    128    ... to:
    13       char
    14     ... with resolved type:
    159      char
    1610  (types:
     
    2418      ... returning nothing
    2519
    26       ... with resolved type:
    27         pointer to function
    28           accepting unspecified arguments
    29         ... returning nothing
    30 
    3120    ... to:
    32       char
    33     ... with resolved type:
    3421      char
    3522  (types:
     
    4027Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    4128      Variable Expression: FA64: double
    42       ... with resolved type:
    43         double
    4429    ... to:
    45       char
    46     ... with resolved type:
    4730      char
    4831  (types:
  • tests/meta/.expect/archVast.nast.x64.txt

    raeb31b1 ra78c3ff  
    77  char Alternatives are:
    88Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    9       Variable Expression: FX64: double
     9      Variable Expression: FX64: signed int
    1010      ... with resolved type:
    11         double
     11        signed int
    1212    ... to:
    1313      char
     
    3939
    4040Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    41       Variable Expression: FX64: signed int
     41      Variable Expression: FX64: double
    4242      ... with resolved type:
    43         signed int
     43        double
    4444    ... to:
    4545      char
  • tests/meta/.expect/archVast.oast.arm64.txt

    raeb31b1 ra78c3ff  
    33  Name: FA64
    44... to:
    5   char
    6 with resolved type:
    75  char Alternatives are:
    86Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
     
    119      ... returning nothing
    1210
    13       with resolved type:
    14         pointer to function
    15           accepting unspecified arguments
    16         ... returning nothing
    17 
    1811    ... to:
    19       char
    20     with resolved type:
    2112      char
    2213  (types:
     
    2718Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    2819      Variable Expression: FA64: double
    29       with resolved type:
    30         double
    3120    ... to:
    32       char
    33     with resolved type:
    3421      char
    3522  (types:
     
    4027Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    4128      Variable Expression: FA64: signed int
    42       with resolved type:
    43         signed int
    4429    ... to:
    45       char
    46     with resolved type:
    4730      char
    4831  (types:
  • tests/meta/.expect/archVast.oast.x64.txt

    raeb31b1 ra78c3ff  
    77  char Alternatives are:
    88Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    9       Variable Expression: FX64: double
     9      Variable Expression: FX64: function
     10        accepting unspecified arguments
     11      ... returning nothing
     12
    1013      with resolved type:
    11         double
     14        pointer to function
     15          accepting unspecified arguments
     16        ... returning nothing
     17
    1218    ... to:
    1319      char
     
    2026
    2127Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
    22       Variable Expression: FX64: function
    23         accepting unspecified arguments
    24       ... returning nothing
    25 
     28      Variable Expression: FX64: double
    2629      with resolved type:
    27         pointer to function
    28           accepting unspecified arguments
    29         ... returning nothing
    30 
     30        double
    3131    ... to:
    3232      char
Note: See TracChangeset for help on using the changeset viewer.