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
- 4 participants
- 144627 messages
Re: [Pharo-project] [ANN] Pharo Online Help 1.0
by H. Hirzel
P.S. I remember that speed might be a problem. When you first open the
help system the compilation from markdown is going on with a
noticeable delay.
On 11/15/12, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
> Torsten,
>
> In August this year I loaded NBHelp into Squeak. NBHelp uses the
> mark-down syntax.
>
> Here is a description how I did it
>
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2012-August/165587.h…
>
> (written in markdown :-) )
>
>
> NBHelp uses PetitParser.
>
>
> You write that you want to have a pluggable design. For a start I
> think a dependency on PetitParser would not be harmful though the
> code would be larger. But PetitParser is not all that big either. It
> helps you to get into action quickly and safely.
>
> Later on somebody might want to replace it with a manually written
> mark down parser. I think there is one in Lukas's wiki code. This then
> would make the help system self-contained and a bit smaller.
>
> As I am concerned I would not have a problem with a dependency on
> PetitParser.
>
> As of now the challenge with the help system is more on the actual
> writing of documentation and not so much on the tool side.
>
> But your work is instrumental to make this happen. Thank you.
>
>
> --Hannes
>
> On 11/14/12, Torsten Bergmann <astares(a)gmx.de> wrote:
>> It should be a pluggable design similar to current help
>> system so one can write in wikistyle, html, markdown, ...
>>
>> But we need one default. I like Markdown too - but
>> do we have some lean code to parse or just transform
>> it to HTML.
>>
>> The help system should be relative small - so it
>> can be delivered with the default image.
>> Dont know about current dependecies of PetitParser
>> and friends.
>>
>> Bye
>> T.
>>
>>
>>
>>
>>
>
Nov. 15, 2012
Re: [Pharo-project] [ANN] Pharo Online Help 1.0
by H. Hirzel
Torsten,
In August this year I loaded NBHelp into Squeak. NBHelp uses the
mark-down syntax.
Here is a description how I did it
http://lists.squeakfoundation.org/pipermail/squeak-dev/2012-August/165587.h…
(written in markdown :-) )
NBHelp uses PetitParser.
You write that you want to have a pluggable design. For a start I
think a dependency on PetitParser would not be harmful though the
code would be larger. But PetitParser is not all that big either. It
helps you to get into action quickly and safely.
Later on somebody might want to replace it with a manually written
mark down parser. I think there is one in Lukas's wiki code. This then
would make the help system self-contained and a bit smaller.
As I am concerned I would not have a problem with a dependency on PetitParser.
As of now the challenge with the help system is more on the actual
writing of documentation and not so much on the tool side.
But your work is instrumental to make this happen. Thank you.
--Hannes
On 11/14/12, Torsten Bergmann <astares(a)gmx.de> wrote:
> It should be a pluggable design similar to current help
> system so one can write in wikistyle, html, markdown, ...
>
> But we need one default. I like Markdown too - but
> do we have some lean code to parse or just transform
> it to HTML.
>
> The help system should be relative small - so it
> can be delivered with the default image.
> Dont know about current dependecies of PetitParser
> and friends.
>
> Bye
> T.
>
>
>
>
>
Nov. 15, 2012
Re: [Pharo-project] method wrappers package name problem
by Marcus Denker
On Nov 15, 2012, at 2:34 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> Hi,
>
> We have a little problem with MethodWrappers. Currently, the package is called MethodWrappers4.2 which completely messes up Monticello in Pharo 1.4.
>
> So, we (me and Stef) would like to rename it to MethodWrappers42, but for that we need access to the repository. Marcus, could you provide this access?
>
I actually don't know what state MW is in... there are multiple ports using multiple strategies. The 42 one is for Squeak, I think.
I added you, after fighting with SqueakSource (Stef I could not find in the list)
Marcus
--
Marcus Denker -- http://marcusdenker.de
Nov. 15, 2012
Re: [Pharo-project] [Pharo-users] [Pharo-consortium] Pharo Association
by Fernando Olivero
Cool! It's great that now we have a way of supporting Pharo.
I thought it was a bug, but realized that after signing up, you can login
but you wont appear in the members list before you actually pay.
Thanks,
Fernando
On Thu, Nov 15, 2012 at 6:09 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> I did and it worked. So, it is safe for everyone else to do it, too :)
>
> Doru
>
>
> On 15 Nov 2012, at 17:58, Damien Cassou <damien.cassou(a)gmail.com> wrote:
>
> > On Thu, Nov 15, 2012 at 4:29 PM, Tudor Girba <tudor(a)tudorgirba.com>
> wrote:
> >> I see. I tried that just now, but it hangs after I press sign up.
> >
> > try again :-)
> >
> > --
> > Damien Cassou
> > http://damiencassou.seasidehosting.st
> >
> > "Success is the ability to go from one failure to another without
> > losing enthusiasm."
> > Winston Churchill
> >
>
> --
> www.tudorgirba.com
>
> "We cannot reach the flow of things unless we let go."
>
>
>
>
>
Nov. 15, 2012
[Pharo-project] method wrappers package name problem
by Tudor Girba
Hi,
We have a little problem with MethodWrappers. Currently, the package is called MethodWrappers4.2 which completely messes up Monticello in Pharo 1.4.
So, we (me and Stef) would like to rename it to MethodWrappers42, but for that we need access to the repository. Marcus, could you provide this access?
Cheers,
Doru
--
www.tudorgirba.com
"What is more important: To be happy, or to make happy?"
Nov. 15, 2012
Re: [Pharo-project] [Pharo-users] [Pharo-consortium] Pharo Association
by Tudor Girba
I did and it worked. So, it is safe for everyone else to do it, too :)
Doru
On 15 Nov 2012, at 17:58, Damien Cassou <damien.cassou(a)gmail.com> wrote:
> On Thu, Nov 15, 2012 at 4:29 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>> I see. I tried that just now, but it hangs after I press sign up.
>
> try again :-)
>
> --
> Damien Cassou
> http://damiencassou.seasidehosting.st
>
> "Success is the ability to go from one failure to another without
> losing enthusiasm."
> Winston Churchill
>
--
www.tudorgirba.com
"We cannot reach the flow of things unless we let go."
Nov. 15, 2012
Re: [Pharo-project] [Pharo-consortium] Pharo Association
by Damien Cassou
On Thu, Nov 15, 2012 at 4:29 PM, Tudor Girba <tudor(a)tudorgirba.com> wrote:
> I see. I tried that just now, but it hangs after I press sign up.
try again :-)
--
Damien Cassou
http://damiencassou.seasidehosting.st
"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill
Nov. 15, 2012
Re: [Pharo-project] OSProcess in Pharo 2.0
by Max Leske
:D Thanks Damien
On 15.11.2012, at 16:47, Damien Cassou <damien.cassou(a)gmail.com> wrote:
> On Tue, Nov 13, 2012 at 11:24 AM, Max Leske <maxleske(a)gmail.com> wrote:
>> I'm working on a simple library for NativeBoost that will execute commands on the shell and return stdin and stderr to the image.
>> This will take me one or two weeks to complete though. Once I'm finished I'll post it on the list (I guess there's a lot of people who would want something like this). This library should (hopefully) make OSProcess obsolete.
>
> pleasssseeeeeee
>
> --
> Damien Cassou
> http://damiencassou.seasidehosting.st
>
> "Success is the ability to go from one failure to another without
> losing enthusiasm."
> Winston Churchill
>
Nov. 15, 2012
[Pharo-project] [NativeBoost] calls to munmap always fail on OS X 10.8.2
by Max Leske
Hi
When NativeBoost tries to call munmap to free a page (happens because a pointer I freed was the last reserved one in that page) it will throw a NBFFICalloutError (every time) because (I think) it can't find the symbol. I have absolutely no clue how to fix this so I'm in need of help.
System: OS X 10.8.2
Image: 1.4
NativeBoost-Core: CamilloBruni.80 (Installed by using the latest NBInstaller)
Cheers,
Max
Here's the stack:
15 November 2012 5:04:23.895 pm
VM: Mac OS - intel - 1082 - NBCoInterpreter NativeBoost-CogPlugin-IgorStasenko.14 uuid: da3a649c-e2b2-bd4c-aa2f-9c2ebdb2658a Oct 26 2012, StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.164 uuid: d77dee73-00f5-4d00-847b-00646b08329d Oct 26 2012, git://gitorious.org/cogvm/blessed.git Commit: 48af8595004fd0ec3a3ac6d44c3d7516a87981ca Date: 2012-10-24 16:56:20 +0200 By: Igor Stasenko <siguctua(a)gmail.com> Jenkins build #131
Image: Pharo1.4 [Latest update: #14457]
NBFFICallout class>>signalError:
Receiver: NBFFICallout
Arguments and temporary variables:
errorCode: 1
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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
Receiver: NBFFICallout
Arguments and temporary variables:
aContext: NativeBoostMac32(NativeBoost)>>bootstrapLoadSymbol:ofLength:fromModul...etc...
aBlock: [:gen | gen useEmitCall; sender: sender; parseOptions: anOptions; cdecl...etc...
method: (NativeBoost>>#bootstrapLoadSymbol:ofLength:fromModule:into: "a Compile...etc...
lastError: 1
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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
NBFFICallout class>>cdecl:emitCall:options:
Receiver: NBFFICallout
Arguments and temporary variables:
functionSpec: #(#NBBootstrapUlong #(#byte #* #symbolName #, #long #symbolLen #,...etc...
aCallEmittingBlock: [:gen | gen proxy callFn: #ioLoadSymbol:OfLength:FromModule...etc...
anOptions: #(#- #optDirectProxyFnAddress #optAllowExternalAddressPtr)
sender: NativeBoostMac32(NativeBoost)>>bootstrapLoadSymbol:ofLength:fromModule:...etc...
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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
NativeBoostMac32(NativeBoost)>>bootstrapLoadSymbol:ofLength:fromModule:into:
Receiver: a NativeBoostMac32
Arguments and temporary variables:
symbolName: 'munmap'
symbolLen: 6
moduleHandle: -2
returnValueBuffer: #[0 0 0 0 0 0 0 0]
Receiver's instance variables:
bootstrapping: false
insideCallback: nil
callbackCounterAddr: @ 16r5F74000
extraRootsRegistry: a NBExtraRootsRegistry
rootsCell: @ 16r5F7402A
gateFunction: @ 16r5F74004
heap: a NBMacExternalHeapManager
NativeBoostMac32(NativeBoost)>>loadSymbol:fromModule:
Receiver: a NativeBoostMac32
Arguments and temporary variables:
aSymbolName: 'munmap'
moduleName: -2
bytes: #[0 0 0 0 0 0 0 0]
module: -2
handle: nil
Receiver's instance variables:
bootstrapping: false
insideCallback: nil
callbackCounterAddr: @ 16r5F74000
extraRootsRegistry: a NBExtraRootsRegistry
rootsCell: @ 16r5F7402A
gateFunction: @ 16r5F74004
heap: a NBMacExternalHeapManager
NativeBoostMac32(NativeBoostLinux32)>>loadSymbol:fromModule:
Receiver: a NativeBoostMac32
Arguments and temporary variables:
aSymbolName: 'munmap'
moduleName: -2
Receiver's instance variables:
bootstrapping: false
insideCallback: nil
callbackCounterAddr: @ 16r5F74000
extraRootsRegistry: a NBExtraRootsRegistry
rootsCell: @ 16r5F7402A
gateFunction: @ 16r5F74004
heap: a NBMacExternalHeapManager
NativeBoost class>>loadSymbol:fromModule:
Receiver: NativeBoost
Arguments and temporary variables:
aSymbolName: 'munmap'
moduleName: -2
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#CLibrary->(NativeBoost>>#CLibrary "a CompiledMe...etc...
format: 142
instanceVariables: #('bootstrapping' 'insideCallback' 'callbackCounterAddr' 'ex...etc...
organization: ('retrieving symbols' CLibrary VMModule ioLoadFunction:from: ioLo...etc...
subclasses: {NativeBoostLinux32. NativeBoostWin32}
name: #NativeBoost
classPool: a Dictionary(#Current->a NativeBoostMac32 #NBAnnouncer->an Announcer...etc...
sharedPools: an OrderedCollection(AJx86Registers NativeBoostConstants)
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core'
traitComposition: {}
localSelectors: nil
NBMacExternalHeapManager class(Object)>>nbGetSymbolAddress:module:
Receiver: NBMacExternalHeapManager
Arguments and temporary variables:
aName: 'munmap'
aModuleNameOrHandle: -2
addr: nil
Receiver's instance variables:
superclass: NBExternalHeapManager
methodDict: a MethodDictionary(#mapFlags->(NBMacExternalHeapManager>>#mapFlags ...etc...
format: 138
instanceVariables: nil
organization: ('as yet unclassified' mapFlags mmapLength:prot:flags:into: primA...etc...
subclasses: nil
name: #NBMacExternalHeapManager
classPool: nil
sharedPools: an OrderedCollection(NBMacConstants)
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Mac'
traitComposition: {}
localSelectors: nil
[:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module: aModuleNameOrHandle.
fnAddress
ifNil: [self error: 'function unavailable'].
self optMayGC
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: -2
gen: #(nil)
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer #optReturnP...etc...
method: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
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'
during: [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: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
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: 155
numArgs: 0
AJx86Assembler>>decorateWith:during:
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'
during: [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: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
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: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
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: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
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: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
NBFFICallout>>generateCall:module:
Receiver: a NBFFICallout
Arguments and temporary variables:
functionSpec: #(#int #munmap #(#uint #addr #, #ulong #len))
aModuleNameOrHandle: -2
fnAddress: #(nil)
Receiver's instance variables:
asm: an AJx86Assembler
proxy: a NBInterpreterProxy
options: a Set(#optCdecl #optAllowByteArraysPtr #optUseStackPointer #optReturnP...etc...
method: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
fnSpec: a NBFnSpec
requestor: NBMacExternalHeapManager
methodArgs: an OrderedCollection('addr' 'len')
coercionMayFail: true
callInfo: an AJCdeclCallInfo
[:gen | gen sender: sender;
cdecl;
generateCall: functionSpec module: aModuleName] in NBFFICallout class>>cdecl:module:
Receiver: NBFFICallout
Arguments and temporary variables:
functionSpec: a NBFFICallout
aModuleName: #(#int #munmap #(#uint #addr #, #ulong #len))
sender: -2
gen: NBMacExternalHeapManager>>unmap:length:
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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
[bytes := aBlock
value: (self newForMethod: method)] in NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
Receiver: NBFFICallout
Arguments and temporary variables:
aBlock: [:gen | gen sender: sender;
cdecl;
generateCall: functionSpec mod...etc...
method: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
bytes: #(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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
BlockClosure>>on:do:
Receiver: [bytes := aBlock
value: (self newForMethod: method)]
Arguments and temporary variables:
exception: NBRecursionDetect
handlerAction: [:ex | ex check: aMethod]
handlerActive: true
Receiver's instance variables:
outerContext: NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:...etc...
startpc: 96
numArgs: 0
NBRecursionDetect class>>in:during:
Receiver: NBRecursionDetect
Arguments and temporary variables:
aMethod: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)...etc...
aBlock: [bytes := aBlock
value: (self newForMethod: method)]
Receiver's instance variables:
superclass: Notification
methodDict: a MethodDictionary(#check:->(NBRecursionDetect>>#check: "a Compiled...etc...
format: 144
instanceVariables: #('method')
organization: ('as yet unclassified' check: defaultAction method signalForMetho...etc...
subclasses: nil
name: #NBRecursionDetect
classPool: nil
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-Errors'
traitComposition: {}
localSelectors: nil
NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
Receiver: NBFFICallout
Arguments and temporary variables:
aBlock: [:gen | gen sender: sender;
cdecl;
generateCall: functionSpec mod...etc...
retryCtx: NBMacExternalHeapManager>>unmap:length:
method: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...etc...
newMethod: nil
args: nil
bytes: #(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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
Receiver: NBFFICallout
Arguments and temporary variables:
aContext: NBMacExternalHeapManager>>unmap:length:
aBlock: [:gen | gen sender: sender;
cdecl;
generateCall: functionSpec mod...etc...
method: (NBMacExternalHeapManager>>#unmap:length: "a CompiledMethod(355205120)"...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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
NBFFICallout class>>cdecl:module:
Receiver: NBFFICallout
Arguments and temporary variables:
functionSpec: #(#int #munmap #(#uint #addr #, #ulong #len))
aModuleName: -2
sender: NBMacExternalHeapManager>>unmap:length:
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->a Dictionary(600->'An instance of NB...etc...
sharedPools: nil
environment: a SystemDictionary(lots of globals)
category: #'NativeBoost-Core-FFI'
traitComposition: {}
localSelectors: nil
NBMacExternalHeapManager>>unmap:length:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
addr: 7380992
len: 32768
errorCode: 502
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
NBMacExternalHeapManager>>primFreePage:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
aMemoryPage: a NBMemoryPage
res: nil
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
NBMacExternalHeapManager(NBExternalHeapManager)>>freePage:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
aMemoryPage: a NBMemoryPage
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
[:page |
page length = aMemoryBlock length
ifTrue: [self freePage: page.
^ true].
nil] in NBMacExternalHeapManager(NBExternalHeapManager)>>checkForFreePage:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
aMemoryBlock: a NBMemoryPage
page: a NBMemoryBlock( @ 16r70A000, 32768, free)
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
BlockClosure>>cull:
Receiver: [:page |
page length = aMemoryBlock length
ifTrue: [self freePage: page.
^ true].
n...etc...
Arguments and temporary variables:
anArg: a NBMemoryPage
Receiver's instance variables:
outerContext: NBMacExternalHeapManager(NBExternalHeapManager)>>checkForFreePage...etc...
startpc: 41
numArgs: 1
Dictionary>>at:ifPresent:
Receiver: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
Arguments and temporary variables:
key: 7380992
aBlock: [:page |
page length = aMemoryBlock length
ifTrue: [self freePage: p...etc...
assoc: 7380992->a NBMemoryPage
Receiver's instance variables:
tally: 2
array: an Array(nil 100089856->a NBMemoryPage nil nil 24981504->a NBMemoryPage)...etc...
NBMacExternalHeapManager(NBExternalHeapManager)>>checkForFreePage:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
aMemoryBlock: a NBMemoryBlock( @ 16r70A000, 32768, free)
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
NBMemoryBlock>>makeFreeFor:
Receiver: a NBMemoryBlock( @ 16r70A030, 32720, free)
Arguments and temporary variables:
heapManager: a NBMacExternalHeapManager
Receiver's instance variables:
left: a NBMemoryBlock( @ 16r70A000, 32768, free)
right: nil
address: 7381040
length: 32720
free: true
[| block |
block := reservedBlocks
removeKey: address
ifAbsent: [self error: 'Unable to find a memory block with given address'].
block makeFreeFor: self] in NBMacExternalHeapManager(NBExternalHeapManager)>>free:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
address: 7381040
block: a NBMemoryBlock( @ 16r70A030, 32720, free)
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
[caught := true.
self wait.
blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
Receiver: a Semaphore()
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
firstLink: nil
lastLink: nil
excessSignals: 0
BlockClosure>>ensure:
Receiver: [caught := true.
self wait.
blockValue := mutuallyExcludedBlock value]
Arguments and temporary variables:
aBlock: [caught
ifTrue: [self signal]]
complete: nil
returnValue: nil
Receiver's instance variables:
outerContext: Semaphore>>critical:
startpc: 42
numArgs: 0
Semaphore>>critical:
Receiver: a Semaphore()
Arguments and temporary variables:
<<error during printing>
Receiver's instance variables:
firstLink: nil
lastLink: nil
excessSignals: 0
NBMacExternalHeapManager(NBExternalHeapManager)>>free:
Receiver: a NBMacExternalHeapManager
Arguments and temporary variables:
address: 7381040
Receiver's instance variables:
pages: a Dictionary(24981504->a NBMemoryPage 100089856->a NBMemoryPage )
freeBlocks: an IdentitySet(a NBMemoryBlock( @ 16r17D302E, 17, free) a NBMemoryB...etc...
reservedBlocks: a Dictionary(24981504->a NBMemoryBlock( @ 16r17D3000, 38) 24981...etc...
sema: a Semaphore()
--- The full stack ---
NBFFICallout class>>signalError:
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
NBFFICallout class>>cdecl:emitCall:options:
NativeBoostMac32(NativeBoost)>>bootstrapLoadSymbol:ofLength:fromModule:into:
NativeBoostMac32(NativeBoost)>>loadSymbol:fromModule:
NativeBoostMac32(NativeBoostLinux32)>>loadSymbol:fromModule:
NativeBoost class>>loadSymbol:fromModule:
NBMacExternalHeapManager class(Object)>>nbGetSymbolAddress:module:
[:gen |
fnAddress := requestor nbGetSymbolAddress: fnSpec functionName module: aModuleNameOrHandle.
fnAddress
ifNil: [self error: 'function unavailable'].
self optMayGC
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'
during: [aFunctionBodyBlock valueWithPossibleArgs: {self. proxy. asm}.
(self optEmitCall
or: [self optNoCleanup])
ifTrue: [call disableCleanup]]] in NBFFICallout>>generateInstructions:
BlockClosure>>ensure:
AJx86Assembler>>decorateWith:during:
[:call |
self optNoAlignment
ifTrue: [call alignment: 1].
self pushArguments.
coercionMayFail
ifTrue: [proxy ifFailedJumpTo: self failedLabel].
asm
decorateWith: 'FFI: performing a call'
during: [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;
cdecl;
generateCall: functionSpec module: aModuleName] in NBFFICallout class>>cdecl:module:
[bytes := aBlock
value: (self newForMethod: method)] in NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
BlockClosure>>on:do:
NBRecursionDetect class>>in:during:
NBFFICallout class(NBNativeCodeGen class)>>generateCode:andRetry:
NBFFICallout class(NBNativeCodeGen class)>>handleFailureIn:nativeCode:
NBFFICallout class>>cdecl:module:
NBMacExternalHeapManager>>unmap:length:
NBMacExternalHeapManager>>primFreePage:
NBMacExternalHeapManager(NBExternalHeapManager)>>freePage:
[:page |
page length = aMemoryBlock length
ifTrue: [self freePage: page.
^ true].
nil] in NBMacExternalHeapManager(NBExternalHeapManager)>>checkForFreePage:
BlockClosure>>cull:
Dictionary>>at:ifPresent:
NBMacExternalHeapManager(NBExternalHeapManager)>>checkForFreePage:
NBMemoryBlock>>makeFreeFor:
[| block |
block := reservedBlocks
removeKey: address
ifAbsent: [self error: 'Unable to find a memory block with given address'].
block makeFreeFor: self] in NBMacExternalHeapManager(NBExternalHeapManager)>>free:
[caught := true.
self wait.
blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
BlockClosure>>ensure:
Semaphore>>critical:
NBMacExternalHeapManager(NBExternalHeapManager)>>free:
- - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - -
NativeBoostMac32(NativeBoostLinux32)>>free:
NativeBoost class>>free:
NBExternalAddress>>free
[:pointer | pointer value free] in LimboCommand>>freePointers
Set>>do:
LimboCommand>>freePointers
[self freePointers] in LimboCommand>>run
BlockClosure>>ensure:
LimboCommand>>run
Limbo>>run:arguments:
Limbo>>runSh:
Limbo class>>runSh:
[limbo := Limbo runSh: '/bin/echo ' , arg] in LimboTest>>testShellCommandWithNewLines
[aBlock value.
false] in LimboTest(TestCase)>>executeShould:inScopeOf:
BlockClosure>>on:do:
LimboTest(TestCase)>>executeShould:inScopeOf:
LimboTest(TestCase)>>shouldnt:raise:
LimboTest>>testShellCommandWithNewLines
LimboTest(TestCase)>>performTest
[self setUp.
self performTest] in LimboTest(TestCase)>>runCase
BlockClosure>>ensure:
LimboTest(TestCase)>>runCase
[(self class selector: testSelector) runCase] in LimboTest(TestCase)>>debug
BlockClosure>>ensure:
LimboTest(TestCase)>>debug
OBCmdRunTests>>execute
[:each |
(each isActive
and: [each isEnabled])
ifTrue: [each execute.
^ true].
nil] in OBNodeCommandScan(OBCommandScan)>>processKeystroke:withNode:for:
OrderedCollection>>do:
OBNodeCommandScan(OBCommandScan)>>processKeystroke:withNode:for:
[:each |
(scan
processKeystroke: aCharacter asKeystroke
withNode: each
for: self)
ifTrue: [^ self].
nil] in OBColumn>>keystroke:from:
OrderedCollection>>reverseDo:
OBColumn>>keystroke:from:
OBPluggableListMorph(PluggableListMorph)>>modifierKeyPressed:
OBPluggableListMorph(PluggableListMorph)>>keyStroke:
OBPluggableListMorph(Morph)>>handleKeystroke:
KeyboardEvent>>sentTo:
OBPluggableListMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
OBPluggableListMorph(Morph)>>processEvent:using:
OBPluggableListMorph(Morph)>>processEvent:
OBPluggableListMorph(PluggableListMorph)>>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
Nov. 15, 2012
Re: [Pharo-project] yielding to command line
by Igor Stasenko
How about fixing windows VM?
Ugly but should work :)
On 15 November 2012 12:45, Bruni camillo <camillobruni(a)gmail.com> wrote:
> How about forking directly at the beginning, then busy wait in bash for a
> certain file to be created at the end of the st script and only then
> continue.
>
> Ugly but should work
>
> On 15 Nov 2012 16:06, "Tudor Girba" <tudor(a)tudorgirba.com> wrote:
>>
>> Hi,
>>
>> Actually, the reason why I cannot use this solution is that on Windows,
>> when I have a large enough image, I can build it, I can save it even, but I
>> cannot reopen it. Hence my only way around it is to not close it :).
>>
>> Cheers,
>> Doru
>>
>>
>> On 15 Nov 2012, at 14:23, Camillo Bruni <camillobruni(a)gmail.com> wrote:
>>
>> >
>> > On 2012-11-14, at 11:07, Tudor Girba <tudor(a)tudorgirba.com> wrote:
>> >
>> >> Hi,
>> >>
>> >> I have the following requirement:
>> >> - I start an image from the command line with an initial script
>> >> - I want to wait until the Smalltalk script finishes until I can
>> >> continue
>> >> with the command line script
>> >> - But, I do not want to stop the image
>> >>
>> >> I can achieve the first two points by having the image quit at the end.
>> >> Is
>> >> there a way in which I can somehow continue the command line execution
>> >> without stopping the image?
>> >
>> > I don't know the details but if you save+quit your image and immediately
>> > open
>> > it again it will continue where you where before. so the following is
>> > the
>> > closest thing I can come up with
>> >
>> > ./vm.sh Pharo.image st doStuffAndSave.st;
>> > ./vm.sh Pharo.image & # relaunch and fork to background
>> > ./doStuffAfter.sh
>> >
>> > but yeah, that violates your not-image-stop requirement :)
>> >
>>
>> --
>> www.tudorgirba.com
>>
>> "Being happy is a matter of choice."
>>
>>
>>
>>
>
--
Best regards,
Igor Stasenko.
Nov. 15, 2012