Top post: I never once thought about that, and it makes me smile. 

On Dec 30, 2012, at 7:40 AM, Bert Freudenberg <[email protected]> wrote:

> On 2012-12-27, at 01:32, Sebastian Nozzi <[email protected]> wrote:
> 
>> Why do ST methods return "self" if nothing is explicitly returned?
> 
> 
> One very simple reason has not been stated yet: In the Virtual Machine, 
> returning self is simpler and more efficient than returning any other object.
> 
> Smalltalk byte codes implement a stack machine. That means arguments are 
> passed by pushing them onto a stack, rather than putting them into registers. 
> In addition to the arguments as listed in the method signature, a hidden 
> argument is always passed, which is the receiver of the message. So even for 
> unary methods (those without arguments) the receiver is pushed onto the 
> stack, then the method is executed, and the receiver value on the stack is 
> how the method knows "self". By returning "self" if no explicit return 
> statement is given, the VM can just leave the "self" oop on the stack, which 
> saves at least one memory store operation. So from an efficiency and 
> simplicity standpoint, returning "self" is the most elegant thing to do.
> 
> - Bert -
> 
> 
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
_______________________________________________
Beginners mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to