[m-dev.] for review: implementation of --no-allow-hijacks
Tyson Dowd
trd at cs.mu.OZ.AU
Wed Jul 29 15:38:07 AEST 1998
On 27-Jul-1998, Zoltan Somogyi <zs at cs.mu.OZ.AU> wrote:
>
> For review by Tyson, since he is the intended beneficiary.
>
> Estimated hours taken: 30
>
> Extend the new failure handling method to optionally preserve an invariant
> required by accurate gc: always being able to tell with respect to what MR_sp
> or MR_curfr to interpret the stackvars and framevars referred to by the label
> whose address is the redoip slot of a nondet stack frame. This basically
> requires limitations on the hijacking of redoip/redofr slot pairs.
>
> Index: compiler/code_info.m
> ===================================================================
> RCS file: /home/mercury1/repository/mercury/compiler/code_info.m,v
> retrieving revision 1.225
> diff -u -u -r1.225 code_info.m
> --- code_info.m 1998/07/21 14:02:19 1.225
> +++ code_info.m 1998/07/26 07:39:11
> + { CurfrMaxfr = must_be_equal },
> + { ResumeKnown = resume_point_known }
> + ->
> + { HijackInfo = disj_quarter_hijack },
> + { Code = node([
> + comment("disj quarter hijack")
> + - ""
> + ]) }
> + ;
> + { CurfrMaxfr = must_be_equal }
> + ->
> + % { ResumeKnown = resume_point_unknown },
If this is this commented for a reason, it should be stated.
> + code_info__acquire_temp_slot(lval(redoip(lval(curfr))),
> + RedoipSlot),
> + { HijackInfo = disj_half_hijack(RedoipSlot) },
> + { Code = node([
> + assign(RedoipSlot, lval(redoip(lval(curfr))))
> + - "prepare for half disj hijack"
> + ]) }
> + ;
> + % { CurfrMaxfr = may_be_different },
Same here.
Other than this, the change looks fine. Thanks a heap!
Tyson.
More information about the developers
mailing list