[Newbies] [] whileTrue: [] implementation

Bert Freudenberg bert at freudenbergs.de
Tue Oct 4 17:40:20 UTC 2011


On 04.10.2011, at 19:16, Erlis Vidal wrote:

> Thanks Bert!
> 
> The byte code has the answer, I thought that the byte code will map the source code but I see that's not the case, probably to ensure some optimizations.. or to do that "jump" I don't know how to do that in smalltalk

For ifTrue: it is purely an optimization, yes. It would work fine by actually sending that message. It would just be slower.

In the case of whileTrue:, however, it's not just an optimization. The only way to do loops otherwise would be by recursion. But the Squeak VM does not do tail-call elimination, so it would run out of space pretty soon. Generating the loop as a byte code back jump is essential for the system to work.

- Bert -




More information about the Beginners mailing list