Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- October
- September
- August
- 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
- 3 participants
- 144622 messages
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
Re: [Pharo-project] loading athens - a user perspective
by Serge Stinckwich
On Fri, May 25, 2012 at 4:57 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> Hi,
>
> Here is how to install Athens (I also added this comment to the ConfigurationOfAthens):
>
>
> 1. Install Cairo on your machine
> For example, for Mac, you open the terminal and run:
> sudo port install -f cairo +universal
>
> More information can be found here:
> http://cairographics.org/download/
>
>
> 2. Download the NativeBoost enabled Cog VM from:
> https://ci.lille.inria.fr/pharo/view/NativeBoost/
>
>
> 3. Get a Pharo image and run:
> Gofer new
> Â Â Â Â squeaksource: 'Athens';
> Â Â Â Â package: 'ConfigurationOfAthens';
> Â Â Â Â load.
> (Smalltalk at: #ConfigurationOfAthens) loadDevelopment
>
>
> 4. Play with it. For example:
> VGTigerDemo runDemo
I install Cairo with brew on mac os x:
brew install cairo
And I got the following stack trace:
25 May 2012 5:37:03 pm
VM: Mac OS - intel - 1074 - NBCoInterpreter
NativeBoost-CogPlugin-IgorStasenko.9 uuid:
801decd2-0b42-fa49-bcea-d7564d516a1b May 1 2012,
StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.158 uuid:
82eded98-68af-4c80-a472-4f6de293adcf May 1 2012,
https://git.gitorious.org/cogvm/blessed.git Commit:
6aa3fd0f1188078d3167dec1a53031a61b97b688 Date: Tue May 1 20:28:14 2012
+0200 By: Esteban Lorenzano <estebanlm(a)gmail.com>
Image: Pharo1.4a [Latest update: #14418]
NBFFICallout(Object)>>error:
Receiver: a NBFFICallout
Arguments and temporary variables:
aString: 'function unavailable'
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
[:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
aModuleNameOrHandle.
fnAddress
ifNil: [self error: 'function unavailable'].
self mayCallback
ifTrue: [asm push: fnAddress asUImm32;
mov: NativeBoost callgateFunctionAddress asUImm32 to: EAX;
call: EAX]
ifFalse: [asm mov: fnAddress asUImm32 to: EAX;
call: EAX]] in NBFFICallout>>generateCall:module:
Receiver: a NBFFICallout
Arguments and temporary variables:
aModuleNameOrHandle: a NBFFICallout
fnAddress: '/opt/local/lib/libcairo.2.dylib'
gen: #(nil)
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
BlockClosure>>valueWithPossibleArgs:
Receiver: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
aModuleNam...etc...
Arguments and temporary variables:
anArray: an Array(a NBFFICallout a NBInterpreterProxy an AJx86Assembler)
Receiver's instance variables:
outerContext: NBFFICallout>>generateCall:module:
startpc: 91
numArgs: 1
[aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]] in [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: an AJCdeclCallInfo
call: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName m...etc...
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
BlockClosure>>ensure:
Receiver: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [...etc...
Arguments and temporary variables:
aBlock: [level := level - 1.
self
addInstruction: (AJInstructionDecoration n...etc...
complete: nil
returnValue: nil
Receiver's instance variables:
outerContext: [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
sel...etc...
startpc: 151
numArgs: 0
AJx86Assembler>>decorateWith:while:
Receiver: an AJx86Assembler
Arguments and temporary variables:
annotation: 'FFI: performing a call'
aBlock: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self o...etc...
Receiver's instance variables:
instructions: <<error during printing>>
[:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: an AJCdeclCallInfo
call: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName m...etc...
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
AJx86Assembler>>performingCall:in:
Receiver: an AJx86Assembler
Arguments and temporary variables:
ci: an AJCdeclCallInfo
aBlock: [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self push...etc...
Receiver's instance variables:
instructions: <<error during printing>>
NBFFICallout>>foreignCall:
Receiver: a NBFFICallout
Arguments and temporary variables:
aBlock: [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self push...etc...
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generateInstructions:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec ...etc...
instructions: nil
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generate:
Receiver: a NBFFICallout
Arguments and temporary variables:
aFunctionBodyBlock: [:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec ...etc...
generatedCode: nil
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generateCall:module:
Receiver: a NBFFICallout
Arguments and temporary variables:
functionSpec: #(#AthensCairoSurface #cairo_image_surface_create
#(#int #aFormat...etc...
aModuleNameOrHandle: '/opt/local/lib/libcairo.2.dylib'
fnAddress: #(nil)
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer
#optReturnP...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
fnSpec: a NBFnSpec
requestor: AthensCairoSurface class
methodArgs: an OrderedCollection('aFormat' 'aWidth' 'aHeight')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
[:gen | gen sender: sender;
callType: self nbCallingConvention;
generateCall: fnSpec module: self nbLibraryNameOrHandle] in
AthensCairoSurface class(Object)>>nbCall:
Receiver: AthensCairoSurface
Arguments and temporary variables:
fnSpec: a NBFFICallout
sender: #(#AthensCairoSurface #cairo_image_surface_create #(#int
#aFormat #, #i...etc...
gen: AthensCairoSurface class>>primImage:width:height:
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
Receiver: NBFFICallout
Arguments and temporary variables:
aBlock: [:gen | gen sender: sender;
callType: self nbCallingConvention;
g...etc...
retryCtx: AthensCairoSurface class>>primImage:width:height:
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
code: nil
newMethod: nil
args: nil
i: nil
iLimiT: nil
Receiver's instance variables:
superclass: NBNativeCodeGen
methodDict: a
MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType:
"a...etc...
format: 148
instanceVariables: #('fnSpec' 'requestor' 'methodArgs'
'coercionMayFail' 'callI...etc...
organization: ('type aliases' aliasForType:)
('accessing' anonSpec: callType: c...etc...
subclasses: {NBNativeFunctionGen}
name: #NBFFICallout
classPool: a Dictionary(#CustomErrorCodes->nil
#CustomErrorMessages->nil #TypeA...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core'
traitComposition: {}
localSelectors: nil
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
Receiver: NBFFICallout
Arguments and temporary variables:
aContext: AthensCairoSurface class>>primImage:width:height:
aBlock: [:gen | gen sender: sender;
callType: self nbCallingConvention;
g...etc...
method: (AthensCairoSurface class>>#primImage:width:height: "a
CompiledMethod(4...etc...
lastError: 502
Receiver's instance variables:
superclass: NBNativeCodeGen
methodDict: a
MethodDictionary(#aliasForType:->(NBFFICallout>>#aliasForType:
"a...etc...
format: 148
instanceVariables: #('fnSpec' 'requestor' 'methodArgs'
'coercionMayFail' 'callI...etc...
organization: ('type aliases' aliasForType:)
('accessing' anonSpec: callType: c...etc...
subclasses: {NBNativeFunctionGen}
name: #NBFFICallout
classPool: a Dictionary(#CustomErrorCodes->nil
#CustomErrorMessages->nil #TypeA...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core'
traitComposition: {}
localSelectors: nil
AthensCairoSurface class(Object)>>nbCall:
Receiver: AthensCairoSurface
Arguments and temporary variables:
fnSpec: #(#AthensCairoSurface #cairo_image_surface_create #(#int
#aFormat #, #i...etc...
sender: AthensCairoSurface class>>primImage:width:height:
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
AthensCairoSurface class>>primImage:width:height:
Receiver: AthensCairoSurface
Arguments and temporary variables:
aFormat: 0
aWidth: 800
aHeight: 800
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
AthensCairoSurface class>>extent:format:
Receiver: AthensCairoSurface
Arguments and temporary variables:
anExtent: (800@800)
aFormat: 0
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
AthensCairoSurface class>>extent:
Receiver: AthensCairoSurface
Arguments and temporary variables:
anExtent: (800@800)
Receiver's instance variables:
superclass: AthensSurface
methodDict: a
MethodDictionary(#asAthensPaintOn:->(AthensCairoSurface>>#asAthen...etc...
format: 140
instanceVariables: #('handle' 'context' 'builder' 'id')
organization: ('converting' asAthensPaintOn: writeToPng:)
('as yet unclassified...etc...
subclasses: {AthensCairoPDFSurface}
name: #AthensCairoSurface
classPool: nil
sharedPools: an OrderedCollection(AthensCairoDefs)
environment: a SystemDictionary(lots of globals)
category: #'Athens-Cairo'
traitComposition: TCairoLibrary
localSelectors: a Set(#asForm #createFormPaint: #stride
#setOperator: #writeToP...etc...
uniqueSession: nil
dispatch: nil
dispatchStruct: nil
VGTigerDemo>>initialize
Receiver: a VGTigerDemo
Arguments and temporary variables:
Receiver's instance variables:
surface: nil
VGTigerDemo class(Behavior)>>new
Receiver: VGTigerDemo
Arguments and temporary variables:
Receiver's instance variables:
superclass: Object
methodDict: a
MethodDictionary(#convertPathData2->(VGTigerDemo>>#convertPathDat...etc...
format: 132
instanceVariables: #('surface')
organization: ('as yet unclassified' convertPathData2 initialize runDemo)
subclasses: nil
name: #VGTigerDemo
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Athens-Examples'
traitComposition: {}
localSelectors: nil
VGTigerDemo class>>runDemo
Receiver: VGTigerDemo
Arguments and temporary variables:
Receiver's instance variables:
superclass: Object
methodDict: a
MethodDictionary(#convertPathData2->(VGTigerDemo>>#convertPathDat...etc...
format: 132
instanceVariables: #('surface')
organization: ('as yet unclassified' convertPathData2 initialize runDemo)
subclasses: nil
name: #VGTigerDemo
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'Athens-Examples'
traitComposition: {}
localSelectors: nil
UndefinedObject>>DoIt
Receiver: nil
Arguments and temporary variables:
Receiver's instance variables:
nil
Compiler>>evaluate:in:to:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadWriteStream
aContext: nil
receiver: nil
aRequestor: a TextMorphForEditView(741605376)
failBlock: [self morph flash.
^ nil]
logFlag: true
methodNode: DoIt
^ VGTigerDemo runDemo
method: (UndefinedObject>>#DoIt "a CompiledMethod(926679040)")
value: nil
toLog: nil
itsSelection: nil
itsSelectionString: nil
Receiver's instance variables:
sourceStream: a ReadWriteStream
requestor: a TextMorphForEditView(741605376)
class: UndefinedObject
category: nil
context: nil
parser: a Parser
[rcvr class evaluatorClass new
evaluate: self selectionForDoitAsStream
in: ctxt
to: rcvr
notifying: self morph
ifFail: [self morph flash.
^ nil]
logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
rcvr: nil
ctxt: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
BlockClosure>>on:do:
Receiver: [rcvr class evaluatorClass new
evaluate: self selectionForDoitAsStream
in: ctxt
to: ...etc...
Arguments and temporary variables:
exception: OutOfScopeNotification
handlerAction: [:ex | ex resume: true]
handlerActive: true
Receiver's instance variables:
outerContext: SmalltalkEditor>>evaluateSelectionAndDo:
startpc: 110
numArgs: 0
SmalltalkEditor>>evaluateSelectionAndDo:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aBlock: [:result | result]
result: nil
rcvr: nil
ctxt: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor>>evaluateSelection
Receiver: a SmalltalkEditor
Arguments and temporary variables:
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor>>doIt
Receiver: a SmalltalkEditor
Arguments and temporary variables:
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor>>doIt:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
aBoolean: false
return: [:val | ^ val]
asciiValue: 101
actions: #(#noop: #cursorHome: #noop: #noop: #cursorEnd: #noop:
#noop: #noop: #...etc...
action: #doIt:
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>dispatchCommandOn:return:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
return: [:val | ^ val]
asciiValue: 100
honorCommandKeys: true
char: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>dispatchOn:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
char: nil
return: [:val | ^ val]
keyEvents: nil
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
[self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>handleKeystrokeAction:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aBlock: [self dispatchOn: aKeyboardEvent]
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
anAction: [self dispatchOn: aKeyboardEvent]
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
SmalltalkEditor(TextEditor)>>keystroke:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [keystroke '<Cmd-d>']
Receiver's instance variables:
morph: a TextMorphForEditView(741605376)
selectionShowing: true
model: a Workspace
editingState: a SmalltalkEditingState
[editor keystroke: evt] in [| action |
evt keyValue = 13
ifTrue: [action := self crAction.
action
ifNotNil: [evt hand newKeyboardFocus: nil.
^ action value]].
self
handleInteraction: [editor keystroke: evt].
self updateFromParagraph.
super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(741605376)
Arguments and temporary variables:
evt: [keystroke '<Cmd-d>']
Receiver's instance variables:
bounds: (0@0) corner: (473@18)
owner: a TransformMorph(38535168)
submorphs: #()
fullBounds: (0@0) corner: (473@18)
color: Color black
extension: a MorphExtension (824180736) [other: (blinkStart ->
1085881) (myDep...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'VGTigerDemo runDemo'
wrapFlag: true
paragraph: a Paragraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: (0@0) corner: (0@0)
editView: a PluggableTextMorph(838860800)
acceptOnCR: false
autoAccept: false
acceptOnFocusChange: false
selectionColor: nil
TextMorphForEditView(TextMorph)>>handleInteraction:
Receiver: a TextMorphForEditView(741605376)
Arguments and temporary variables:
interactionBlock: [editor keystroke: evt]
oldEditor: a SmalltalkEditor
oldParagraph: a Paragraph
oldText: a Text for 'VGTigerDemo runDemo'
Receiver's instance variables:
bounds: (0@0) corner: (473@18)
owner: a TransformMorph(38535168)
submorphs: #()
fullBounds: (0@0) corner: (473@18)
color: Color black
extension: a MorphExtension (824180736) [other: (blinkStart ->
1085881) (myDep...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle Bitmap DejaVu Sans 9
text: a Text for 'VGTigerDemo runDemo'
wrapFlag: true
paragraph: a Paragraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: (0@0) corner: (0@0)
editView: a PluggableTextMorph(838860800)
acceptOnCR: false
autoAccept: false
acceptOnFocusChange: false
selectionColor: nil
--- The full stack ---
NBFFICallout(Object)>>error:
[:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module:
aModuleNameOrHandle.
fnAddress
ifNil: [self error: 'function unavailable'].
self mayCallback
ifTrue: [asm push: fnAddress asUImm32;
mov: NativeBoost callgateFunctionAddress asUImm32 to: EAX;
call: EAX]
ifFalse: [asm mov: fnAddress asUImm32 to: EAX;
call: EAX]] in NBFFICallout>>generateCall:module:
BlockClosure>>valueWithPossibleArgs:
[aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]] in [:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
BlockClosure>>ensure:
AJx86Assembler>>decorateWith:while:
[:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
while: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
AJx86Assembler>>performingCall:in:
NBFFICallout>>foreignCall:
NBFFICallout>>generateInstructions:
NBFFICallout>>generate:
NBFFICallout>>generateCall:module:
[:gen | gen sender: sender;
callType: self nbCallingConvention;
generateCall: fnSpec module: self nbLibraryNameOrHandle] in
AthensCairoSurface class(Object)>>nbCall:
NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
AthensCairoSurface class(Object)>>nbCall:
AthensCairoSurface class>>primImage:width:height:
AthensCairoSurface class>>extent:format:
AthensCairoSurface class>>extent:
VGTigerDemo>>initialize
VGTigerDemo class(Behavior)>>new
VGTigerDemo class>>runDemo
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[rcvr class evaluatorClass new
evaluate: self selectionForDoitAsStream
in: ctxt
to: rcvr
notifying: self morph
ifFail: [self morph flash.
^ nil]
logged: true] in SmalltalkEditor>>evaluateSelectionAndDo:
BlockClosure>>on:do:
SmalltalkEditor>>evaluateSelectionAndDo:
SmalltalkEditor>>evaluateSelection
SmalltalkEditor>>doIt
SmalltalkEditor>>doIt:
SmalltalkEditor(TextEditor)>>performCmdActionsWith:shifted:return:
SmalltalkEditor(TextEditor)>>dispatchCommandOn:return:
SmalltalkEditor(TextEditor)>>dispatchOn:
[self dispatchOn: aKeyboardEvent] in SmalltalkEditor(TextEditor)>>keystroke:
SmalltalkEditor(TextEditor)>>handleKeystrokeAction:
SmalltalkEditor(TextEditor)>>handleEditionAction:fromKeyboardEvent:
SmalltalkEditor(TextEditor)>>keystroke:
[editor keystroke: evt] in [| action |
evt keyValue = 13
ifTrue: [action := self crAction.
action
ifNotNil: [evt hand newKeyboardFocus: nil.
^ action value]].
self
handleInteraction: [editor keystroke: evt].
self updateFromParagraph.
super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
TextMorphForEditView>>handleInteraction:
[| action |
evt keyValue = 13
ifTrue: [action := self crAction.
action
ifNotNil: [evt hand newKeyboardFocus: nil.
^ action value]].
self
handleInteraction: [editor keystroke: evt].
self updateFromParagraph.
super keyStroke: evt] in TextMorphForEditView(TextMorph)>>keyStroke:
ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolRegistry>>codeCompletionAround:textMorph:keyStroke:
SmalltalkEditor>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder
handleFocusEvent: (anEvent
transformedBy: (focusHolder transformedFrom: self))] in
HandMorph>>sendFocusEvent:to:clear:
[aBlock value] in PasteUpMorph>>becomeActiveDuring:
BlockClosure>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[:h |
ActiveHand := h.
h processEvents.
ActiveHand := nil] in WorldState>>doOneCycleNowFor:
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[[World doOneCycle.
Processor yield.
false] whileFalse.
nil] in MorphicUIManager>>spawnNewProcess
[self value.
Processor terminateActive] in BlockClosure>>newProcess
--
Serge Stinckwich
UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
Every DSL ends up being Smalltalk
http://doesnotunderstand.org/
May 25, 2012
Re: [Pharo-project] Pressed Morph feedback on PharoTheme
by Stéphane Ducasse
Thierry
Can you produce a change set with your change like that we can try?
And open a bug entry.
I'm a bit confused
Stef
> Le 24/05/2012 09:19, Goubier Thierry a écrit :
>> Another bug shown with my change is, if you start to scroll with the
>> slider, it depresses correctly, but, as soon as you move outside the
>> bounds of the scrollbar, even while pressing the left mouse button, then
>> the slider goes back to the "not pressed" state while you are still
>> scrolling up or down.
>
> To correct that bug, a small change in ScrollBar>>mouseLeaveThumb:
>
> event redButtonPressed
> ifFalse: [
> slider
> fillStyle: self normalThumbFillStyle;
> borderStyle: self normalThumbBorderStyle;
> changed ].
> (self containsPoint: event position)
> ifTrue: [
> upButton
> fillStyle: self mouseOverPagingAreaButtonFillStyle;
> borderStyle: self mouseOverPagingAreaButtonBorderStyle ]
> ifFalse: [
> upButton
> fillStyle: self normalButtonFillStyle;
> borderStyle: self normalButtonBorderStyle ].
> (self containsPoint: event position)
> ifTrue: [
> downButton
> fillStyle: self mouseOverPagingAreaButtonFillStyle;
> borderStyle: self mouseOverPagingAreaButtonBorderStyle ]
> ifFalse: [
> downButton
> fillStyle: self normalButtonFillStyle;
> borderStyle: self normalButtonBorderStyle ]
>
>
>
> Thierry
> --
> Thierry Goubier
> CEA list
> Laboratoire des Fondations des Systèmes Temps Réel Embarqués
> 91191 Gif sur Yvette Cedex
> France
> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
>
May 25, 2012
Re: [Pharo-project] Squeak in the web browser
by Stefan Krecher
Hi,
2012/5/11 Pavel Krivanek <pavel.krivanek(a)gmail.com>:
> I was successful in running Squeak virtual machine on JSLinux. JSLinux
> is a x86 PC emulator written in JavaScript and running in a web
> browser. It required to compile the VM for uClibc and do some little
> modifications. So Squeak can log the next crazy platform where it is
> able to run :-)
>
> Unfortunately it has no display support and JSLinux license doesn't
> allow to make the work public but at least you may look at a short
> video:
>
> http://www.youtube.com/watch?v=mclkVePwNqE
this is so cool :-)
It would be great if you could describe, how to reproduce this!
regards,
Stefan
May 25, 2012
[Pharo-project] loading athens - a user perspective
by Tudor Girba
Hi,
Here is how to install Athens (I also added this comment to the ConfigurationOfAthens):
1. Install Cairo on your machine
For example, for Mac, you open the terminal and run:
sudo port install -f cairo +universal
More information can be found here:
http://cairographics.org/download/
2. Download the NativeBoost enabled Cog VM from:
https://ci.lille.inria.fr/pharo/view/NativeBoost/
3. Get a Pharo image and run:
Gofer new
squeaksource: 'Athens';
package: 'ConfigurationOfAthens';
load.
(Smalltalk at: #ConfigurationOfAthens) loadDevelopment
4. Play with it. For example:
VGTigerDemo runDemo
Thanks Igor!
Cheers,
Doru
--
www.tudorgirba.com
"Live like you mean it."
May 25, 2012