dmd.backend.nteh

Support for NT exception handling

Compiler implementation of the D programming language.

Members

Functions

cdsetjmp
void cdsetjmp(CodeBuilder cdb, elem* e, regm_t* pretregs)

Generate code for setjmp().

nteh_context_string
ubyte* nteh_context_string()
nteh_contextsym
Symbol* nteh_contextsym()
nteh_contextsym_size
uint nteh_contextsym_size()
nteh_declarvars
void nteh_declarvars(Blockx* bx)

Declare frame variables.

nteh_ecodesym
Symbol* nteh_ecodesym()

Return: pointer to ecode symbol.

nteh_epilog
void nteh_epilog(CodeBuilder cdb)

Generate NT exception handling function epilog.

nteh_filltables
void nteh_filltables()
nteh_filter
void nteh_filter(CodeBuilder cdb, block* b)

Put out prolog for BC_filter block.

nteh_framehandler
void nteh_framehandler(Symbol* sfunc, Symbol* scopetable)

Generate C++ or D frame handler.

nteh_gentables
void nteh_gentables(Symbol* sfunc)

Generate and output scope table. Not called for NTEH C++ exceptions

nteh_monitor_epilog
void nteh_monitor_epilog(CodeBuilder cdb, regm_t retregs)

Release monitor, unhook monitor exception handler. Input: retregs registers to not destroy

nteh_monitor_prolog
void nteh_monitor_prolog(CodeBuilder cdb, Symbol* shandle)

Set monitor, hook monitor exception handler.

nteh_patchindex
code* nteh_patchindex(code* c, int sindex)

Generate code to set scope index.

nteh_prolog
void nteh_prolog(CodeBuilder cdb)

Generate NT exception handling function prolog.

nteh_setScopeTableIndex
elem* nteh_setScopeTableIndex(Blockx* blx, int scope_index)

Generate elem that sets the context index into the scope table.

nteh_setsp
void nteh_setsp(CodeBuilder cdb, opcode_t op)

Set/Reset ESP from context.

nteh_unwind
void nteh_unwind(CodeBuilder cdb, regm_t saveregs, uint stop_index)

Call _local_unwind(), which means call the __finally blocks until stop_index is reached.

nteh_usevars
void nteh_usevars()

Mark EH variables as used so that they don't get optimized away.

Meta