another trailing problem -- nondet if-then-elses

Fergus Henderson fjh at cs.mu.oz.au
Mon Aug 25 20:22:42 AEST 1997


Another problem that we missed: the issue of MR_ticket_counter
not being restored correctly also applies in the case of nondet
if-then-elses.  For nondet if-then-elses, if the condition succeeds,
then we prune away a choicepoint which is not necessarily the topmost
choicepoint.  This makes it very difficult for any scheme based on

	#define MR_discard_ticket() (MR_ticket_counter--)

to work.

One possibility would be to change code generation for if-then-elses
so that rather than pruning away the choicepoint by restoring the
previous failure continuation, we could instead change the failure
continuation to point to code that just does an MR_discard_ticket() and
then branches to the previous failure continuation.  But doing that
might be a bit complicated... I haven't had a detailed look at it yet.

-- 
Fergus Henderson <fjh at cs.mu.oz.au>   |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>   |  of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3         |     -- the last words of T. S. Garp.



More information about the developers mailing list