Adding loop primitives/optimizations (was Making Set/Dictionary etc. loops more robust)

stéphane ducasse ducasse at iam.unibe.ch
Tue Nov 30 20:04:38 UTC 2004


marcus made sure that the new compiler can produce old block style, so 
that we all do not lose 30% speed. And as soon as 3.8 is out the new 
compiler will be pushed into 3.9a

Stef



On 30 nov. 04, at 20:52, Joshua Scholar wrote:

>> From: "Jon Hylands" <jon at huv.com>
>> To: "Joshua Scholar" <jscholar at access4less.net>; "The general-purpose
> Squeak developers list" <squeak-dev at lists.squeakfoundation.org>
>> Sent: Tuesday, November 30, 2004 9:03 AM
>> Subject: Re: FIX: Making Set/Dictionary etc. loops more robust
>>
>
>> On Tue, 30 Nov 2004 08:30:52 -0800, "Joshua Scholar"
>> <jscholar at access4less.net> wrote:
>>
>>> You know, it occures to me to wonder why common looping constructs 
>>> near
> the
>>> bottom of hierachies haven't been turned into primitives.  Faster 
>>> looping
>>> constructs (a SmallInteger to: do:, Float to: by: do:, Interval to: 
>>> by:
> do:,
>>> Array do:, ByteArray do: etc.) would significantly speed up some 
>>> code.
>>
>> VisualAge has done this. They have a generic collection iterator
> primitive,
>> with which all the built-in collection enumeration methods are
> implemented.
>>
>> Later,
>> Jon
>>
>
> It would be fun to add primitives to speed up basic loops, but I'm 
> confused
> about if, when and where the new closure compiler is going to come on 
> line.
>
> This might seem weird coming from someone like me who (if you look at 
> my
> code) is obviously still learning the Smalltalk programming idioms...  
> That
> atRandom: fix had an extra variable in it and an extra test because I 
> knew
> about "whileTrue:" but not about "doWhileTrue:".
>
> Anyway, is the new compiler going to be part of Squeak 4? (the VI4 
> (virtual
> image) page on Swiki hopes so, but the Squeak 4 pages don't say it 
> will.
>
> Is the rest of VI4 going to be in Squeak 4?  Perhaps it's already in - 
> the
> page is dated two years ago.  Or was it abandoned?
>
> How do I test the closure compiler?  The page on Swiki says that the
> primitives went in to the VM back in 3.6.something, but someone 
> complained
> that the new compiler was too slow on 3.7, and wondered if the 
> primitives
> are in...
>
> So, are the primitives in 3.7, 3.8 & 3.9?
>
> So I'm not sure how to install the new compiler...  Also, for the sake 
> of
> speed testing, I'd like to be running the main classes recompiled with 
> the
> new compiler - and I'm not sure what's the right way to rebuild the 
> system
> if I did install the new compiler.  I remember reading that EToys 
> break if
> you recompile them with the new compiler - not that I'm using EToys.
>
> It makes no sense to me to write looping primitive designed to work on 
> a
> block structure that we are going to throw away.  And I do prefer 
> closures
> to what Squeak currently has.
>
> Also I'm not conversant on exactly what problems primitives entail - 
> my main
> question is what can't I do in a primitive for fear that a garbage
> collection will mess it up.
>
> Another point is that some looping constructs might be better inlined 
> than
> made into primitives.  I have NO idea how to do that.  Not that this 
> should
> stop us from having an interim fix that's better than nothing...
>
> Hey, that's a pretty good argument for making a loop primitive plug in 
> for
> the current blocks.  If the old system speeds up considerably because 
> of a
> plug-in that will create pressure to make sure the new system has the 
> same
> optimizations.
>
>




More information about the Squeak-dev mailing list