On Saturday, 4 May 2013 at 18:33:04 UTC, Walter Bright wrote:
Runtime Detection

There are still a few cases that the compiler cannot statically detect. For these a runtime check is inserted, which compares the returned ref pointer to see if it lies within the stack frame of the exiting function, and if it does, halts the program. The cost will be a couple of CMP instructions and an LEA. These checks would be omitted if the -noboundscheck compiler switch was provided.

Thanks for taking the time to detail the solution, I was quite curious.

Runtime Detection and opt-out with "-noboundscheck" is a stroke of genius!

"couple of CMP instructions"
should be possible to reduce to only one with the "normal" unsigned range check idiom, no?

Looking forwards to hear more cool news. :)

Reply via email to