[m-rev.] for prelim review: fix generation of type_ctor_info for unboxed types bug
    Fergus Henderson 
    fjh at cs.mu.OZ.AU
       
    Tue Dec  2 14:54:21 AEDT 2003
    
    
  
On 01-Dec-2003, Peter Ross <pro at missioncriticalit.com> wrote:
> The comparison and unification function pointers stored in the
> type_ctor_info must be pointers to functions where all the arguments
> are boxed.  This wasn't occuring on the IL backend for types which
> are value types.
That looks fine.
> +	    % Note that gen_init_special_pred will by necessity add an extra
> +	    % level of indirection to calling the special preds.  However the
> +	    % backend compiler should be smart enough to ensure that this is
> +	    % inlined away.
Thinking about that, I realized that we could without too much effort
improve the code for the MLDS->C back-end versions of the generic unify/2
and compare/3 predicates in runtime/mercury_ho_call.c.  In particular,
instead of that switch(arity) with the corresponding call to
MR_fatal_error("... arity > 5 not supported") in the default case,
we could change the calling convention for the wrapper routines
for each type so that they get passed the type_info; the code to
pull the extra arguments out of the type_info would go in the wrapper
routines rather than in the generic unify/compare routine.
That would save one switch per generic unify/compare (and avoid a fixed limit).
We could also probably avoid the special treatment of variable-arity
type_infos, which would save another switch or if-then-else chain.
Once that was done, the code for generic unify/compare would essentially just
get the type_ctor_info, load the unify/compare field, and call it.
But that is all work for another day :)
-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
--------------------------------------------------------------------------
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