PharoVM-Spur32-win-latest.zip from 18.03.16:
Opening a fresh image works, but using the menu shows an error
Improper store into indexable object
[31mError: Improper store into indexable object
[0mBitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
[ :assoc |
| theta nextIndex nextColor nextWord distance step |
nextIndex := (assoc key * length) rounded.
nextColor := assoc value.
nextWord := nextColor pixelWordForDepth: 32.
distance := nextIndex - lastIndex.
distance = 0
ifTrue: [ distance := 1 ].
step := 1.0 / distance asFloat.
theta := 0.0.
lastIndex + 1 to: nextIndex do: [ :i |
theta := theta + step.
"The following is an open-coded version of:
color := nextColor alphaMixed: theta with: lastColor.
bits at: i put: (color scaledPixelValue32).
"
bits
at: i
put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
lastIndex := nextIndex.
lastColor := nextColor.
lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in
Block: [ :assoc | ...
SortedCollection(OrderedCollection)>>do:
GradientFillStyle>>computePixelRampOfSize:
[ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512
] in GradientFillStyle class>>initPixelRampCache in Block: [ :key |
(GradientFillStyle new colorRamp: key) co...etc...
BlockClosure>>cull:
[ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value: value.
^ self handleMiss: association ] ] in [ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
value |...
Dictionary>>associationAt:ifAbsent:
[ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
association |...
UndefinedObject>>ifNil:ifNotNil:
LRUCache(AbstractCache)>>critical:
LRUCache>>at:ifAbsentPut:
LRUCache(AbstractCache)>>at:
GradientFillStyle>>pixelRamp
BalloonEngine>>registerFill:
BalloonEngine>>registerFills:
BalloonEngine>>registerFill:and:
BalloonEngine>>drawRectangle:fill:borderWidth:borderColor:transform:
BalloonCanvas>>drawRectangle:color:borderWidth:borderColor:
BalloonCanvas>>fillRectangle:basicFillStyle:
FormCanvas>>balloonFillRectangle:fillStyle:
FormCanvas>>fillRectangle:basicFillStyle:
GradientFillStyle(FillStyle)>>fillRectangle:on:
FormCanvas(Canvas)>>fillRectangle:fillStyle:
FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle:
MenuMorph(Morph)>>drawOn:
MenuMorph>>drawOn:
FormCanvas(Canvas)>>draw:
[0m[31mError: Improper store into indexable object
[0mBitmap(Object)>>error:
Bitmap(Object)>>errorImproperStore
Bitmap(Object)>>at:put:
[ :assoc |
| theta nextIndex nextColor nextWord distance step |
nextIndex := (assoc key * length) rounded.
nextColor := assoc value.
nextWord := nextColor pixelWordForDepth: 32.
distance := nextIndex - lastIndex.
distance = 0
ifTrue: [ distance := 1 ].
step := 1.0 / distance asFloat.
theta := 0.0.
lastIndex + 1 to: nextIndex do: [ :i |
theta := theta + step.
"The following is an open-coded version of:
color := nextColor alphaMixed: theta with: lastColor.
bits at: i put: (color scaledPixelValue32).
"
bits
at: i
put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ].
lastIndex := nextIndex.
lastColor := nextColor.
lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in
Block: [ :assoc | ...
SortedCollection(OrderedCollection)>>do:
GradientFillStyle>>computePixelRampOfSize:
[ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512
] in GradientFillStyle class>>initPixelRampCache in Block: [ :key |
(GradientFillStyle new colorRamp: key) co...etc...
BlockClosure>>cull:
[ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value: value.
^ self handleMiss: association ] ] in [ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
value |...
Dictionary>>associationAt:ifAbsent:
[ | association |
association := keyIndex
associationAt: key
ifAbsent: [ | value |
value := block cull: key.
"Sadly we have to check the presence of key again
in case of the block execution already added the entry"
keyIndex
associationAt: key
ifAbsent: [ association := self newAssociationKey: key value:
value.
^ self handleMiss: association ] ].
^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ |
association |...
UndefinedObject>>ifNil:ifNotNil:
LRUCache(AbstractCache)>>critical:
LRUCache>>at:ifAbsentPut:
LRUCache(AbstractCache)>>at:
GradientFillStyle>>pixelRamp
GradientFillStyle>>=
PluggableButtonMorph(Morph)>>fillStyle:
PluggableButtonMorph>>extent:
Pharo3Theme(UITheme)>>newButtonIn:for:getState:action:arguments:getEnabled:label:help:
Pharo3Theme(UITheme)>>newTaskbarButtonIn:for:
SpecWindow(SystemWindow)>>taskbarButtonFor:
TaskbarTask>>taskbarButtonFor:
[ :t |
| button |
button := t taskbarButtonFor: self.
button ifNotNil: [ self addMorphBack: button ] ] in
TaskbarMorph>>updateTaskButtons in Block: [ :t | ...
OrderedCollection>>do:
TaskbarMorph>>updateTaskButtons
TaskbarMorph>>updateTasks
[ self updateBounds.
self updateTasks ] in TaskbarMorph>>ownerChanged in Block: [ self
updateBounds....
BlockClosure>>on:do:
TaskbarMorph>>ownerChanged
[0m