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