Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/exception.hfa

    re68d092 r7c38d53  
    1010// Created On       : Thu Apr  7 10:25:00 2020
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Thu Apr  7 10:25:00 2020
    13 // Update Count     : 0
     12// Last Modified On : Wed Apr 13 15:42:00 2020
     13// Update Count     : 1
    1414//
     15
     16trait is_exception(dtype T) {
     17        // The trait system can't describe the actual constrants.
     18        // Unused, should always be a no-op.
     19        void mark_exception(T *);
     20};
     21
     22forall(dtype T | is_exception(T))
     23inline void cancel_stack(T & except) __attribute__((noreturn)) {
     24        __cfaehm_cancel_stack( (exception_t *)&except );
     25}
    1526
    1627// Everything below this line should be considered a patch while the exception
     
    6980#define _VTABLE_DECLARATION(exception_name, parent_name, ...) \
    7081        struct exception_name; \
     82        void mark_exception(exception_name *); \
    7183        VTABLE_TYPE(exception_name); \
    7284        extern VTABLE_TYPE(exception_name) VTABLE_NAME(exception_name); \
     
    8597#define VTABLE_INSTANCE(...) _EXC_DISPATCH(_VTABLE_INSTANCE, __VA_ARGS__)
    8698#define _VTABLE_INSTANCE(exception_name, parent_name, ...) \
     99        void mark_exception(exception_name *) {} \
    87100        void _GLUE2(exception_name,_copy)(exception_name * this, exception_name * other) { \
    88101                *this = *other; \
Note: See TracChangeset for help on using the changeset viewer.