Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
May 2012
- 115 participants
- 1500 messages
Re: [Pharo-project] loading athens - a user perspective
by Serge Stinckwich
On Fri, May 25, 2012 at 4:57 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> Hi,
>
> Here is how to install Athens (I also added this comment to the ConfigurationOfAthens):
>
>
> 1. Install Cairo on your machine
> For example, for Mac, you open the terminal and run:
> sudo port install -f cairo +universal
>
> More information can be found here:
> http://cairographics.org/download/
>
>
> 2. Download the NativeBoost enabled Cog VM from:
> https://ci.lille.inria.fr/pharo/view/NativeBoost/
>
>
> 3. Get a Pharo image and run:
> Gofer new
> Â Â Â Â squeaksource: 'Athens';
> Â Â Â Â package: 'ConfigurationOfAthens';
> Â Â Â Â load.
> (Smalltalk at: #ConfigurationOfAthens) loadDevelopment
>
>
> 4. Play with it. For example:
> VGTigerDemo runDemo
I install Cairo with brew on mac os x:
brew install cairo
And I got the following stack trace:
25 May 2012 5:37:03 pm
VM: Mac OS - intel - 1074 - NBCoInterpreter
NativeBoost-CogPlugin-IgorStasenko.9 uuid:
801decd2-0b42-fa49-bcea-d7564d516a1b May 1 2012,
StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.158 uuid:
82eded98-68af-4c80-a472-4f6de293adcf May 1 2012,
https://git.gitorious.org/cogvm/blessed.git Commit:
6aa3fd0f1188078d3167dec1a53031a61b97b688 Date: Tue May 1 20:28:14 2012
+0200 By: Esteban Lorenzano <estebanlm(a)gmail.com>
Image: Pharo1.4a [Latest update: #14418]
NBFFICallout(Object)>>error:
Receiver: a NBFFICallout
Arguments and temporary variables:
aString: 'function unavailable'
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
[:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
aModuleNameOrHandle.
fnAddress
ifNil: [self error: 'function unavailable'].
self mayCallback
ifTrue: [asm push: fnAddress asUImm32;
mov: NativeBoost callgateFunctionAddress asUImm32 to: EAX;
call: EAX]
ifFalse: [asm mov: fnAddress asUImm32 to: EAX;
call: EAX]] in NBFFICallout>>generateCall:module:
Receiver: a NBFFICallout
Arguments and temporary variables:
aModuleNameOrHandle: a NBFFICallout
fnAddress: '/opt/local/lib/libcairo.2.dylib'
gen: #(nil)
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
BlockClosure>>valueWithPossibleArgs:
Receiver: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
aModuleNam...etc...
Arguments and temporary variables:
anArray: an Array(a NBFFICallout a NBInterpreterProxy an AJx86Assembler)
Receiver's instance variables:
outerContext: NBFFICallout>>generateCall:module:
startpc: 91
numArgs: 1
[aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]] in [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: an AJCdeclCallInfo
call: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName m...etc...
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
BlockClosure>>ensure:
Receiver: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [...etc...
Arguments and temporary variables:
aBlock: [level := level - 1.
self
addInstruction: (AJInstructionDecoration n...etc...
complete: nil
returnValue: nil
Receiver's instance variables:
outerContext: [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
sel...etc...
startpc: 151
numArgs: 0
AJx86Assembler>>decorateWith:while:
Receiver: an AJx86Assembler
Arguments and temporary variables:
annotation: 'FFI: performing a call'
aBlock: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self o...etc...
Receiver's instance variables:
instructions: <<error during printing>>
[:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: an AJCdeclCallInfo
call: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName m...etc...
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
AJx86Assembler>>performingCall:in:
Receiver: an AJx86Assembler
Arguments and temporary variables:
ci: an AJCdeclCallInfo
aBlock: [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self push...etc...
Receiver's instance variables:
instructions: <<error during printing>>
NBFFICallout>>foreignCall:
Receiver: a NBFFICallout
Arguments and temporary variables:
aBlock: [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self push...etc...
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generateInstructions:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec ...etc...
instructions: nil
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generate:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec ...etc...
generatedCode: nil
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generateCall:module:
Receiver: a NBFFICallout
Arguments and temporary variables:
functionSpec: #(#AthensCairoSurface #cairo_image_surface_create
#(#int #aFormat...etc...
aModuleNameOrHandle: '/opt/local/lib/libcairo.2.dylib'
fnAddress: #(nil)
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
[:gen | gen sender: sender;
callType: self nbCallingConvention;
generateCall: fnSpec module: self nbLibraryNameOrHandle] in
AthensCairoSurface class(Object)>>nbCall:
Receiver: AthensCairoSurface
Arguments and temporary variables:
fnSpec: a NBFFICallout
sender: #(#AthensCairoSurface #cairo_image_surface_create #(#int
#aFormat #, #i...etc...
gen: AthensCairoSurface class>>primImage:width:height:
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
Receiver: NBFFICallout
Arguments and temporary variables:
aBlock: [:gen | gen sender: sender;
callType: self nbCallingConvention;
g...etc...
retryCtx: AthensCairoSurface class>>primImage:width:height:
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
code: nil
newMethod: nil
args: nil
i: nil
iLimiT: nil
Receiver's instance variables:
superclass: NBNativeCodeGen
methodDict: a
MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType:
"a...etc...
format: 148
instanceVariables: #('fnSpec' 'requestor' 'methodArgs'
'coercionMayFail' 'callI...etc...
organization: ('type aliases' aliasForType:)
('accessing' anonSpec: callType: c...etc...
subclasses: {NBNativeFunctionGen}
name: #NBFFICallout
classPool: a Dictionary(#CustomErrorCodes->nil
#CustomErrorMessages->nil #TypeA...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core'
traitComposition: {}
localSelectors: nil
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
Receiver: NBFFICallout
Arguments and temporary variables:
aContext: AthensCairoSurface class>>primImage:width:height:
aBlock: [:gen | gen sender: sender;
callType: self nbCallingConvention;
g...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
lastError: 502
Receiver's instance variables:
superclass: NBNativeCodeGen
methodDict: a
MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType:
"a...etc...
format: 148
instanceVariables: #('fnSpec' 'requestor' 'methodArgs'
'coercionMayFail' 'callI...etc...
organization: ('type aliases' aliasForType:)
('accessing' anonSpec: callType: c...etc...
subclasses: {NBNativeFunctionGen}
name: #NBFFICallout
classPool: a Dictionary(#CustomErrorCodes->nil
#CustomErrorMessages->nil #TypeA...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core'
traitComposition: {}
localSelectors: nil
AthensCairoSurface class(Object)>>nbCall:
Receiver: AthensCairoSurface
Arguments and temporary variables:
fnSpec: #(#AthensCairoSurface #cairo_image_surface_create #(#int
#aFormat #, #i...etc...
sender: AthensCairoSurface class>>primImage:width:height:
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
AthensCairoSurface class>>primImage:width:height:
Receiver: AthensCairoSurface
Arguments and temporary variables:
aFormat: 0
aWidth: 800
aHeight: 800
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
AthensCairoSurface class>>extent:format:
Receiver: AthensCairoSurface
Arguments and temporary variables:
anExtent: (800@800)
aFormat: 0
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
AthensCairoSurface class>>extent:
Receiver: AthensCairoSurface
Arguments and temporary variables:
anExtent: (800@800)
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
VGTigerDemo>>initialize
Receiver: a VGTigerDemo
Arguments and temporary variables:
Receiver's instance variables:
surface: nil
VGTigerDemo class(Behavior)>>new
Receiver: VGTigerDemo
Arguments and temporary variables:
Receiver's instance variables:
superclass: Object
methodDict: a
MethodDictionary(#convertPathData2->(VGTigerDemo>>#convertPathDat...etc...
format: 132
instanceVariables: #('surface')
organization: ('as yet unclassified' convertPathData2 initialize runDemo)
subclasses: nil
name: #VGTigerDemo
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Athens-Examples'
traitComposition: {}
localSelectors: nil
VGTigerDemo class>>runDemo
Receiver: VGTigerDemo
Arguments and temporary variables:
Receiver's instance variables:
superclass: Object
methodDict: a
MethodDictionary(#convertPathData2->(VGTigerDemo>>#convertPathDat...etc...
format: 132
instanceVariables: #('surface')
organization: ('as yet unclassified' convertPathData2 initialize runDemo)
subclasses: nil
name: #VGTigerDemo
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Athens-Examples'
traitComposition: {}
localSelectors: nil
UndefinedObject>>DoIt
Receiver: nil
Arguments and temporary variables:
Receiver's instance variables:
nil
Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream
aContext: nil
receiver: nil
aRequestor: a TextMorphForEditView(741605376)
failBlock: [self morph flash.
^ nil]
logFlag: true
methodNode: DoIt
^ VGTigerDemo runDemo
method: (UndefinedObject>>#DoIt "a CompiledMethod(926679040)")
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream
requestor: a TextMorphForEditView(741605376)
class: UndefinedObject
category: nil
context: nil
parser: a Parser
[rcvr class evaluatorClass new
evaluate: self selectionForDoitAsStream
in: ctxt
to: rcvr
notifying: self morph
ifFail: [self morph flash.
^ nil]
logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
rcvr: nil
ctxt: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
BlockClosure>>on:do:
Receiver: [rcvr class evaluatorClass new
evaluate: self selectionForDoitAsStream
in: ctxt
to: ...etc...
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [:ex | ex resume: true]
handlerActive: true
Receiver's instance variables:
outerContext: SmalltalkEditor>>evaluateSelectionAndDo:
startpc: 110
numArgs: 0
SmalltalkEditor>>evaluateSelectionAndDo:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aBlock: [:result | result]
result: nil
rcvr: nil
ctxt: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor>>evaluateSelection
Receiver: a SmalltalkEditor
Arguments and temporary variables:
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor>>doIt
Receiver: a SmalltalkEditor
Arguments and temporary variables:
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor>>doIt:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
aBoolean: false
return: [:val | ^ val]
asciiValue: 101
actions: #(#noop: #cursorHome: #noop: #noop: #cursorEnd: #noop:
#noop: #noop: #...etc...
action: #doIt:
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>dispatchCommandOn:return:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
return: [:val | ^ val]
asciiValue: 100
honorCommandKeys: true
char: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>dispatchOn:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
char: nil
return: [:val | ^ val]
keyEvents: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
[self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>handleKeystrokeAction:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aBlock: [self dispatchOn: aKeyboardEvent]
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
anAction: [self dispatchOn: aKeyboardEvent]
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>keystroke:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
[editor keystroke: evt] in [| action |
evt keyValue = 13
ifTrue: [action := self crAction.
action
ifNotNil: [evt hand newKeyboardFocus: nil.
^ action value]].
self
handleInteraction: [editor keystroke: evt].
self updateFromParagraph.
super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(741605376)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: (0@0) corner: (473@18)
owner: a TransformMorph(38535168)
submorphs: #()
fullBounds: (0@0) corner: (473@18)
color: Color black
extension: a MorphExtension (824180736) [other: (blinkStart ->
1085881) (myDep...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'VGTigerDemo runDemo'
wrapFlag: true
paragraph: a Paragraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: (0@0) corner: (0@0)
editView: a PluggableTextMorph(838860800)
acceptOnCR: false
autoAccept: false
acceptOnFocusChange: false
selectionColor: nil
TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(741605376)
Arguments and temporary variables:
interactionBlock: [editor keystroke: evt]
oldEditor: a SmalltalkEditor
oldParagraph: a Paragraph
oldText: a Text for 'VGTigerDemo runDemo'
Receiver's instance variables:
bounds: (0@0) corner: (473@18)
owner: a TransformMorph(38535168)
submorphs: #()
fullBounds: (0@0) corner: (473@18)
color: Color black
extension: a MorphExtension (824180736) [other: (blinkStart ->
1085881) (myDep...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'VGTigerDemo runDemo'
wrapFlag: true
paragraph: a Paragraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: (0@0) corner: (0@0)
editView: a PluggableTextMorph(838860800)
acceptOnCR: false
autoAccept: false
acceptOnFocusChange: false
selectionColor: nil
--- The full stack ---
NBFFICallout(Object)>>error:
[:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
aModuleNameOrHandle.
fnAddress
ifNil: [self error: 'function unavailable'].
self mayCallback
ifTrue: [asm push: fnAddress asUImm32;
mov: NativeBoost callgateFunctionAddress asUImm32 to: EAX;
call: EAX]
ifFalse: [asm mov: fnAddress asUImm32 to: EAX;
call: EAX]] in NBFFICallout>>generateCall:module:
BlockClosure>>valueWithPossibleArgs:
[aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]] in [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
BlockClosure>>ensure:
AJx86Assembler>>decorateWith:while:
[:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
AJx86Assembler>>performingCall:in:
NBFFICallout>>foreignCall:
NBFFICallout>>generateInstructions:
NBFFICallout>>generate:
NBFFICallout>>generateCall:module:
[:gen | gen sender: sender;
callType: self nbCallingConvention;
generateCall: fnSpec module: self nbLibraryNameOrHandle] in
AthensCairoSurface class(Object)>>nbCall:
NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
AthensCairoSurface class(Object)>>nbCall:
AthensCairoSurface class>>primImage:width:height:
AthensCairoSurface class>>extent:format:
AthensCairoSurface class>>extent:
VGTigerDemo>>initialize
VGTigerDemo class(Behavior)>>new
VGTigerDemo class>>runDemo
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[rcvr class evaluatorClass new
evaluate: self selectionForDoitAsStream
in: ctxt
to: rcvr
notifying: self morph
ifFail: [self morph flash.
^ nil]
logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
BlockClosure>>on:do:
SmalltalkEditor>>evaluateSelectionAndDo:
SmalltalkEditor>>evaluateSelection
SmalltalkEditor>>doIt
SmalltalkEditor>>doIt:
SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return:
SmalltalkEditor(TextEditor)>>dispatchCommandOn:return:
SmalltalkEditor(TextEditor)>>dispatchOn:
[self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke:
SmalltalkEditor(TextEditor)>>handleKeystrokeAction:
SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent:
SmalltalkEditor(TextEditor)>>keystroke:
[editor keystroke: evt] in [| action |
evt keyValue = 13
ifTrue: [action := self crAction.
action
ifNotNil: [evt hand newKeyboardFocus: nil.
^ action value]].
self
handleInteraction: [editor keystroke: evt].
self updateFromParagraph.
super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
TextMorphForEditView>>handleInteraction:
[| action |
evt keyValue = 13
ifTrue: [action := self crAction.
action
ifNotNil: [evt hand newKeyboardFocus: nil.
^ action value]].
self
handleInteraction: [editor keystroke: evt].
self updateFromParagraph.
super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolRegistry>>codeCompletionAround:textMorph:keyStroke:
SmalltalkEditor>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
handleFocusEvent: (anEvent
transformedBy: (focusHolder transformedFrom: self))] in
HandMorph>>sendFocusEvent:to:clear:
[aBlock value] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[:h |
ActiveHand := h.
h processEvents.
ActiveHand := nil] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[[World doOneCycle.
Processor yield.
false] whileFalse.
nil] in MorphicUIManager>>spawnNewProcess
[self value.
Processor terminateActive] in BlockClosure>>newProcess
--
Serge Stinckwich
UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
Every DSL ends up being Smalltalk
http://doesnotunderstand.org/
May 25, 2012
Re: [Pharo-project] Pressed Morph feedback on PharoTheme
by Stéphane Ducasse
Thierry
Can you produce a change set with your change like that we can try?
And open a bug entry.
I'm a bit confused
Stef
> Le 24/05/2012 09:19, Goubier Thierry a écrit :
>> Another bug shown with my change is, if you start to scroll with the
>> slider, it depresses correctly, but, as soon as you move outside the
>> bounds of the scrollbar, even while pressing the left mouse button, then
>> the slider goes back to the "not pressed" state while you are still
>> scrolling up or down.
>
> To correct that bug, a small change in ScrollBar>>mouseLeaveThumb:
>
> event redButtonPressed
> ifFalse: [
> slider
> fillStyle: self normalThumbFillStyle;
> borderStyle: self normalThumbBorderStyle;
> changed ].
> (self containsPoint: event position)
> ifTrue: [
> upButton
> fillStyle: self mouseOverPagingAreaButtonFillStyle;
> borderStyle: self mouseOverPagingAreaButtonBorderStyle ]
> ifFalse: [
> upButton
> fillStyle: self normalButtonFillStyle;
> borderStyle: self normalButtonBorderStyle ].
> (self containsPoint: event position)
> ifTrue: [
> downButton
> fillStyle: self mouseOverPagingAreaButtonFillStyle;
> borderStyle: self mouseOverPagingAreaButtonBorderStyle ]
> ifFalse: [
> downButton
> fillStyle: self normalButtonFillStyle;
> borderStyle: self normalButtonBorderStyle ]
>
>
>
> Thierry
> --
> Thierry Goubier
> CEA list
> Laboratoire des Fondations des Systèmes Temps Réel Embarqués
> 91191 Gif sur Yvette Cedex
> France
> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
>
May 25, 2012
Re: [Pharo-project] Squeak in the web browser
by Stefan Krecher
Hi,
2012/5/11 Pavel Krivanek <pavel.krivanek(a)gmail.com>:
> I was successful in running Squeak virtual machine on JSLinux. JSLinux
> is a x86 PC emulator written in JavaScript and running in a web
> browser. It required to compile the VM for uClibc and do some little
> modifications. So Squeak can log the next crazy platform where it is
> able to run :-)
>
> Unfortunately it has no display support and JSLinux license doesn't
> allow to make the work public but at least you may look at a short
> video:
>
> http://www.youtube.com/watch?v=mclkVePwNqE
this is so cool :-)
It would be great if you could describe, how to reproduce this!
regards,
Stefan
May 25, 2012
[Pharo-project] loading athens - a user perspective
by Tudor Girba
Hi,
Here is how to install Athens (I also added this comment to the ConfigurationOfAthens):
1. Install Cairo on your machine
For example, for Mac, you open the terminal and run:
sudo port install -f cairo +universal
More information can be found here:
http://cairographics.org/download/
2. Download the NativeBoost enabled Cog VM from:
https://ci.lille.inria.fr/pharo/view/NativeBoost/
3. Get a Pharo image and run:
Gofer new
squeaksource: 'Athens';
package: 'ConfigurationOfAthens';
load.
(Smalltalk at: #ConfigurationOfAthens) loadDevelopment
4. Play with it. For example:
VGTigerDemo runDemo
Thanks Igor!
Cheers,
Doru
--
www.tudorgirba.com
"Live like you mean it."
May 25, 2012
Re: [Pharo-project] VM problem?
by Benjamin
It happened to me a couple of time when editing methods in the senders/implementors.
I never found out why
Ben
On May 25, 2012, at 10:12 AM, Tudor Girba wrote:
> The problem is also reproducible with the latest Nautilus 1.4 image.
>
> Doru
>
>
> On 25 May 2012, at 09:57, Fabrizio Perin wrote:
>
>> Hi,
>> I'm using last Moose build on top of CogVM 2550 and each time I click on a method an error pops up (see the attachment). The same problem I have it with older builds of Moose but I don't have any problem if I open the same image with Cog VM 2540 or CogVM from the Pharo web site.
>>
>> I'm on Mac os 10.7.4 and the image is:
>>
>> Pharo1.4
>> Latest update: #14438
>>
>> Cheers,
>> Fabrizio
>>
>> <MooseAnd2550Error.tiff>
>
> --
> www.tudorgirba.com
>
> "Every successful trip needs a suitable vehicle."
>
>
>
>
>
May 25, 2012
[Pharo-project] iOS VM III - new error...
by phil@highoctane.be
Ok, got the latest blessed/ from git this morning. Saw that there was a new
.image and .changes
After having downloaded (Xcode didn't asked but went on...) the 10.7 libs
update, I compiled and ran the VM on the iPad2.
New error in the output log in Xcode:
2012-05-25 10:09:28.807 iStackVM[4364:707] Application windows are expected
to have a root view controller at the end of application launch
errno 12
startOfmmapForANONMemory failed: Cannot allocate memory
Mmmmh, this stinks.
Anyone having this as well?
I'll be at the Pharoconf this afternoon, maybe someone can help me fix this
one.
KR
--
Philippe Back
"Helping you hit the top 3 outcomes you really want to achieve"
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:
phil(a)highoctane.be| Web:
http://philippeback.eu | Blog:
http://philippeback.be
High Octane SPRL
rue cour Boisacq 101
1301 Bierges
May 25, 2012
Re: [Pharo-project] VM problem?
by Tudor Girba
The problem is also reproducible with the latest Nautilus 1.4 image.
Doru
On 25 May 2012, at 09:57, Fabrizio Perin wrote:
> Hi,
> I'm using last Moose build on top of CogVM 2550 and each time I click on a method an error pops up (see the attachment). The same problem I have it with older builds of Moose but I don't have any problem if I open the same image with Cog VM 2540 or CogVM from the Pharo web site.
>
> I'm on Mac os 10.7.4 and the image is:
>
> Pharo1.4
> Latest update: #14438
>
> Cheers,
> Fabrizio
>
> <MooseAnd2550Error.tiff>
--
www.tudorgirba.com
"Every successful trip needs a suitable vehicle."
May 25, 2012
[Pharo-project] VM problem?
by Fabrizio Perin
Hi,
I'm using last Moose build on top of CogVM 2550 and each time I click on a
method an error pops up (see the attachment). The same problem I have it
with older builds of Moose but I don't have any problem if I open the same
image with Cog VM 2540 or CogVM from the Pharo web site.
I'm on Mac os 10.7.4 and the image is:
Pharo1.4
Latest update: #14438
Cheers,
Fabrizio
May 25, 2012
Re: [Pharo-project] Progress bar in the top left
by Igor Stasenko
On 24 May 2012 17:32, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
> Indeed.
>
>> Is it possible to have an uniform way to present announcement. There
>> is already the growl-like announcements of tests used by the Nautilus
>> Browser done ob botton left. Maybe progress bar should be done in the
>> same screen area.
>
> Now sometimes we should have a blocking UI.
>
Since when?
Rule #1 of UI: never block UI.
Because if you do, then we have no right to call it UI.
do you know why we need this panic button (Alt-.) in our images?
Exactly because every silly thing prefers to block UI at any point,
even if it doesn't necessary.
--
Best regards,
Igor Stasenko.
May 25, 2012
Re: [Pharo-project] Progress bar in the top left
by Igor Stasenko
On 23 May 2012 14:33, Sean P. DeNigris <sean(a)clipperadams.com> wrote:
>
> Mariano Martinez Peck wrote
>>
>> I think it is much better since  it does not disturb you.
>>
>
> Fine by me, but the progress bar usually blocks the UI anyway, only updating
> itself. Do we want it to drive the world instead? That way we can keep
> working on other things, but I'm guessing e.g. MC loading will be much
> slower...
progress bar doesn't blocks anything, it is a code which using it
blocks everything. You can try an experiment - remove progress bar,
and still will be blocked,
but this time without a clue what's going on :)
Unless loading is atomic, i would not recommend allow keep working.
However, i don't see a compelling reason why MC cannot load stuff in
background :
User can do silly things.. but it can be any other process with higher
priority.. and you cannot
predict what that process will do anyways.
I remember i was saying this before: it is better to fix MC, if we
find issues due to change.
Like that it will be more fail proof plus we will no longer need to block user.
Needless to say that i hate this mode when everything is disabled.
>
> --
> View this message in context: http://forum.world.st/Progress-bar-in-the-top-left-tp4631530p4631549.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
--
Best regards,
Igor Stasenko.
May 25, 2012