- File:
-
- 1 edited
-
doc/working/exception/translate.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/working/exception/translate.c
r465ed18 r35ba584c 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 we will have 5 * to have access to where the translations are preformed. 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. 6 13 */ 7 14 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. 15 // Currently it is a typedef for int, but later it will be a new type. 10 16 typedef int exception; 11 17 12 // These might be given simpler names and made public.13 18 void __throw_terminate(exception except) __attribute__((noreturn)); 14 19 void __throw_resume(exception except); … … 49 54 50 55 __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; 51 71 52 72 … … 232 252 } 233 253 void finally1() { 234 // (Finally, because of timing, also work for resume.) 254 // Finally, because of timing, also works for resume. 255 // However this might not actually be better in any way. 235 256 __try_resume_cleanup(); 236 257
Note:
See TracChangeset
for help on using the changeset viewer.