2016-03-21 8:26 GMT+01:00 Max Leske <[email protected]>: > That’s a problem with the latest VM. You need to use the stable VM until > Esteban has compiled a fixed version. > > Thanks, yes, stable works, I just wanted to let you know :-)
> Cheers, > Max > > > > On 21 Mar 2016, at 08:19, Nicolai Hess <[email protected]> wrote: > > > > 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 > > >
