[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