1 /** 2 * Interface for exception handling support 3 * 4 * Compiler implementation of the 5 * $(LINK2 https://www.dlang.org, D programming language). 6 * 7 * Copyright: Copyright (C) 1993-1998 by Symantec 8 * Copyright (C) 2000-2023 by The D Language Foundation, All Rights Reserved 9 * Authors: $(LINK2 https://www.digitalmars.com, Walter Bright) 10 * License: $(LINK2 https://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 11 * Source: $(LINK2 https://github.com/dlang/dmd/blob/master/src/dmd/backend/exh.d, backend/exh.d) 12 */ 13 14 module dmd.backend.exh; 15 16 // Online documentation: https://dlang.org/phobos/dmd_backend_exh.html 17 18 import dmd.backend.cc; 19 import dmd.backend.cdef; 20 import dmd.backend.el; 21 import dmd.backend.type; 22 23 extern (C++): 24 @nogc: 25 nothrow: 26 27 struct Aobject 28 { 29 Symbol *AOsym; // Symbol for active object 30 targ_size_t AOoffset; // offset from that object 31 Symbol *AOfunc; // cleanup function 32 } 33 34 35 /* except.c */ 36 void except_init(); 37 void except_term(); 38 elem *except_obj_ctor(elem *e,Symbol *s,targ_size_t offset,Symbol *sdtor); 39 elem *except_obj_dtor(elem *e,Symbol *s,targ_size_t offset); 40 elem *except_throw_expression(); 41 type *except_declaration(Symbol *cv); 42 void except_exception_spec(type *t); 43 void except_index_set(int index); 44 int except_index_get(); 45 void except_pair_setoffset(void *p,targ_size_t offset); 46 void except_pair_append(void *p, int index); 47 void except_push(void *p,elem *e,block *b); 48 void except_pop(void *p,elem *e,block *b); 49 void except_mark(); 50 void except_release(); 51 Symbol *except_gensym(); 52 Symbol *except_gentables(); 53 void except_fillInEHTable(Symbol *s); 54 void except_reset(); 55 56 /* pdata.c */ 57 void win64_pdata(Symbol *sf);