error on latest pharo spur 32 windows vm
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
Thatâs a problem with the latest VM. You need to use the stable VM until Esteban has compiled a fixed version. Cheers, Max
On 21 Mar 2016, at 08:19, Nicolai Hess <nicolaihess@gmail.com> 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
2016-03-21 8:26 GMT+01:00 Max Leske <maxleske@gmail.com>:
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 <nicolaihess@gmail.com> 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
Hi, yes, vmLatest is a bit unstable right now, Nicolas Cellier is working on optimising integer operations and that causes some noise in the middle. It will be fixed soon but for the moment the âworkaroundâ is using stable vm⦠I suppose next couple of days it will be fixed. Esteban
On 21 Mar 2016, at 08:19, Nicolai Hess <nicolaihess@gmail.com> 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
participants (3)
-
Esteban Lorenzano -
Max Leske -
Nicolai Hess