Changes in / [a78c3ff:aeb31b1]
- Files:
-
- 15 added
- 10 deleted
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/io.cfa
ra78c3ff raeb31b1 160 160 static inline void process(struct io_uring_cqe & cqe ) { 161 161 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", future, cqe.res, data->thrd);162 __cfadbg_print_safe( io, "Kernel I/O : Syscall completed : cqe %p, result %d for %p\n", &cqe, cqe.res, future ); 163 163 164 164 fulfil( *future, cqe.res ); … … 298 298 __u32 mask = *ring.submit_q.mask; 299 299 300 disable_interrupts(); 301 __u32 off = __tls_rand(); 302 enable_interrupts( __cfaabi_dbg_ctx ); 300 __u32 off = thread_rand(); 303 301 304 302 // Loop around looking for an available spot … … 344 342 __u32 ready_mask = ring.submit_q.ready_cnt - 1; 345 343 346 disable_interrupts(); 347 __u32 off = __tls_rand(); 348 enable_interrupts( __cfaabi_dbg_ctx ); 344 __u32 off = thread_rand(); 349 345 350 346 __u32 picked; -
libcfa/src/concurrency/io/call.cfa.in
ra78c3ff raeb31b1 84 84 85 85 /* paranoid */ verifyf( cltr->io.ctxs, "default io contexts for cluster %p are missing\\n", cltr); 86 return &cltr->io.ctxs[ __tls_rand() % cltr->io.cnt ];86 return &cltr->io.ctxs[ thread_rand() % cltr->io.cnt ]; 87 87 } 88 88 #endif -
libcfa/src/concurrency/kernel.cfa
ra78c3ff raeb31b1 619 619 lock( kernel_abort_lock __cfaabi_dbg_ctx2 ); 620 620 621 // disable interrupts, it no longer makes sense to try to interrupt this processor 622 disable_interrupts(); 623 621 624 // first task to abort ? 622 625 if ( kernel_abort_called ) { // not first task to abort ? -
libcfa/src/concurrency/kernel/fwd.hfa
ra78c3ff raeb31b1 132 132 } 133 133 134 extern uint64_t thread_rand(); 135 134 136 //----------------------------------------------------------------------- 135 137 // Statics call at the end of each thread to register statistics -
libcfa/src/concurrency/thread.cfa
ra78c3ff raeb31b1 162 162 } 163 163 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 164 171 // Local Variables: // 165 172 // mode: c // -
libcfa/src/interpose.cfa
ra78c3ff raeb31b1 220 220 } 221 221 222 static volatile int __abort_stage = 0; 223 222 224 // Cannot forward va_list. 223 225 void __abort( bool signalAbort, const char fmt[], va_list args ) { 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 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); 244 268 } 245 269 -
src/ResolvExpr/AlternativeFinder.cc
ra78c3ff raeb31b1 131 131 132 132 void printAlts( const AltList &list, std::ostream &os, unsigned int indentAmt ) { 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; 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; 160 145 } 161 146 } -
src/ResolvExpr/Candidate.cpp
ra78c3ff raeb31b1 41 41 42 42 void print( std::ostream & os, const CandidateList & cands, Indenter indent ) { 43 for ( const CandidateRef & cand : cands ) { 44 print( os, *cand, indent ); 45 os << std::endl; 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; 46 55 } 47 56 } -
tests/.expect/castError.oast.txt
ra78c3ff raeb31b1 3 3 Name: f 4 4 ... to: 5 char 6 with resolved type: 5 7 char Alternatives are: 6 8 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 7 Variable Expression: f: function 8 accepting unspecified arguments 9 ... returning nothing 10 9 Variable Expression: f: double 10 with resolved type: 11 double 11 12 ... to: 13 char 14 with resolved type: 12 15 char 13 16 (types: … … 17 20 18 21 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 19 Variable Expression: f: double 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 20 31 ... to: 32 char 33 with resolved type: 21 34 char 22 35 (types: … … 27 40 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 28 41 Variable Expression: f: signed int 42 with resolved type: 43 signed int 29 44 ... to: 45 char 46 with resolved type: 30 47 char 31 48 (types: … … 39 56 Comma Expression: 40 57 constant expression (3 3: signed int) 58 with resolved type: 59 signed int 41 60 Name: v 42 ... to: nothing Alternatives are: 61 ... to: nothing 62 with resolved type: 63 void Alternatives are: 43 64 Cost ( 0, 0, 2, 0, 0, 0, 0 ): Generated Cast of: 44 65 Comma Expression: 45 66 constant expression (3 3: signed int) 46 Variable Expression: v: unsigned char 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 47 74 ... to: nothing 75 with resolved type: 76 void 48 77 (types: 49 78 void … … 54 83 Comma Expression: 55 84 constant expression (3 3: signed int) 56 Variable Expression: v: signed short 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 57 92 ... to: nothing 93 with resolved type: 94 void 58 95 (types: 59 96 void … … 69 106 char 70 107 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
ra78c3ff raeb31b1 9 9 ... with resolved type: 10 10 void Alternatives are: 11 Cost ( 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 A without body 32 ... with resolved type: 33 pointer to instance of struct A without body 34 35 ... with resolved type: 36 reference to instance of struct A without body 37 ... to: nothing 38 ... with resolved type: 39 void 40 (types: 41 void 42 ) 43 Environment:([unbound]) -> instance of struct A without body (no widening) 44 45 11 46 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of: 12 47 Application of … … 42 77 ) 43 78 Environment:([unbound]) -> instance of struct B with body (no widening) 44 45 46 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:47 Application of48 Variable Expression: *?: forall49 DT: data type50 function51 ... with parameters52 pointer to instance of type DT (not function type)53 ... returning54 reference to instance of type DT (not function type)55 56 ... with resolved type:57 pointer to forall58 [unbound]:data type59 function60 ... with parameters61 pointer to instance of type [unbound] (not function type)62 ... returning63 reference to instance of type [unbound] (not function type)64 65 ... to arguments66 Variable Expression: x: pointer to instance of struct A without body67 ... with resolved type:68 pointer to instance of struct A without body69 70 ... with resolved type:71 reference to instance of struct A without body72 ... to: nothing73 ... with resolved type:74 void75 (types:76 void77 )78 Environment:([unbound]) -> instance of struct A without body (no widening)79 79 80 80 -
tests/meta/.expect/archVast.nast.arm64.txt
ra78c3ff raeb31b1 3 3 Name: FA64 4 4 ... to: 5 char 6 ... with resolved type: 5 7 char Alternatives are: 6 8 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 7 9 Variable Expression: FA64: signed int 10 ... with resolved type: 11 signed int 8 12 ... to: 13 char 14 ... with resolved type: 9 15 char 10 16 (types: … … 18 24 ... returning nothing 19 25 26 ... with resolved type: 27 pointer to function 28 accepting unspecified arguments 29 ... returning nothing 30 20 31 ... to: 32 char 33 ... with resolved type: 21 34 char 22 35 (types: … … 27 40 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 28 41 Variable Expression: FA64: double 42 ... with resolved type: 43 double 29 44 ... to: 45 char 46 ... with resolved type: 30 47 char 31 48 (types: -
tests/meta/.expect/archVast.nast.x64.txt
ra78c3ff raeb31b1 7 7 char Alternatives are: 8 8 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 9 Variable Expression: FX64: signed int9 Variable Expression: FX64: double 10 10 ... with resolved type: 11 signed int11 double 12 12 ... to: 13 13 char … … 39 39 40 40 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 41 Variable Expression: FX64: double41 Variable Expression: FX64: signed int 42 42 ... with resolved type: 43 double43 signed int 44 44 ... to: 45 45 char -
tests/meta/.expect/archVast.oast.arm64.txt
ra78c3ff raeb31b1 3 3 Name: FA64 4 4 ... to: 5 char 6 with resolved type: 5 7 char Alternatives are: 6 8 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: … … 9 11 ... returning nothing 10 12 13 with resolved type: 14 pointer to function 15 accepting unspecified arguments 16 ... returning nothing 17 11 18 ... to: 19 char 20 with resolved type: 12 21 char 13 22 (types: … … 18 27 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 19 28 Variable Expression: FA64: double 29 with resolved type: 30 double 20 31 ... to: 32 char 33 with resolved type: 21 34 char 22 35 (types: … … 27 40 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 28 41 Variable Expression: FA64: signed int 42 with resolved type: 43 signed int 29 44 ... to: 45 char 46 with resolved type: 30 47 char 31 48 (types: -
tests/meta/.expect/archVast.oast.x64.txt
ra78c3ff raeb31b1 6 6 with resolved type: 7 7 char Alternatives are: 8 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 9 Variable Expression: FX64: double 10 with resolved type: 11 double 12 ... to: 13 char 14 with resolved type: 15 char 16 (types: 17 char 18 ) 19 Environment: 20 8 21 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of: 9 22 Variable Expression: FX64: function … … 16 29 ... returning nothing 17 30 18 ... to:19 char20 with resolved type:21 char22 (types:23 char24 )25 Environment:26 27 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:28 Variable Expression: FX64: double29 with resolved type:30 double31 31 ... to: 32 32 char
Note: See TracChangeset
for help on using the changeset viewer.