[Newbie] Morph class>>new

Stephane Ducasse ducasse at iam.unibe.ch
Tue Apr 15 13:13:43 UTC 2003


Hi cees

On Tuesday, April 15, 2003, at 02:55 PM, Cees de Groot wrote:

> On Tue, 2003-04-15 at 10:53, Christian Hofer wrote:
>> would twice initialize the Morph. This would not happen if Morph used:
>> self basicNew initialize
>>
>> Is that wrong?
>>
> I've been wondering about this myself. Everywhere I look, I see 'super
> new initialize', while I think that 'self basicNew initialize' really 
> is
> a cleaner way. In fact, I think
>
> Object>>new
> 	^self basicNew initialize
>
> should be in the image. The initialize methods themselves usually know
> best whether a 'super initialize' needs to be done. I use 'self 
> basicNew
> initialize' exclusively and I'm quite happy with it, but the fact that 
> I
> see so much code with 'super new initialize' makes me wonder - is there
> something wrong with 'self basicNew initialize'?

Yes there is. Remember the discussion in the VW mailing list, I 
recently talked with eliot that was really in favor of having new 
calling initialize and he told that their main problem is their clients 
so they will certainly not do it but not for the
reasons of speed because he said that with their jit it would cost less 
and 1%.

In CLOS 8 years after Smalltalk they got it right.
	Make (new) invokes allocate (basicNew) then initialize

CLOS was doing that everywhere so the Behavior>>new was invoking 
initialize
Now in Squeak we do not have to do it at the metaclass level, so we just
having
Object class>>new
			^ super new initialize

is enough. When andreas was visiting us we play with that and he was 
surprised to see that this was not costly around 3% on macrobenchmark 
even if one was at 12% but we could optimize that by defining the same 
on array new: for example.

Some people were also afraid that they could lost control and pay one 
extra send.
First you do not lose control as if you want a non initialized method 
you simply call
allocate (=basicNew).

Now I should sit down, understand how the profiler really work and 
prove that this is worth (at least all the trees for the book and 
bandwidth we use)

Stef


> <signature.asc>
>
Prof. Dr. Stéphane DUCASSE
http://www.iam.unibe.ch/~ducasse/
  "if you knew today was your last day on earth, what would you do 
different? ...  especially if,
  by doing something different, today might not be your last day on 
earth" Calvin&Hobbes

"The best way to predict the future is to invent it..." Alan Kay.

Open Source Smalltalks: http://www.squeak.org, 
http://www.gnu.org/software/smalltalk/smalltalk.html
Free books for Universities at 
http://www.esug.org/sponsoring/promotionProgram.html
Free Online Book at 
http://www.iam.unibe.ch/~ducasse/WebPages/FreeBooks.html



More information about the Squeak-dev mailing list