- File:
-
- 1 edited
-
doc/working/exception/translate.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/working/exception/translate.c
r35ba584c r465ed18 2 2 * 3 3 * Note that these are not final. Names, syntax and the exact translation 4 * will be updated. The first section is the shared definitions, not generated 5 * by the local translations but used by the translated code. 6 * 7 * Most of these exist only after translation (in C code). The first (the 8 * exception type) has to exist in Cforall code so that it can be used 9 * directly in Cforall. The two __throw_* functions might have wrappers in 10 * Cforall, but the underlying functions should probably be C. struct 11 * stack_exception_data has to exist inside of the coroutine data structures 12 * and so should be compiled as they are. 4 * will be updated. The first section is the shared definitions we will have 5 * to have access to where the translations are preformed. 13 6 */ 14 7 15 // Currently it is a typedef for int, but later it will be a new type. 8 // Currently it is a typedef for int, but later it will be the root of the 9 // hierarchy and so have to be public. 16 10 typedef int exception; 17 11 12 // These might be given simpler names and made public. 18 13 void __throw_terminate(exception except) __attribute__((noreturn)); 19 14 void __throw_resume(exception except); … … 54 49 55 50 __throw_resume(exception_instance); 56 57 58 59 // Rethrows (inside matching handlers):60 "Cforall"61 62 throw;63 64 resume;65 66 "C"67 68 __rethrow_terminate();69 70 return false;71 51 72 52 … … 252 232 } 253 233 void finally1() { 254 // Finally, because of timing, also works for resume. 255 // However this might not actually be better in any way. 234 // (Finally, because of timing, also work for resume.) 256 235 __try_resume_cleanup(); 257 236
Note:
See TracChangeset
for help on using the changeset viewer.