[m-rev.] for post-commit review: special LLDS code generation for ground terms

Julien Fischer juliensf at csse.unimelb.edu.au
Mon Jan 5 23:29:04 AEDT 2009

On Mon, 5 Jan 2009, Zoltan Somogyi wrote:

> Speed up the LLDS code generator's handling of code that constructs large
> ground terms by specializing it.
> This diff reduces the compilation time for training_cars_full.m by a further
> 38% or so, for an overall reduction by about a factor of five since I started.

Great work!

> The time on tools/speedtest stays pretty much the same.
> compiler/unify_gen.m:
> 	Add a mechanism to construct code for from_ground_term_construct
> 	scopes directly.
> compiler/code_gen.m:
> 	Invoke the new mechanism in unify_gen.m for from_ground_term_construct
> 	scopes.
> 	Reorganize some trace goal by duplicating some common support code
> 	inside them. The compiler wasn't optimizing it away as it should have.
> compiler/code_info.m:
> 	Export a predicate for use by the new code in unify_gen.m.
> 	Add some debugging predicates.
> compiler/opt_debug.m:
> 	Rename a predicate to better reflect its function.


> @@ -1241,6 +1248,200 @@
> %---------------------------------------------------------------------------%
> +:- type active_ground_term == pair(rval, llds_type).

One small stylistic issue, I would use:

 	:- type active_ground_term
 		--->	active_ground_term(rval, llds_type).

rather than the definition in the diff.

The diff looks okay otherwise.

mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au

More information about the reviews mailing list