Files
mercury/compiler
Oliver Hutchison bcf7dbf9f8 Add support for tabling.
Estimated hours taken: 250

Add support for tabling.

This change allows for model_det, model_semidet and model_non memoing,
minimal model and loop detection tabling.

compiler/base_type_layout.m:
	Update comments to reflect new runtime naming standard.

compiler/det_analysis.m:
	Allow tabling to change the result of det analysis. This is
	necessary in the case of minimal model tabling which can
	turn a det procedure into a semidet one.

compiler/det_report.m:
compiler/hlds_data.m:
	Add code to report error messages for various non compatible
	tabling methods and determinism.

compiler/hlds_out.m:
compiler/modules.m:
	Remove reference to the old memo marker.

compiler/hlds_pred.m:
	Create new type (eval_method) to define which of the available
	evaluation methods should be used each procedure.
	Add new field to the proc_info structure.
	Add several new predicates relating to the new eval_method type.

compiler/inlining.m:
compiler/intermod.m:
	Make sure only procedures with normal evaluation are inlined.

compiler/make_hlds.m:
	Add code to process new tabling pragmas.

compiler/mercury_compile.m:
	Call the tabling transformation code.

compiler/modes.m:
	Make sure that all procedures with non normal evaluation have
	no unique/partially instantiated modes. Produce error messages
	if they do. Support for partially instantiated modes is currently
	missing as it represents a large amount of work for a case that
	is currently not used.

compiler/module_qual.m:
compile/prog_data.m:
compiler/prog_io_pragma.m:
	Add three new pragma types:
		`memo'
		`loop_check'
		`minimal_model'
	and code to support them.

compiler/simplify.m:
	Don't report infinite recursion warning if a procedure has
	minimal model evaluation.

compiler/stratify.m:
	Change the stratification analyser so that it reports cases of
	definite non-stratification. Rather than reporting warnings for
	any code that is not definitely stratified.
	Remove reference to the old memo marker.

compiler/switch_detection.m:
	Fix a small bug where goal were being placed in reverse order.
	Call list__reverse on the list of goals.

compiler/table_gen.m:
	New module to do the actual tabling transformation.

compiler/notes/compiler_design.html:
	Document addition of new tabling pass to the compiler.

doc/reference_manual.texi:
	Fix mistake in example.

library/mercury_builtin.m:
	Add many new predicates for support of tabling.

library/std_util.m:
library/store.m:
	Move the functions :
		ML_compare_type_info
		ML_collapse_equivalences
		ML_create_type_info
	to the runtime.

runtime/mercury_deep_copy.c:
runtime/mercury_type_info.h:
runtime/mercury_type_info.c:
	Move the make_type_info function into the mercury_type_info module
	and make it public.

runtime/Mmakefile:
runtime/mercury_imp.h:
	Add references to new files added for tabling support.

runtime/mercury_string.h:
	Change hash macro so it does not cause a name clash with any
	variable called "hash".

runtime/mercury_type_info.c:
runtime/mercury_type_info.h:
	Add three new functions taken from the library :
		MR_compare_type_info
		MR_collapse_equivalences
		MR_create_type_info.

runtime/mercury_table_any.c:
runtime/mercury_table_any.h:
runtime/mercury_table_enum.c:
runtime/mercury_table_enum.h:
runtime/mercury_table_int_float_string.c:
runtime/mercury_table_int_float_string.h:
runtime/mercury_table_type_info.c:
runtime/mercury_table_type_info.h:
runtime/mercury_tabling.h:
	New modules for the support of tabling.
1998-05-15 07:09:29 +00:00
..
1998-05-15 07:09:29 +00:00
1998-04-08 11:36:13 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-04-08 11:36:13 +00:00
1998-04-08 11:36:13 +00:00
1998-04-08 11:36:13 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-05-15 07:09:29 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-04-27 04:05:12 +00:00
1998-03-03 17:48:14 +00:00
1998-03-24 00:06:59 +00:00
1998-04-27 04:05:12 +00:00
1998-04-27 04:05:12 +00:00
1998-03-03 17:48:14 +00:00
1998-05-15 07:09:29 +00:00
1998-04-27 04:05:12 +00:00
1998-05-15 07:09:29 +00:00
1998-05-15 07:09:29 +00:00
1998-05-15 07:09:29 +00:00
1998-03-24 00:06:59 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-05-15 07:09:29 +00:00
1998-04-08 11:36:13 +00:00
1998-04-27 04:05:12 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-05-15 07:09:29 +00:00
1998-05-15 07:09:29 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-04-27 04:05:12 +00:00
1998-04-27 04:05:12 +00:00
1998-04-27 04:05:12 +00:00
1998-04-27 04:05:12 +00:00
1998-04-08 11:36:13 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-03-05 05:24:47 +00:00
1998-04-27 04:05:12 +00:00
1998-03-03 17:48:14 +00:00
1998-05-15 07:09:29 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-05-15 07:09:29 +00:00
1998-04-08 11:36:13 +00:00
1998-05-15 07:09:29 +00:00
1998-04-08 11:36:13 +00:00
1998-05-15 07:09:29 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00
1998-04-27 04:05:12 +00:00
1998-04-27 04:05:12 +00:00
1998-03-03 17:48:14 +00:00
1998-04-08 11:36:13 +00:00
1998-03-03 17:48:14 +00:00
1998-03-03 17:48:14 +00:00