Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
October 2011
- 101 participants
- 899 messages
[Pharo-project] Alice Revival toma 3
by Edgar J. De Cleene
Now we have some working....
https://lh6.googleusercontent.com/-hW0kj1zV41A/TowvmrwnNfI/AAAAAAAAALM/4ycnO
7Xw2eM/s720/AliceRevival2.jpg
Class from exported .cs of old FunSqueak was not initialized as should be
and I must do manual work.
Help me, how I could be sure ALL classes of .cs was proper initialized ?
I using the .mdl coming in Cobalt in Avatar folder.
It¹s faire use it ? License issues ?
Edgar
Oct. 5, 2011
Re: [Pharo-project] About Dictionary >> #at:ifAbsentPut:
by Philippe Marschall
On 10/04/2011 12:52 PM, Mariano Martinez Peck wrote:
> Hi guys. If I tell you the selector is Dictionary >> #at:ifAbsentPut: what
> would you expect the second parameter to be?
A block of course, like #at:ifAbsent:
Cheers
Philippe
Oct. 5, 2011
Re: [Pharo-project] About Dictionary >> #at:ifAbsentPut:
by Henrik Sperre Johansen
On 05.10.2011 11:19, Henrik Sperre Johansen wrote:
> On 05.10.2011 01:59, Nicolas Cellier wrote:
>>
>> However, maybe Mariano is searching for tight inner loop optimization
>> (we can only guess, because he didn't tell, he should have).
>> In this case, using ifFalse: is good: because it is inlined by
>> Compiler, it avoids a BlockClosure creation.
>> But above code will cost two lookup in both branch, so it will be
>> pretty bad too, depending on hash evaluation cost and collision rate,
>> in a majority of cases, worse than block creation time.
>>
> You could make at:ifAbsentPut: do single lookup, at the cost of using
> cull: (with the scanned for index) in at:ifAbsent: .
> Sort of restricts what you can pass to at:ifAbsent: though, (not that
> I found any not using a block in a quick scan of senders, nor did my
> image crash)
> and the runtime really didn't improve that much.
Here's the .cs for those interested, btw.
Cheers,
Henry
Oct. 5, 2011
Re: [Pharo-project] About Dictionary >> #at:ifAbsentPut:
by Henrik Sperre Johansen
On 05.10.2011 01:59, Nicolas Cellier wrote:
> 2011/10/5 Michael Roberts<mike(a)mjr104.co.uk>:
>> I find the thread a bit confused in the sense
>>
>> Dictionary *new* at: x ifAbsentPut: y
>>
>> does not make sense (is academic), because the new dictionary will
>> never have x as a key. So why profile it and use that as reasoning?...
>>
>> whereas
>>
>> myDict at:x ifAbsentPut: y
>>
>> is more interesting.
>>
> I guess in some examples, like when you want to serialize an object
> graph with as many nodes as branches (no or few sharing), then the
> case of absence is dominating.
> Knowing that Mariano is working on Fuel, i guess that could have
> biased his judgement.
>
>> In my experience i am biased by the use of the message in the systems
>> that already use it heavily...however it always feels that the use of
>> ifAbsentXX is intentionally deferring some code because it expresses
>> exceptional cases in the application logic. Especially if the block
>> makes an object you don't want to be doing that every time and
>> discarding the result irrespective of the presence of the key. It does
>> not have to be expensive to make, just not good style near any kind of
>> loop.
>>
>> I know some people that actually don't like the ifAbsentPut: []
>> variant. and prefer to be explicit, of the form
>>
>> (myDict includesKey: x) ifFalse: [
>> myDict at: x put: y]
>>
> Both codes are valid. But note that at:ifAbsentPut: will return the
> value, or the newly put value.
> So the exact equivalent is ((myDict includesKey: x)
> ifTrue: [myDict at: x]
> ifFalse: [myDict at: x put: y])
>
> However, maybe Mariano is searching for tight inner loop optimization
> (we can only guess, because he didn't tell, he should have).
> In this case, using ifFalse: is good: because it is inlined by
> Compiler, it avoids a BlockClosure creation.
> But above code will cost two lookup in both branch, so it will be
> pretty bad too, depending on hash evaluation cost and collision rate,
> in a majority of cases, worse than block creation time.
> I would suggest to Mariano to implement in the Dictionary class of his
> choice the single lookup, block free creation code:
>
> at: key ifAbsentPutValue: aValue
> "Answer the value associated with the key.
> if key isn't found, associate it first with aValue."
>
> | index |
> ^((array at: (index := self scanFor: key))
> ifNil: [ array at: index put: (key -> aValue). aValue ]
> ifNotNil: [:value | value]
>
> But, please, please, Mariano, don't change #at:ifAbsentPut:
> As other said, conditional execution is useful both for speed and
> because in Object world, the state can change.
> aBagOfKeys do: [:key | myDict at: key ifAbsentPut: (myStream next)].
> aBagOfKeys do: [:key | myDict at: key ifAbsentPut: [myStream next]].
> won't behave the same if aBagOfKeys has duplicates, will they ?
>
> Last thing, #at:ifAbsentPut: is absolutely decoupled from
> Object>>#value, it does rely on Object>>#value
> So don't throw #at:ifAbsentPut: because you don't like Object>>#value.
> If you don't like it, don't use it, use a BlockClosure instead.
>
> Anyway, thanks to Mariano for these questions, they were biased, but
> not silly, no question is :)
>
> Nicolas
>
You could make at:ifAbsentPut: do single lookup, at the cost of using
cull: (with the scanned for index) in at:ifAbsent: .
Sort of restricts what you can pass to at:ifAbsent: though, (not that I
found any not using a block in a quick scan of senders, nor did my image
crash)
and the runtime really didn't improve that much.
| dict |
dict := Dictionary new: 100000.
[1 to: 100000 do: [: i | "1 scan
(new)" "2 scans (old)"
dict at: i ifAbsentPut: i ]] timeToRun 34 34 48 38 82 34 58 35
33 42 76 57 56 40 40 57 120 48
This is numbers in a presized dictionary though, so the collision rate
might not be representative...
Let me check that with points instead, where the hash computation/lookup
cost is higher...
| dict pts|
dict := Dictionary new: 100000.
pts := (1 to: 100000) collect: [:i | i@i].
[1 to: pts size do: [: ix |
"1 scan (new)"
"2 scans (old)"
dict at: (pts at: ix) ifAbsentPut: ix ]] timeToRun 96 89 89 89 91 143
92 89 96 132 127 144 126 139 126 133 129 127 134
Still not worth it to restrict at:ifAbsent: imho.
Cheers,
Henry
Oct. 5, 2011
[Pharo-project] Alice Revival toma 2
by Edgar J. De Cleene
How to export and load shared pools ?
Here the black art I using for this.
I attach ObjectCompatibleENH.1 which I use for exchange some between Squeak,
Pharo and Cuis.
I like export what I need in Foo.obj form.
In this case the pool
In FunSqueak3.10alpha.7 Workspace type B3DEngineConstants and do inspect or
explore.
Navigate to classPool and inspect the dictionary.
In the code panel type self saveOnFileNamed: 'B3DEngineConstantspool'
Drag and drop the object into the FunSqueakCog4.3-11712-alpha, you see some
asking load object (twice, 3.10 only shows one , why ?)
Accept and you have a inspector on this object.
In the code pane type B3DEngineConstants classPool: self
Presto , your have the values you need and no nil when load the .cs for
first time.
Sure exists nicer ways , so I wish learn.
Edgar
Oct. 5, 2011
Re: [Pharo-project] Too many semaphores, image blocked
by Henrik Sperre Johansen
On 05.10.2011 01:18, Schwab,Wilhelm K wrote:
> Stable as a rock sounds good to me :)
>
> The log you posted contains the string "Not enough space for external objects, set a larger size at startup!" Maybe a command-line switch to the vm will give you more memory and a way to get the image going? Good luck! I have rescued a few Pharo images, mostly ones that I damaged by running two IDEs on Linux :( As much as I don't like doing this, going to a working backup and recovering lost changes works fairly well.
Smalltalk vm maxExternalSemaphoresSilently: aSize would be the line to
include.
If the script passed on a command line is higher in the startuplist than
the InputEventSensor, it would get it working again.
Somehow I doubt it, and a more elaborate approach like what Sean had to do
http://forum.world.st/Oops-I-put-a-halt-in-a-startup-method-td3800163.html
would be necessary to recover.
Cheers,
Henry
Oct. 5, 2011
[Pharo-project] [ANN] Alice Revival
by Edgar J. De Cleene
Folks.
Being here means Smalltalk and not JustTalk
As promised to Enrico , I take seriously the task of have Alice back into
last FunSqueak (what is 4.3 Squeak updated and with some old and new
projects)
As collateral effect, in the end we have some .pr or .sar or
MultimediaMonticello or EdgarElBárbaro thing to load into normal bare
Squeak
As first step I take the fileout of what is working in FunSqueak3.10alpha.7
and you could download from ftp Squeak
Following Levente and Bert advices, fix the .cs just for FunSqueak load it.
You could see the picture of first semi crash here.
https://picasaweb.google.com/104220926719475766294/FunSqueak#565990968875457
8626
I hope you don`t need Google+ for see it, but just in case i invite all who
ask.
And is time to think how to post more as 100k here
I ask to all to share experience and work until the task or Alice Revival
was complete
Yours in Squeak
Edgar
Oct. 5, 2011
Re: [Pharo-project] Too many semaphores, image blocked
by Stéphane Ducasse
On Oct 5, 2011, at 1:18 AM, Schwab,Wilhelm K wrote:
> Stable as a rock sounds good to me :)
>
> The log you posted contains the string "Not enough space for external objects, set a larger size at startup!" Maybe a command-line switch to the vm will give you more memory and a way to get the image going? Good luck! I have rescued a few Pharo images, mostly ones that I damaged by running two IDEs on Linux :( As much as I don't like doing this, going to a working backup and recovering lost changes works fairly well.
>
> Ian Bartholomew's Dolphin Goodies in general, and his Chunk Browser in particular, are excellent tools. The Chunk Browser does a wonderful job of sorting, filtering to most-recent chunks per entity (really useful), etc. Snoop is a great IDE inspector. Ghoul (Chris Uppal's work) creates a debugger-like view from Dolphin's crash dumps. Recent changes to Pharo's profiler are starting to create some of the feel of these excellent tools.
>
do you know a video showing these tools?
especially snoop
> Bill
>
>
> ________________________________________
> From: pharo-project-bounces(a)lists.gforge.inria.fr [pharo-project-bounces(a)lists.gforge.inria.fr] On Behalf Of Janko Mivšek [janko.mivsek(a)eranova.si]
> Sent: Tuesday, October 04, 2011 2:57 PM
> To: Pharo-project(a)lists.gforge.inria.fr
> Subject: [Pharo-project] Too many semaphores, image blocked
>
> Hi guys
>
> I have nonstartable Pharo 1.3 image, is there any way to get it started?
>
> This image was running all the time, being on the net directly (Aida
> based web development image) and snapshoting every hour.
>
> The problem happens at such snapshot, raising Not enough space for
> external objects/too many semaphores error and block. After I killed it,
> snapshoted image is not startable anymore, more exactly: it starts in
> blank window and stays unresponsive.
>
> Is this too many semaphores error related to too many open sockets
> problem we discussed not to long ago?
>
> Any help greatly appreciated. Not to mention finding a bug and removing
> it forever, because Pharo should become stable as a rock, as VW for
> instance is :)
>
> Best regards
> Janko
>
>
> PharoDebug.log:
>
> THERE_BE_DRAGONS_HERE
> Error: Not enough space for external objects, set a larger size at startup!
> 4 October 2011 4:00:01 am
>
> VM: unix - i686 - linux-gnu - Croquet Closure Cog VM [CoInterpreter
> VMMaker-oscog.35]
> Image: Pharo1.3 [Latest update: #13299]
>
> SmalltalkImage(Object)>>error:
> Receiver: Smalltalk
> Arguments and temporary variables:
> aString: 'Not enough space for external objects, set a larger size at
> startup!'...etc...
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> SmalltalkImage>>maxExternalSemaphores:
> Receiver: Smalltalk
> Arguments and temporary variables:
> aSize: 520
> inProduction: false
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> ExternalSemaphoreTable class>>freedSlotsIn:ratherThanIncreaseSizeTo:
> Receiver: ExternalSemaphoreTable
> Arguments and temporary variables:
> externalObjects: an Array(a Semaphore() a Semaphore() a Semaphore() a
> Semaphore...etc...
> newSize: 520
> needToGrow: false
> maxSize: 512
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary()
> format: 2
> instanceVariables: nil
> organization: ('as yet unclassified')
>
> subclasses: nil
> name: #ExternalSemaphoreTable
> classPool: a Dictionary(#ProtectAdd->a Semaphore() #ProtectRemove->a
> Semaphore(...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'System-Support'
> traitComposition: {}
> localSelectors: nil
>
>
> ExternalSemaphoreTable class>>collectionBasedOn:withRoomFor:
> Receiver: ExternalSemaphoreTable
> Arguments and temporary variables:
> externalObjects: an Array(a Semaphore() a Semaphore() a Semaphore() a
> Semaphore...etc...
> anObject: a Semaphore()
> newObjects: nil
> newSize: 520
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary()
> format: 2
> instanceVariables: nil
> organization: ('as yet unclassified')
>
> subclasses: nil
> name: #ExternalSemaphoreTable
> classPool: a Dictionary(#ProtectAdd->a Semaphore() #ProtectRemove->a
> Semaphore(...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'System-Support'
> traitComposition: {}
> localSelectors: nil
>
>
> ExternalSemaphoreTable class>>safelyRegisterExternalObject:
> Receiver: ExternalSemaphoreTable
> Arguments and temporary variables:
> anObject: a Semaphore()
> objects: an Array(a Semaphore() a Semaphore() a Semaphore() a
> Semaphore(a Proce...etc...
> firstEmptyIndex: nil
> obj: nil
> sz: nil
> newObjects: nil
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary()
> format: 2
> instanceVariables: nil
> organization: ('as yet unclassified')
>
> subclasses: nil
> name: #ExternalSemaphoreTable
> classPool: a Dictionary(#ProtectAdd->a Semaphore() #ProtectRemove->a
> Semaphore(...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'System-Support'
> traitComposition: {}
> localSelectors: nil
>
>
> [self safelyRegisterExternalObject: anObject] in ExternalSemaphoreTable
> class>>registerExternalObject:
> Receiver: ExternalSemaphoreTable
> Arguments and temporary variables:
> anObject: a Semaphore()
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary()
> format: 2
> instanceVariables: nil
> organization: ('as yet unclassified')
>
> subclasses: nil
> name: #ExternalSemaphoreTable
> classPool: a Dictionary(#ProtectAdd->a Semaphore() #ProtectRemove->a
> Semaphore(...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'System-Support'
> traitComposition: {}
> localSelectors: nil
>
>
> [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
>
>
> ExternalSemaphoreTable class>>registerExternalObject:
> Receiver: ExternalSemaphoreTable
> Arguments and temporary variables:
> anObject: a Semaphore()
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary()
> format: 2
> instanceVariables: nil
> organization: ('as yet unclassified')
>
> subclasses: nil
> name: #ExternalSemaphoreTable
> classPool: a Dictionary(#ProtectAdd->a Semaphore() #ProtectRemove->a
> Semaphore(...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'System-Support'
> traitComposition: {}
> localSelectors: nil
>
>
> SmalltalkImage>>registerExternalObject:
> Receiver: Smalltalk
> Arguments and temporary variables:
> anObject: a Semaphore()
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> InputEventPollingFetcher(InputEventFetcher)>>startUp
> Receiver: an InputEventPollingFetcher
> Arguments and temporary variables:
>
> Receiver's instance variables:
> eventHandlers: an OrderedCollection(an InputEventSensor an
> UserInterruptHandler...etc...
> fetcherProcess: a Process in [delaySemaphore wait] in Delay>>wait
> inputSemaphore: a Semaphore()
>
>
> InputEventPollingFetcher class(InputEventFetcher class)>>startUp
> Receiver: InputEventPollingFetcher
> Arguments and temporary variables:
>
> Receiver's instance variables:
> superclass: InputEventFetcher
> methodDict: a
> MethodDictionary(#terminateEventLoop->(InputEventPollingFetcher>>...etc...
> format: 136
> instanceVariables: nil
> organization: ('events' waitForInput)
> ('initialize-release' terminateEventLoop)...etc...
> subclasses: nil
> name: #InputEventPollingFetcher
> classPool: a Dictionary(#EventPollDelay->a Delay(10 msecs; 9 msecs
> remaining) )...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'Kernel-Processes'
> traitComposition: {}
> localSelectors: nil
>
>
> InputEventPollingFetcher class(Behavior)>>startUp:
> Receiver: InputEventPollingFetcher
> Arguments and temporary variables:
> resuming: false
> Receiver's instance variables:
> superclass: InputEventFetcher
> methodDict: a
> MethodDictionary(#terminateEventLoop->(InputEventPollingFetcher>>...etc...
> format: 136
> instanceVariables: nil
> organization: ('events' waitForInput)
> ('initialize-release' terminateEventLoop)...etc...
> subclasses: nil
> name: #InputEventPollingFetcher
> classPool: a Dictionary(#EventPollDelay->a Delay(10 msecs; 9 msecs
> remaining) )...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'Kernel-Processes'
> traitComposition: {}
> localSelectors: nil
>
>
> [:name |
> | class |
> class := self
> at: name
> ifAbsent: [].
> class isNil
> ifTrue: [removals add: name]
> ifFalse: [class perform: startUpOrShutDown with: argument]] in
> SmalltalkImage>>send:toClassesNamedIn:with:
> Receiver: Smalltalk
> Arguments and temporary variables:
> startUpOrShutDown: #InputEventPollingFetcher
> argument: #startUp:
> removals: false
> name: an OrderedCollection()
> class: InputEventPollingFetcher
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> OrderedCollection>>do:
> Receiver: an OrderedCollection(#Delay #OSPlatform #DisplayScreen
> #Cursor #InputEventFetcher #Process...etc...
> Arguments and temporary variables:
> aBlock: [:name |
> | class |
> class := self
> at: name
> ifAbsent: [].
> class...etc...
> index: 60
> Receiver's instance variables:
> array: #(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
> nil nil ni...etc...
> firstIndex: 36
> lastIndex: 74
>
>
> SmalltalkImage>>send:toClassesNamedIn:with:
> Receiver: Smalltalk
> Arguments and temporary variables:
> startUpOrShutDown: #startUp:
> startUpOrShutDownList: an OrderedCollection(#Delay #OSPlatform
> #DisplayScreen #...etc...
> argument: false
> removals: an OrderedCollection()
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> SmalltalkImage>>processStartUpList:
> Receiver: Smalltalk
> Arguments and temporary variables:
> resuming: false
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> [self processStartUpList: resuming.
> resuming
> ifTrue: [self recordStartupStamp]] in SmalltalkImage>>snapshot:andQuit:
> Receiver: Smalltalk
> Arguments and temporary variables:
> resuming: false
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> BlockClosure>>ensure:
> Receiver: [self processStartUpList: resuming.
> resuming
> ifTrue: [self recordStartupStamp]]
> Arguments and temporary variables:
> aBlock: [Default := self]
> complete: nil
> returnValue: nil
> Receiver's instance variables:
> outerContext: SmalltalkImage>>snapshot:andQuit:
> startpc: 185
> numArgs: 0
>
>
> MorphicUIManager(UIManager)>>boot:during:
> Receiver: a MorphicUIManager
> Arguments and temporary variables:
> bootingFromDisk: false
> aBlock: [self processStartUpList: resuming.
> resuming
> ifTrue: [self recordSta...etc...
> Receiver's instance variables:
> interactiveParser: nil
>
>
> SmalltalkImage>>snapshot:andQuit:
> Receiver: Smalltalk
> Arguments and temporary variables:
> save: true
> quit: false
> snapshotResult: false
> resuming: false
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> SmalltalkImage>>saveSession
> Receiver: Smalltalk
> Arguments and temporary variables:
>
> Receiver's instance variables:
> globals: a SystemDictionary(lots of globals)
> deferredStartupActions: nil
>
>
> [SmalltalkImage current saveSession] in AIDASite class>>imageSnapshot
> Receiver: AIDASite
> Arguments and temporary variables:
>
> Receiver's instance variables:
> superclass: SwazooSite
> methodDict: a MethodDictionary(size 203)
> format: 156
> instanceVariables: #('style' 'settings' 'systemServices'
> 'userServices' 'timest...etc...
> organization: ('private-serving' activityAnnouncers addAllowHeaderTo:
> addDontCa...etc...
> subclasses: nil
> name: #AIDASite
> classPool: a Dictionary(#Default->an AIDASite #Dialect->#Pharo
> #HourlySnapshot-...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'Aida-Core'
> traitComposition: {}
> localSelectors: nil
>
>
> Time class>>millisecondsToRun:
> Receiver: Time
> Arguments and temporary variables:
> timedBlock: [SmalltalkImage current saveSession]
> initialMilliseconds: 155447683
> Receiver's instance variables:
> superclass: Magnitude
> methodDict: a MethodDictionary(#<->(Time>>#< "a
> CompiledMethod(736624640)") #=-...etc...
> format: 134
> instanceVariables: #('seconds' 'nanos')
> organization: ('ansi protocol' < = duration hash hour hour12 hour24
> meridianAbb...etc...
> subclasses: nil
> name: #Time
> classPool: nil
> sharedPools: an OrderedCollection(ChronologyConstants)
> environment: a SystemDictionary(lots of globals)
> category: #'Kernel-Chronology'
> traitComposition: nil
> localSelectors: nil
>
>
> AIDASite class>>imageSnapshot
> Receiver: AIDASite
> Arguments and temporary variables:
> elapsed: nil
> Receiver's instance variables:
> superclass: SwazooSite
> methodDict: a MethodDictionary(size 203)
> format: 156
> instanceVariables: #('style' 'settings' 'systemServices'
> 'userServices' 'timest...etc...
> organization: ('private-serving' activityAnnouncers addAllowHeaderTo:
> addDontCa...etc...
> subclasses: nil
> name: #AIDASite
> classPool: a Dictionary(#Default->an AIDASite #Dialect->#Pharo
> #HourlySnapshot-...etc...
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #'Aida-Core'
> traitComposition: {}
> localSelectors: nil
>
>
> [AIDASite preImageSnapshot; imageSnapshot] in AIDASite>>initHourlySnapshot
> Receiver: an AIDASite
> Arguments and temporary variables:
>
> Receiver's instance variables:
> enabled: true
> uriPattern: an OrderedCollection(a SiteIdentifier)
> parent: a ServerRootComposite
> children: an OrderedCollection()
> name: 'aidademo'
> serving: true
> style: a WasteStyle
> settings: a Dictionary(#afterLogin->#lastPage
> #contextProcesses->false #countin...etc...
> systemServices: a Dictionary(#Admin->a WebAdmin #Authenticator->a
> DefaultAuthen...etc...
> userServices: a Dictionary(#Blog->a Blog #Repository->a
> WasteRepository #SiteCo...etc...
> timestamps: an IdentityDictionary(#Created->3491250844
> #LastRequest->3494848717...etc...
> counters: an IdentityDictionary(#NewVisitors->a WebCounter
> #NotFound->a WebCoun...etc...
> other: a Dictionary(#activityAnnouncers->a Dictionary() )
>
>
> [self block value] in WebScheduledEvent>>run
> Receiver: a WebScheduledEvent
> Arguments and temporary variables:
>
> Receiver's instance variables:
> parent: a WebScheduler
> timestamp: a SpTimestamp
> period: #hour->0
> method: nil
> object: nil
> block: [AIDASite preImageSnapshot; imageSnapshot]
>
>
> [self value.
> Processor terminateActive] in BlockClosure>>newProcess
> Receiver: [self block value]
> Arguments and temporary variables:
>
> Receiver's instance variables:
> outerContext: WebScheduledEvent>>run
> startpc: 78
> numArgs: 0
>
>
>
> --- The full stack ---
> SmalltalkImage(Object)>>error:
> SmalltalkImage>>maxExternalSemaphores:
> ExternalSemaphoreTable class>>freedSlotsIn:ratherThanIncreaseSizeTo:
> ExternalSemaphoreTable class>>collectionBasedOn:withRoomFor:
> ExternalSemaphoreTable class>>safelyRegisterExternalObject:
> [self safelyRegisterExternalObject: anObject] in ExternalSemaphoreTable
> class>>registerExternalObject:
> [caught := true.
> self wait.
> blockValue := mutuallyExcludedBlock value] in Semaphore>>critical:
> BlockClosure>>ensure:
> Semaphore>>critical:
> ExternalSemaphoreTable class>>registerExternalObject:
> SmalltalkImage>>registerExternalObject:
> InputEventPollingFetcher(InputEventFetcher)>>startUp
> InputEventPollingFetcher class(InputEventFetcher class)>>startUp
> InputEventPollingFetcher class(Behavior)>>startUp:
> [:name |
> | class |
> class := self
> at: name
> ifAbsent: [].
> class isNil
> ifTrue: [removals add: name]
> ifFalse: [class perform: startUpOrShutDown with: argument]] in
> SmalltalkImage>>send:toClassesNamedIn:with:
> OrderedCollection>>do:
> SmalltalkImage>>send:toClassesNamedIn:with:
> SmalltalkImage>>processStartUpList:
> [self processStartUpList: resuming.
> resuming
> ifTrue: [self recordStartupStamp]] in SmalltalkImage>>snapshot:andQuit:
> BlockClosure>>ensure:
> MorphicUIManager(UIManager)>>boot:during:
> SmalltalkImage>>snapshot:andQuit:
> SmalltalkImage>>saveSession
> [SmalltalkImage current saveSession] in AIDASite class>>imageSnapshot
> Time class>>millisecondsToRun:
> AIDASite class>>imageSnapshot
> [AIDASite preImageSnapshot; imageSnapshot] in AIDASite>>initHourlySnapshot
> [self block value] in WebScheduledEvent>>run
> [self value.
> Processor terminateActive] in BlockClosure>>newProcess
> ------------------------------------------------------------
>
>
>
>
> --
> Janko Mivšek
> Aida/Web
> Smalltalk Web Application Server
> http://www.aidaweb.si
>
>
Oct. 5, 2011
Re: [Pharo-project] how to capture pasting in a textmorph
by Marcus Denker
On Oct 4, 2011, at 11:10 PM, Tudor Girba wrote:
> Hi again,
>
> Could anyone point me to how I should go about getting the changes related to changedAction: from Pharo 1.4 to Pharo 1.3?
>
maybe http://code.google.com/p/pharo/issues/detail?id=4646
--
Marcus Denker -- http://marcusdenker.de
Oct. 5, 2011
Re: [Pharo-project] RPackage / Metacello mystery woes
by Stéphane Ducasse
OK how do I produce that?
I do not understand why the method is sent multiple time....
Now I do not understand why the code of Coral refer to RPackage
or petit* or ....
In which version are you trying to load what?
Stef
On Oct 5, 2011, at 12:00 AM, Damien Pollet wrote:
> On 4 October 2011 20:43, Stéphane Ducasse <stephane.ducasse(a)inria.fr> wrote:
>> I do not see why this would be related to RPackage.
>
> I don't know, that's just where things fail. The debuggers don't help
> much because by the time they display, the objects have changed stateâ¦
>
> Camillo had a similar looking problem because of #package: being
> defined in just the wrong place by Coral (for the class creation
> convenience syntax) but he fixed that and there were working builds
> since then.
>
>
>> On Oct 4, 2011, at 8:10 PM, Damien Pollet wrote:
>>
>>> Loading Coral is failing, apparently because something calls
>>> #addMethod: on a Symbol, when it should have been an instance of
>>> RPackageâ¦
>>>
>>> See for instance https://ci.lille.inria.fr/pharo/job/Coral/191/console
>>>
>>> I suspect it's coming from me updating ConfigurationOfCoral, which
>>> indirectly (via PetitParser) depends on
>>> ConfigurationOfRefactoringBrowser. I've seen MC try to load
>>> Refactoring-Tests-Core (lr.54) on top of (MarcusDenker.54), and there
>>> it complains some definitions are not there. If I proceed there, code
>>> seems to load but a bunch of debuggers open at the end, all with a
>>> similar error as the trace above.
>>>
>>> --
>>> Damien Pollet
>>> type less, do more [ | ] http://people.untyped.org/damien.pollet
>>>
>>
>>
>>
>
>
>
> --
> Damien Pollet
> type less, do more [ | ] http://people.untyped.org/damien.pollet
>
Oct. 5, 2011