mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-19 15:54:18 +00:00
018b0a57bb7259fb206cc8d94f4c00578bae90fc
Estimated hours taken: 10 Implement RTTI support for the MLDS back-end using the rtti module. compiler/ml_base_type_info.m: Delete this file. compiler/rtti_to_mlds.m: New file, replaces ml_base_type_info. This generates MLDS code from the RTTI data structures. compiler/ml_code_gen.m: Don't call ml_base_type_info. compiler/mercury_compile.m: Call rtti_to_mlds. Also add a few more comments to the list of imported modules. compiler/mercury_compile.m: compiler/type_ctor_info.m: Delete the unnecessary second `module_info' parameter from type_ctor_info_generate_rtti. compiler/ml_code_util.m: Add ml_gen_proc_params_from_rtti, for use by gen_init_proc_id in rtti_to_mlds. Fix a bug where it was using Arity for both the PredArity and the TypeArity. compiler/rtti.m: compiler/rtti_out.m: Change the documentation for rtti_out.m to say that it _is_ intended to depend on LLDS. Move rtti_data_to_name from rtti_out.m to rtti.m, since that does not depend on the LLDS. Add rtti__name_is_exported/1, and implement rtti_name_linkage using that. Add some new fields to rtti_proc_label, for use by ml_gen_proc_params_from_rtti. compiler/mlds.m: Add a new alternative `rtti_type(rtti_name)' to mlds__type type, and a new alternative `rtti_data(rtti_type_id, rtti_name)' to the mlds__data_name type, so we can represent the names and types of the RTTI data. Change the mlds__initializer type to make it a bit more expressive, so that it can represent e.g. initializers for arrays of structs, since this is needed for some of the RTTI data. compiler/ml_code_util.m: compiler/ml_elim_nested.m: compiler/mlds_to_c.m: Handle the new definition of mlds__initializer, and the new alternatives in the rtti_name and mlds__data_name types.
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
Reportedly Mercury does not work on Solaris 2.5.1 if it is compiled with
gcc 2.7.x. It should however work fine on Solaris 2.5.1 if you compile
it with gcc 2.8, or if you use gcc 2.7.x with an earlier version of Solaris.
The binary distribution for Solaris that we distribute was compiled
with gcc 2.7.2, so if you have Solaris 2.5.1, you may need to compile
Mercury yourself from our source distribution.
("Solaris 2.x" is also known as "SunOS 5.x".)
Languages
Mercury
85.3%
C
8.7%
Shell
1.4%
Makefile
1%
JavaScript
1%
Other
2.1%