mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-12 20:34:19 +00:00
Estimated hours taken: 8 Add support for exceptions to the debugger, and add support for debugging to the exception module. browser/debugger_interface.m: Add `exception' to the trace_port_type enumeration. runtime/mercury_trace_base.h: Add MR_PORT_EXCEPTION to the MR_Trace_Port enumeration. trace/mercury_trace_internal.c: trace/mercury_trace.h: trace/mercury_trace.c: Modify the code to handle MR_PORT_EXCEPTION. extras/exceptions/exception.m: - Define stack layout structures for the hand-written procedures `builtin_throw' and `builtin_catch'. - Use mktempframe() rather than mkframe() to allocate the temporary frames used to prevent hijacking of the exception-catching frame (this is more efficient, and avoids the need to give a stack layout for those frames). - Change the code for builtin_throw/1 so that if MR_trace_enabled is true, it calls a new function trace_throw(), which calls MR_trace(..., MR_PORT_EXCEPTION, ...) for each stack frame. - Fix some type errors occurring for non-GC grades. - Fix some uses of obsolete names (e.g. replace `hp' with `MR_hp'). runtime/mercury_trace_base.c: compiler/trace.m: Add some comments relating to the above changes.
This directory contains various additional libraries, tools, and so forth that are not part of the Mercury standard library. cgi A couple of Mercury library modules for doing HTML forms programming using CGI (Common Gateway Interface). clpr A Mercury interface to the CLP(R) constraint solver, for solving arithmetic constraints on (floating point) real numbers. complex_numbers A Mercury library package containing support for complex and imaginary numbers. dynamic_linking An interface to the C functions dlopen(), dlsym(), etc. that are supported by most modern Unix systems. exceptions A library module containing a (tentative) exception handling interface for Mercury. graphics A couple of packages for doing graphics programming and GUIs in Mercury: a Mercury interface to tcl/tk and a Mercury binding to OpenGL. odbc A Mercury interface to ODBC (Open Database Connectivity), for interfacing to standard relational database packages. references A library package containing modules for manipulating ML-style references (mutable state).