On 05.08.2009, at 12:42, Marcus Denker wrote:
Hmm, if that so, then we would expect to see an interpreter speed degradation. But its not. :)
Yes, see the other mail. The reason is that the allocation of contexts in case of blocks happens now at #value, whereas it used to be just done at the definiton point (#blockCopy).
So nothing to worry about.
Eliot says: | So you can either | - wait for the stack VM or | - inline allInstancesDo: into allInstances or | - implement allInstacesDo: specially in ContextPart or | - implement a pair of primitives to answer allInstances and allObject atomically. | | This latter approach allows much more flexibility in implementing the garbage collector subsequently; for | example segmenting the heap and adding and freeing segments as required, which complicates the simple object | ordering provided by the single heap but has much better memory usage. I vote for inling for now... this fixes the problem. allInstances "Answer a collection of all current instances of the receiver." | all inst next | all := OrderedCollection new. inst := self someInstance. [inst == nil] whileFalse: [ next := inst nextInstance. inst == all ifFalse: [all add: inst]. inst := next]. ^ all asArray Marcus -- Marcus Denker - http://marcusdenker.de PLEIAD Lab - Computer Science Department (DCC) - University of Chile