[m-rev.] for review: optimize successive field updates
Julien Fischer
juliensf at cs.mu.OZ.AU
Tue May 17 17:01:44 AEST 2005
On Tue, 17 May 2005, Zoltan Somogyi wrote:
> For review by Julien.
>
> Zoltan.
>
> Fix a problem reported by Michael Day. When a piece of code had several updates
> to the fields of a cell in a row, we were constructing all the intermediate
> versions of the cell. With this change, we now construct only the final one.
>
Are you planning to merge this onto the release branch? If not, can you
let me know and I'll do it as this is something that should definitely
be included.
> compiler/simplify.m:
> The cause of the problem was simplify's use of the cannot_flush
> predicate from goal_form.m. Each field update consists of a pair of
> deconstruct/construct unifications inside a removable barrier scope,
> but cannot_flush assumed that any goal not on its small approved list
> may cause a stack flush. Simplify therefore told common.m to throw away
> its list of known cells when emerging from the scope.
>
> The fix is to replace the use of cannot_flush with a new predicate
> that is explicitly written for the needs of simplify, which is not
> too conservative. The concern about increasing the set of output
> variables of an existentially quantified scope is now addressed
> only when simplify__goal_2 when processing scope goals, not in two
> places (redundantly) as before.
>
That last sentence doesn't parse well.
> Simplify the logic of simplify_info_maybe_clear_structs.
>
> Simplify the mechanism for initializing simplify_infos.
>
> Use more descriptive variables names in simplify__pred.
>
> Switch to four-space indentation to reduce the number of bad line
> breaks.
>
> compiler/pd_util.m:
> Conform to the new mechanism for initializing simplify_infos.
>
> compiler/goal_form.m:
> Delete the cannot_flush predicate, since it now has no users.
>
> compiler/common.m:
> Clean up some code. Break up an excessively large predicate, factor
> out some common code, and make comments conform to our conventions.
>
That looks fine. Do you know if fixing this problem has had any impact
on the performance of the compiler itself?
Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
post: mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the reviews
mailing list