Adding loop primitives/optimizations (was Making Set/Dictionary
etc. loops more robust)
Tim Rowledge
tim at sumeru.stanford.edu
Wed Dec 1 00:28:31 UTC 2004
Jon Hylands <jon at huv.com> wrote:
> On Tue, 30 Nov 2004 12:32:36 -0800, Tim Rowledge <tim at sumeru.stanford.edu>
> wrote:
>
> > Can anyone explain the VA primitive mentioned?
>
> BlockContext >> #apply: aCollection from: start to: end
> "Evaluate the receiver for each variable slot of aCollection from
> start to end. Answer aCollection."
>
> <primitive: VMprBlockContextApplyFromTo>
> start to: end do: [:i | self value: (aCollection basicAt: i)].
> ^aCollection
Ah, I see. So I guess that OrderedCollection does it in two slices if
the start/stop have wrapped around in stacklike usage. Fair enough but
unless there is some hidden trickery it will only save the time in the
to do: and basicAt: which isn't a lot. Hmm, I suppose one could use the
prim to set some lock on the collection while one is iterating.
Problematic if the block code modifies the collection.
tim
--
Tim Rowledge, tim at sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Strange OpCodes: FSM: Fold, Spindle and Mutilate
More information about the Squeak-dev
mailing list
|