cyclic looping with [0 == object] whileFalse: [object := object nextObject].

Tom Phoenix rootbeer at
Mon Nov 5 18:40:01 UTC 2007

On 11/5/07, Rob Withers <reefedjib at> wrote:

>     | object count objects |
>     objects := OrderedCollection new: 1000000.
>     count := 0.
>     object _ nil.
>     [0 == object or: [count > 500000]] whileFalse: [
>         count := count + 1.
>         objects add: object.
>         object isMorph ifTrue: [object removeProperty: #undoGrabCommand].
>         object _ object nextObject].
>     objects

Now that I look at this code again, I see more. (What's the last line
supposed to be doing?) The method looks to be building a collection of
all (or up to half a million) objects in object memory, for no
apparent reason. As a side effect, or maybe its main effect, it
affects some Morphs.

Let's take care of the Morphs first. You probably want to process all
of them, not just many of them, so maybe something like this:

  Morph allSubInstancesDo: [:m |
    m removeProperty: #undoGrabCommand ].

If you really want a collection of all (or up to half a million)
objects from memory, that's easily done as well, built around
something like

  SystemNavigation default allObjectsDo: [:ob | "....whatever...." ].

But there's probably a better way to do what you want to do than to
build a collection of most of the items in the object memory.


--Tom Phoenix

More information about the Squeak-dev mailing list