[mercury-users] Tagged datatypes and boxing

Ralph Becket rbeck at microsoft.com
Fri Sep 24 19:48:17 AEST 1999

> This is almost certainly due to the compiler's nifty deforestation
> optimization.  Probably you compiled with -O6 
> --intermodule-optimization and
> the compiler is inlining the call to io__read_byte and 
> optimizing away the
> memory allocation :-)

Got it in one!  However, I don't understand why this optimisation didn't
apply to my code, which does pretty much the same thing:

parent :- ..., child(X), ( X = foo(A), ... ; X = bar(B), ... ).

child :- ... eventually returns either foo(_) or bar(_).

> > The only thing I get is from the output of
> > report_stats/0 at the end of my main//0 which tells me I've 
> used a few
> > hundred kbytes
> There are a few places in the Mercury standard library and runtime
> where memory is allocated by C code rather than Mercury code;
> these places don't show up in the memory profiling, unfortunately.
> But io__read_byte is not one of these, so I suspect the
> memory allocation is coming from somewhere else.

Well, it allocates an array for the compression table.  I'll investigate


mercury-users mailing list
post:  mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-users-request at cs.mu.oz.au Message: subscribe

More information about the users mailing list