The OpenD Programming Language

ldc.eh_msvc

This module implements the runtime-part of LDC exceptions on Windows, based on the MSVC++ runtime.

Members

Aliases

terminate_handler
alias terminate_handler = void function()

////////////////////////////////////////////////////////////

Functions

__current_exception
void** __current_exception()

////////////////////////////////////////////////////////////

_d_eh_enter_catch
Throwable _d_eh_enter_catch(void* ptr, ClassInfo catchType)

////////////////////////////////////////////////////////////

_d_enter_cleanup
bool _d_enter_cleanup(void* ptr)

////////////////////////////////////////////////////////////

eh_malloc
ImgPtr!T eh_malloc(size_t size)

////////////////////////////////////////////////////////////

msvc_eh_init
void msvc_eh_init()

////////////////////////////////////////////////////////////

toPointer
T* toPointer(T* imgPtr)

////////////////////////////////////////////////////////////

Structs

EHHeap
struct EHHeap

Heap dedicated for CatchableTypeArray/CatchableType/TypeDescriptor structs of cached _ThrowInfos. The heap is used to keep these structs tightly together, as they are referenced via 32-bit offsets from a common base. We simply use the heap's start as base (instead of the actual image base), and malloc() returns an offset. The allocated structs are all cached and never released, so this heap can only grow. The offsets remain constant after a grow, so it's only the base which may change.

Meta