mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-19 15:54:18 +00:00
Estimated hours taken: 16 Implement trailing for the MLDS back-end. library/private_builtin.m: Define impure Mercury procedures corresponding to the trailing operations in runtime/mercury_trail.h. compiler/add_trail_ops.m: A new HLDS->HLDS pass. This implements trailing by inserting calls to the trailing primitives declared in library/private_builtin.m. compiler/notes/compiler_design.html: Document the new pass. compiler/mercury_compile.m: Change the code for mercury_compile__mlds_backend so that if trailing is enabled, it invokes the new add_trail_ops pass. runtime/mercury_wrapper.c: For high-level C grades, call MR_init_memory() (which sets up the redzone signal handlers, etc.) and if trailing is enabled, initialize the trail. library/benchmarking.m: Change the code in report_stats for printing out the size of the trail so that it gets the trail zone from MR_trail_zone rather than via the MercuryEngine, so that it works in high-level C grades (which don't have any MercuryEngine). extras/trailed_update/tr_array.m: extras/trailed_update/var.m: Add missing `#includes' to make these files work with the MLDS back-end.