[m-dev.] for review: changes to MLDS
Julien Fischer
juliensf at students.cs.mu.oz.au
Wed Jan 31 15:39:23 AEDT 2001
On Wed, 31 Jan 2001, Fergus Henderson wrote:
> On 31-Jan-2001, Julien Fischer <juliensf at students.cs.mu.oz.au> wrote:
> > ml_initial_cont(OutputVarLvals0, OutputVarTypes0, Cont) -->
> > - ml_qualify_var("cont", ContLval),
> > - ml_qualify_var("cont_env_ptr", ContEnvLval),
> > { ml_skip_dummy_argument_types(OutputVarTypes0, OutputVarLvals0,
> > OutputVarTypes, OutputVarLvals) },
> > list__map_foldl(ml_gen_type, OutputVarTypes, MLDS_OutputVarTypes),
> > + ml_gen_var_lval("cont", mlds__cont_type(MLDS_OutputVarTypes), ContLval),
> > + ml_gen_var_lval("cont_env_ptr", mlds__generic_env_ptr_type,
> > + ContEnvLval),
> > { Cont = success_cont(lval(ContLval), lval(ContEnvLval),
> > MLDS_OutputVarTypes, OutputVarLvals) }.
>
> I think that should be `mlds__cont_type([])' when the
> `--nondet-copy-out' option is not enabled.
This is already checked when ml_initial_cont is called (it's called twice,
once in ml_code_gen.m and again in ml_unify_gen.m) and if
`--nondet-copy-out' is not enabled OutputVarTypes0 = [].
We could put a comment here to the effect that ml_inital_cont expects
OutputVarTypes0 = [] if --nondet-copy-out is not enabled. Unless
you think that we should check this within ml_inital_cont as well.
> > --- compiler/mlds.m 2001/01/17 17:37:17 1.45
> > +++ compiler/mlds.m 2001/01/31 01:41:59
> > @@ -547,8 +547,15 @@
> >
> > ; mlds__pseudo_type_info_type
> >
> > - ; mlds__rtti_type(rtti_name).
> > + ; mlds__rtti_type(rtti_name)
> >
> > + % A type used internally by the ML code generator to
> > + % mark variables whose type is yet to be generated. This
> > + % occurs once in ml_code_util.m where env_ptr's are created,
> > + % but their type remains unknown until the ml_elim_nested.m
> > + % pass.
> > + ; mlds__unknown_type.
>
> The comment here is misleading, because it suggests that the ml_elim_nested.m
> will replace all occurrences of mlds__unknown_type with the right value.
> But that pass doesn't do that. Instead it leaves them as mlds__unknown_type.
This has me a bit confused. I thought the idea was that ml_code_util.m
generated the env_ptr's as dangling references and ml_elim_nested resolved
them. If that isn't the case then where are the types for the env_ptr's
being generated? The idea was that at some point the mlds__unknown_types
should be replaced by whatever types they're supposed to be (at least if
everything is working correctly).
Julien
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list