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


_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to