limit check bug

Matthew Fluet fluet@cs.cornell.edu
Wed, 13 Feb 2002 17:16:24 -0500 (EST)


> 1. If bytesAllocated <= LIMIT_SLOP, use
> 
> 	frontier <= limit
> 
> 2. Otherwise
> 
> 	a. If the program doesn't use signals, use
> 
> 		bytesAllocated <= (limit + LIMIT_SLOP) - frontier
> 
> 	b If the program uses signals, use
> 
> 		frontier <= limit
> 		and bytesAllocated <= (limit + LIMIT_SLOP) - frontier
> 
> BTW, I will add a new field to gcState so that we have both limit and
> limit + LIMIT_SLOP available.

Looks fine to me; let me know if you want me to make the changes to the
x86-codgen.  The (b) case will be a little tricky, because you have to
build your own if statements in assembly.

BTW, the x86-codegen does everything unsigned, as witnessed by the
AE,A,B,BE condition codes (instead of L,LE,GE,G).