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
