[m-rev.] for review: exception analysis of generic calls

Julien Fischer juliensf at cs.mu.OZ.AU
Thu Aug 4 13:20:15 AEST 2005


On Thu, 4 Aug 2005, Ian MacLarty wrote:

> On Mon, 25 Jul 2005, Julien Fischer wrote:
>
> >
> > For review by anyone.
> >
> > Estimated hours taken: 7
> > Branches: main
> >
> > Add support for exception analysis through some generic_call sites.
> > At the moment this is restricted to higher-order calls, although
> > we may eventually extend it to method calls as well.
> >
> ...
> > Index: compiler/exception_analysis.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/compiler/exception_analysis.m,v
> > retrieving revision 1.9
> > diff -u -r1.9 exception_analysis.m
> > --- compiler/exception_analysis.m	14 Apr 2005 07:47:31 -0000	1.9
> > +++ compiler/exception_analysis.m	25 Jul 2005 07:59:58 -0000
> > @@ -323,14 +326,76 @@
> >          check_nonrecursive_call(ModuleInfo, VarTypes, CallPPId, CallArgs,
> >              !Result)
> >      ).
> > -check_goal_for_exceptions_2(_, _, _, generic_call(_,_,_,_), !Result) :-
> > -    !:Result = !.Result ^ status := may_throw(user_exception).
> > -check_goal_for_exceptions_2(SCC, ModuleInfo, VarTypes, not(Goal), !Result) :-
> > +check_goal_for_exceptions_2(_, ModuleInfo, VarTypes, Goal, GoalInfo,
> > +        !Result) :-
> > +    Goal = generic_call(Details, Args, _ArgModes, _),
> > +    (
> > +        Details = higher_order(Var, _, _,  _),
> > +        ClosureValueMap = goal_info_get_ho_values(GoalInfo),
> > +        ( ClosureValues = ClosureValueMap ^ elem(Var) ->
> > +                (
> > +                    get_conditional_closures(ModuleInfo, ClosureValues,
> > +                        Conditional)
> > +                ->
> > +                    (
> > +                        Conditional = []
> > +                        % The values of the higher-order variable are
>
> Should that be "The POSSIBLE values of ..."?
>
Fixed.

> > +                        % all procedures that are known not to throw
> > +                        % exceptions.
> > @@ -380,6 +448,37 @@
> >        then  true
> >        else  check_goals_for_exceptions(SCC, ModuleInfo, VarTypes, Goals,
> >                  !Result)
> > +    ).
> > +
> > +%----------------------------------------------------------------------------%
> > +%
> > +% Further code to handle higher-order variables
> > +%
> > +
> > +    % Given a list of procedure ids extract those whose exception status
> > +    % has been set to 'conditional'.  Fails if one of the procedures in
> > +    % the set has an exception status that indicate it may throw an
>
> s/indicate/indicates/
>
Fixed.

Thanks for that.

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