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
Envoyé de mon iPhone
Le 25 mai 2012 à 20:23, Igor Stasenko <siguctua(a)gmail.com> a écrit :
> Should i put more elaborate error message?
> A 'function unavailable' is exception which you get when... function
> is not available.
>
> I just thinking how to prevent receiving a huge and worthless stack traces. :)
> One way is of course write documentation.. :)
>
Ahah, so maybe I will send more useless stack traces ;-)
>> 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/
>>>
May 25, 2012
[Pharo-project] SmallInteger>>digitAt: protocol
by Sean P. DeNigris
Maybe a small matter, but SmallInteger>>digitAt: is in the "system
primitives" protocol, even though it doesn't call a primitive. OTOH,
LargePositiveInteger does use a primitive for #digitAt:
--
View this message in context: http://forum.world.st/SmallInteger-digitAt-protocol-tp4631830.html
Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
May 25, 2012
[Pharo-project] Pharo Sprint â Saturday 10h00 â RMoD Lab
by Camillo Bruni
We would like to invite you to a Pharo Sprint on saturday at 10h00:
http://www.doodle.com/t5uv5fhmm7adi6cs
It will be held in the RMoD lab:
http://rmod.lille.inria.fr/web/pier/contact
The entrance will be closed and can only be opened with a badge.
For those who standing in front of a closed door, call one of the
following badge-owners:
Camillo Bruni +33 7 86 95 40 78
Marcus Denker +33 3 62 65 52 58
see you!
May 25, 2012
[Pharo-project] InputEventFetcher depending on Cursor and Form
by Guillermo Polito
Does InputEventFetcher really depend on Cursor & Form to install/uninstall
the event fetch process?
install
"InputEventFetcher install"
Smalltalk addToStartUpList: self after: Cursor.
Smalltalk addToShutDownList: self after: Form.
Default := self new.
Default startUp
Guille
May 25, 2012
Re: [Pharo-project] loading athens - a user perspective
by Igor Stasenko
Should i put more elaborate error message?
A 'function unavailable' is exception which you get when... function
is not available.
I just thinking how to prevent receiving a huge and worthless stack traces. :)
One way is of course write documentation.. :)
On 25 May 2012 12:39, Serge Stinckwich <serge.stinckwich(a)gmail.com> wrote:
> 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/
>
--
Best regards,
Igor Stasenko.
May 25, 2012
Re: [Pharo-project] Progress bar in the top left
by Stéphane Ducasse
I meant modal.
> 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.
stef
May 25, 2012
Re: [Pharo-project] Bug fixes for 1.4
by Stéphane Ducasse
On May 24, 2012, at 11:55 PM, Sean P. DeNigris wrote:
> There is a bug in 1.4 where a trailing slash causes FileReference>>exists to
> return false e.g. on my machine, "(FileLocator home asFileReference /
> '.jenkins/') exists" -> false
> "(FileLocator home asFileReference / '.jenkins') exists" -> true
>
> I noticed it has been fixed in 2.0 and tracked the change down to
> DiskStore>>nodeAt:ifPresent:ifAbsent:. Now how do I figure out where this
> change came from? I didn't see anything promising in the issue tracker.
> Assuming this was part of a slice, I want to make sure I include any
> associated changes to other packages.
>
> Also, this makes me wonder again about the tagging process. It seems this
> should have gone into both 1.4 and 2.0 if I correctly understand the new
> release processâ¦
Sometimes we miss/forget to tag important fixes to be put back in
>
> Sean
>
> --
> View this message in context: http://forum.world.st/Bug-fixes-for-1-4-tp4631751.html
> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>
May 25, 2012
[Pharo-project] [update 2.0] #20095
by Marcus Denker
20095
-----
Issue 5971: Nautilus: Opening issue when opening on a method
http://code.google.com/p/pharo/issues/detail?id=5971
Issue 5970: CommandLine eval does not work completely
http://code.google.com/p/pharo/issues/detail?id=5970
Issue 5962: 62 tests failing after integrating Issue 5755:
http://code.google.com/p/pharo/issues/detail?id=5962
Issue 5972: Clean in perform: aSelector orSendTo: another
http://code.google.com/p/pharo/issues/detail?id=5972
--
Marcus Denker -- http://marcusdenker.de
May 25, 2012
Re: [Pharo-project] loading athens - a user perspective
by Fernando Olivero
You shouldnt use Brew, because it cant compile universal binaries.
Athens, with a cairo backend, uses NativeBoost which needs 32 bit
libraries, because CogGM is targeted to 32 bits.
I also tried with Brew, that's why i found out is hard to instruct
brew to compile universal binaries.
Fernando
On Fri, May 25, 2012 at 12:39 PM, Serge Stinckwich
<serge.stinckwich(a)gmail.com> wrote:
> 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
[Pharo-project] Monitoring Seaside using ruby god.
by mail list
I have had some great success monitoring three seaside images serving an email application. I thought I would share the script as it offers more features than using daemontools and I have been using ruby god for years now so I am quite comfortable with its stability.
Ruby God: http://godrb.com
My application admin.ses.sg.estormtech.com/ficonabemail
My god script.
changes directory to the image directory [seaside_root]
monitors http, memory usage and cpu usage and restarts its.
send an email if this happens. If you want the contact script, just drop me an email. (the c.notify below). (You can also find it on github)
Scott
- i receive an email when the image has to be restarted similar to below...
Message: seaside2 [trigger] process 11692 exited {:exit_code=>6, :pid=>11692, :thread_group_id=>11692, :exit_signal=>17} (ProcessExits)
Host: xxxxxx
Priority:
Category:
SEASIDE_GROUPS ={:seaside1=> {},:seaside2=>{}, :seaside3=>{} }
SEASIDE_GROUPS[:seaside1]={:group => "seaside1",:seaside_root => "/var/sites/xxxx/", :ports => [8083,8084], :image => "xxx.image"}
SEASIDE_GROUPS[:seaside2]={:group => "seaside2",:seaside_root => "/var/sitesyyyy/", :ports => [8088,8089,8090], :image => "yyy.image"}
SEASIDE_GROUPS[:seaside3]={:group => "seaside3",:seaside_root => "/var/sites/zzz/", :ports => [8092,8093,8094], :image => "zzz.image"}
SEASIDE_GROUPS.each { |key,grp|
puts "starting #{grp[:group]} root: #{grp[:seaside_root]} ports: #{grp[:ports].join(',')} image: #{grp[:image]} }"
God.watch do |w|
w.name = "#{grp[:group]}"
w.group = "seaside"
w.interval = 30.seconds
w.dir = grp[:seaside_root]
w.log = "/var/sites/godlog/#{grp[:group]}.log"
w.start = "/usr/bin/CogVM -mmap 256m -vm-sound-null -vm-display-null #{grp[:image]}"
# VM="/usr/bin/CogVM"
# VM_PARAMS="-mmap 256m -vm-sound-null -vm-display-null"
# IMAGE="sesbase.image"
# w.uid = 'www-data'
# w.gid = 'www-data'
w.uid = 'root'
# w.gid = 'www-data'
# retart if memory gets too high
w.transition(:up, :restart) do |on|
on.condition(:memory_usage) do |c|
c.above = 350.megabytes
c.times = 2
end
on.condition(:cpu_usage) do |c|
c.interval = 10
c.above = 40.percent
c.times = 8
end
grp[:ports].each { |port|
puts "http checking: #{port} on #{grp[:group]} "
on.condition(:http_response_code) do |c|
c.host = 'localhost'
c.port = port
c.path = '/ficonabemail'
c.code_is = 400
# c.interval = 30
c.timeout = 7.seconds
c.times = [3, 5]
end
}
end
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
# determine when process has finished starting
w.transition([:start, :restart], :up) do |on|
on.condition(:process_running) do |c|
c.running = true
c.interval = 5.seconds
end
# failsafe
on.condition(:tries) do |c|
c.times = 5
c.transition = :start
c.interval = 5.seconds
end
end
# start if process is not running
w.transition(:up, :start) do |on|
on.condition(:process_running) do |c|
c.running = false
end
on.condition(:process_exits) do |c|
c.notify = 'scott'
end
end
end
}
May 25, 2012