[m-rev.] for review: pseudo-typeinfo RTTI in Mercury

Peter Ross pro at missioncriticalit.com
Thu Apr 11 17:13:35 AEST 2002


zs wrote:
> On 10-Apr-2002, Peter Ross <pro at missioncriticalit.com> wrote:
> > > compiler/mlds.m:
> > > Since the MLDS now refers to type_infos, add their type
> > > (mlds__type_info_type) to the list of types the MLDS knows about.
> > >
> > Is there a reason why you can't just use mlds__rtti_type?  I guess you
do it
> > this way because mlds__pseudo_type_info_type appears to be defined
specially,
> > however one can also define a type
mlds__rtti_type(pseudo_type_info(...)), so
> > I am not sure what the correct thing to do is here.
>
> I am not sufficiently familiar with the design decisions behind the
existence
> of mlds__pseudo_type_info_type to be sure either. However, the design as
it is
> works, and should not be hard to change the future if necessary.
>
> > > + % XXX should be checked by Tyson
> > > +mlds_type_to_ilds_type(_, mlds__type_info_type) = il_generic_type.
> > > +
> > The only other option is for the type to be a il__object_array_type.
> > However since plain type infos with an arity of zero are represented by
a
> > System.Object (I think) I guess this will need to be il_generic_type.
>
> OK.
>
> > > +:- func pseudo_type_info_is_exported(rtti_pseudo_type_info) = bool.
> > > +
> > > +pseudo_type_info_is_exported(plain_arity_zero_pseudo_type_info(_)) =
yes.
> > > +pseudo_type_info_is_exported(plain_pseudo_type_info(_, _)) = no.
> > > +pseudo_type_info_is_exported(var_arity_pseudo_type_info(_, _)) = no.
> > >  pseudo_type_info_is_exported(type_var(_)) = no.
> > > -pseudo_type_info_is_exported(type_ctor_info(_)) = yes.
> > > -pseudo_type_info_is_exported(type_info(_, _)) = no.
> > > -pseudo_type_info_is_exported(higher_order_type_info(_, _, _)) = no.
> >
> > Why are only the zero arity types exported?
> > The question is purely for improving my understanding of what is going
on.
>
> The zero arity versions are typectorinfos, which are visible across
modules.
> All other typeinfos and pseudo-typeinfos are constructed by each module,
on
> demand. Since you can't know whether other modules define e.g. a
> pseudo-typeinfo with the same structure (and hence, in our naming scheme,
> the same name), they may be static in each module.
>
> > The indentation here is a bit screwy, please fix if it is not an
> > artifact from diff.
>
> It is an artifact.
>
> > > -#define MR_TypeCtorInfo_struct  MR_TypeCtorInfo_Struct
> > > -#define MR_NewTypeCtorInfo_struct  MR_TypeCtorInfo_Struct
> > > +#ifndef MR_NO_BACKWARDS_COMPAT
> > >
> > >  /*
> > >  ** bool, TRUE and FALSE appear in the generated code.
> >
> > The removal of the above two #defines isn't mentioned in the log
message.
>
> They were needed for bootstrapping a change a few months ago; but they are
now
> obsolete.
>
BTW, this is fine to check in.

--------------------------------------------------------------------------
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