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
September 2011
- 91 participants
- 1128 messages
Re: [Pharo-project] Announcements/Seaside continuations collision in newer cog vm's
by Henrik Sperre Johansen
On 08.09.2011 21:19, Esteban Lorenzano wrote:
> Hi,
> (yep, I'm copying tree lists because I think is a vm problem, but can be a seaside problem, or a pharo problem)
> (yes, it can be MY problem too... but I don't think so... ;)
>
> I'm having this really, really strange problem (because it was working before, and I do not change anything... so, maybe a change in latest changes on pharo 1.3, the version I'm using, is the cause)...
> This is the problem:
>
> I'm creating an application who sends an announcement, to edit something... this announcement ends in a WAComponent>>#call: message...
>
> The problem is: continuation execution fires a notification (WARenderNotification), and SubscriptionRegistry>>deliver:to: process the announcement this way:
>
> deliver: anAnnouncement to: subs
>
> subs do:
> [:each |
> [each deliver: anAnnouncement]
> "each is always in subs, so error will be due to each being last element.
> So return, nothing more to process"
> ifCurtailed: [self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])]]
>
> ...and curtailedBlock is being executed... and that throws an error.
> This was working on older versions of VM, so maybe this is a recent change?
>
> this error was confirmed in my builds, and also in latest Eliot build. Also... is confirmed NOT being there in older cogs or interpret
>
>
> and btw...
>
> self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])
>
> shouldn't be
>
> self deliver: anAnnouncement to: ([Array with: (subs after: each)] on: NotFound do: [^self])
>
> (because #deliver:to: is expecting a collection, not a registry?
>
> thanks,
> Esteban
subs is a collection.
after: returns a collection of the elements after each, or raises a
NotFound error if the subscriber was the last one.
If the one which was curtailed was the last one (and an error is
raised), we don't need to handle delivering anything else, and thus
simply return self.
At least that's how it's supposed to work...
What kind of error is thrown?
Cheers,
Henry
Sept. 8, 2011
[Pharo-project] small clarification
by Esteban Lorenzano
the problem I reported just a minute ago is happening also on older cogs... just not in interpreter.
cheers,
Esteban
Sept. 8, 2011
[Pharo-project] Announcements/Seaside continuations collision in newer cog vm's
by Esteban Lorenzano
Hi,
(yep, I'm copying tree lists because I think is a vm problem, but can be a seaside problem, or a pharo problem)
(yes, it can be MY problem too... but I don't think so... ;)
I'm having this really, really strange problem (because it was working before, and I do not change anything... so, maybe a change in latest changes on pharo 1.3, the version I'm using, is the cause)...
This is the problem:
I'm creating an application who sends an announcement, to edit something... this announcement ends in a WAComponent>>#call: message...
The problem is: continuation execution fires a notification (WARenderNotification), and SubscriptionRegistry>>deliver:to: process the announcement this way:
deliver: anAnnouncement to: subs
subs do:
[:each |
[each deliver: anAnnouncement]
"each is always in subs, so error will be due to each being last element.
So return, nothing more to process"
ifCurtailed: [self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])]]
...and curtailedBlock is being executed... and that throws an error.
This was working on older versions of VM, so maybe this is a recent change?
this error was confirmed in my builds, and also in latest Eliot build. Also... is confirmed NOT being there in older cogs or interpret
and btw...
self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])
shouldn't be
self deliver: anAnnouncement to: ([Array with: (subs after: each)] on: NotFound do: [^self])
(because #deliver:to: is expecting a collection, not a registry?
thanks,
Esteban
Sept. 8, 2011
[Pharo-project] Announcements/Seaside continuations collision in newer cog vm's
by Esteban Lorenzano
Hi,
(yep, I'm copying tree lists because I think is a vm problem, but can be a seaside problem, or a pharo problem)
(yes, it can be MY problem too... but I don't think so... ;)
I'm having this really, really strange problem (because it was working before, and I do not change anything... so, maybe a change in latest changes on pharo 1.3, the version I'm using, is the cause)...
This is the problem:
I'm creating an application who sends an announcement, to edit something... this announcement ends in a WAComponent>>#call: message...
The problem is: continuation execution fires a notification (WARenderNotification), and SubscriptionRegistry>>deliver:to: process the announcement this way:
deliver: anAnnouncement to: subs
subs do:
[:each |
[each deliver: anAnnouncement]
"each is always in subs, so error will be due to each being last element.
So return, nothing more to process"
ifCurtailed: [self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])]]
...and curtailedBlock is being executed... and that throws an error.
This was working on older versions of VM, so maybe this is a recent change?
this error was confirmed in my builds, and also in latest Eliot build. Also... is confirmed NOT being there in older cogs or interpreter.
and btw...
self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])
shouldn't be
self deliver: anAnnouncement to: ([Array with: (subs after: each)] on: NotFound do: [^self])
because #deliver:to: is expecting a collection, not a registry?
thanks,
Esteban
Sept. 8, 2011
Re: [Pharo-project] Debugger bug fix 1
by Henrik Sperre Johansen
On 08.09.2011 19:39, Eliot Miranda wrote:
> Hmmm, let me correct the comment in findNearbyBinaryIndex:. Find
> attached.
>
> On Thu, Sep 8, 2011 at 10:34 AM, Eliot Miranda
> <eliot.miranda(a)gmail.com <mailto:eliot.miranda@gmail.com>> wrote:
>
> Hi Henrik, Mike,
>
> On Thu, Sep 8, 2011 at 8:02 AM, Henrik Sperre Johansen
> <henrik.s.johansen(a)veloxit.no
> <mailto:henrik.s.johansen@veloxit.no>> wrote:
>
> On 08.09.2011 14:37, Michael Roberts wrote:
>
> So I found the bug with the first assignment. It is caused
> by a difference between squeak and Pharo in
> SortedCollection. (on my phone so will be brief)
>
> In Pharo the debugger map collection gets sorted and asked
> for an index for a given pc. It is supposed to answer 1
> because there is no match and it is expected to be the
> first index for insertion. However when the
> asSortedCollection gets done the internal start index of
> the collection is 2. This manifests the bug. 2 is answered
> as the insertion position but this is a value internal to
> the collection.
>
> Squeak does not have this bug because it forces a reset of
> the start index to 1. Hope that makes sense. I don't know
> what the correct fix is. We copy the reset:1 type code to
> force the collection to have start from 1 property. We
> check semantics of index for insertion. Is it the position
> of the element of index relative to pointers? Or we change
> the debugger to calculate the offset (but this feels wrong)
>
> So this is an opportunity for some test cases and fixes
> around sorted collection if we know what the correct
> semantics are. This leak of '2' out of the collection is
> only wrong if 2 is a valid state. If that makes sense...
>
> Cheers
> Mike
>
>
> Mike, thanks for your careful search!
>
> Hum, indexForInserting: is _supposed_ to answer the internal
> index...
> Depending on the startIndex being 1 for doing the correct at:
> later is just wrong.
> Squeak potentially has the same highlight bug for different
> methds, as insert:before: used when converting to
> SortedCollection in no way ensures startIndex remains 1 just
> because it started as it.
>
>
> This is an ancient bug. I copied the code from Debugger and it's
> been there since at least Smalltalk-80 V2:
>
> !Debugger methodsFor: 'pc selection'!
> pcRange
> "Answer the indices in the source code for the method
> corresponding
> to the selected context's program counter value."
>
> | i methodNode pc end |
> (HighlightPC and: [context ~~ nil])
> ifFalse: [^1 to: 0].
> (sourceMap == nil or: [sourceMap size = 0])
> ifTrue: [^1 to: 0].
> pc_ context pc -
> ((context == processHandle topContext and: [processHandle
> interrupted])
> ifTrue: [1]
> ifFalse: [2]).
> i _ sourceMap indexForInserting: (Association key: pc value: nil).
> i < 1 ifTrue: [^1 to: 0].
> i > sourceMap size
> ifTrue:
> [end _ sourceMap inject: 0 into:
> [:prev :this | prev max: this value last].
> ^ end+1 to: end].
> ^(sourceMap at: i) value! !
>
> In Smalltalk-80 V2 indexForInserting: is also private, but like
> Squeak it "just works" since firstIndex is 1 in this context. So
> either take your approach or add a non-private accessor to
> SortedCollection than answers an external index. Personally I like
> the external accessor, since findBinary: doesn't quite do what we
> want. In my Qwaq-derived image Josh Gargus contributed
> findNearbyBinaryIndex: which is nearly what we want:
>
>
> !SequenceableCollection methodsFor: 'enumerating' stamp: 'jcg
> 1/27/2009 18:32'!
> findNearbyBinaryIndex: aBlock
> "Search for an element in the receiver using binary search.
> The argument aBlock is a one-element block returning
> 0 - if the element is the one searched for
> <0- if the search should continue in the first half
> >0- if the search should continue in the second half
> If no matching element is found, answer the closest index we could
> find."
> | index low high test |
> low := 1.
> high := self size.
> [index := high + low // 2.
> low > high] whileFalse:[
> test := aBlock value: (self at: index).
> test = 0
> ifTrue:[^index]
> ifFalse:[test > 0
> ifTrue: [low := index + 1]
> ifFalse: [high := index - 1]]].
> ^index! !
>
> but it doesn't answer an index > size when the searched for
> element should be past the end.
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 0 - arg ] 0
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 24 - arg ] 7
>
> I think it should read
> !SequenceableCollection methodsFor: 'enumerating' stamp: 'eem
> 9/8/2011 10:23'!
> findNearbyBinaryIndex: aBlock
> "Search for an element in the receiver using binary search.
> The argument aBlock is a one-element block returning
> 0 - if the element is the one searched for
> <0- if the search should continue in the first half
> >0- if the search should continue in the second half
> If no matching element is found, answer the closest index we could
> find."
> | index low high test |
> low := 1.
> high := self size.
> [index := high + low // 2.
> low > high] whileFalse:[
> test := aBlock value: (self at: index).
> test = 0
> ifTrue:[^index]
> ifFalse:[test > 0
> ifTrue: [low := index + 1]
> ifFalse: [high := index - 1]]].
> ^index = self size ifTrue: [index + 1] ifFalse: [index]! !
>
> and then
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 0 - arg ] 0
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 24 - arg ] 8
>
> and then the debugger method uses simply
>
> i := sortedSourceMap findNearbyBinaryIndex: [:assoc| pc - assoc key].
>
> in place of
>
> i := sortedSourceMap indexForInserting: (pc -> nil)].
>
> Find attached. I'll add this to Squeak trunk.
>
That certainly works!
While we're at it though, why not try to improve the code abit as well?
A couple of suggestions:
- Readability of first part could benefit from refactoring into a
separate method:
DebuggerMethodMap>> #abstractPCFor: aConcretePC when:
contextIsActiveContext
"If the context is the actve context (is at the hot end of the stack)
then its pc is the current pc. But if the context isn't, because it is
suspended sending a message, then its current pc is the previous pc"
^self method abstractPCForConcretePC:
(contextIsActiveContext ifTrue: [contextsConcretePC]
ifFalse: [(self method
pcPreviousTo: contextsConcretePC) ifNil: [contextsConcretePC]].
- The range interval will be invalid whether it's up front or behind,
does it really matter if it's invalid from 1 to 0 or from end +1 to end?
If it's only used for highlighting, neither will result in anything
actually being highlighted.
Then, we could still use findBinary, I like your pc - assoc key better:
^self abstractSourceMap at: pc ifAbsent:
[(self sortedSourceMap findBinary: [:assoc | pc - assoc key ]
ifAbsent: [nil -> (1 to: 0)]) value]
- And of course:
>> #sortedSourceMap
^sortedSourceMap ifNil: [sortedSourceMap := self abstractSourceMap
associations sorted]
- So we end up with:
DebuggerMethodMap>>rangeForPC:contextIsActiveContext: (in category
'source mapping') -----
rangeForPC: concretePC contextIsActiveContext: contextIsActive
"Answer the indices in the source code for the supplied pc."
| pc |
pc := self abstractPCFor: concretePC when: contextIsActive.
^self abstractSourceMap at: pc ifAbsent:
[(self sortedSourceMap findBinary: [:assoc | pc - assoc key ]
ifAbsent: [nil -> (1 to: 0)]) value]
Which (at least to me) is quite a bit easier to read... Nested ifAbsent:
calls still ain't very pretty, but hey.
Cheers,
Henry
Sept. 8, 2011
Re: [Pharo-project] 1.3 OneCick with Cog VM
by John Toohey
Great, please let me know if I can do anything to help out.
On Thu, Sep 8, 2011 at 13:41, Sven Van Caekenberghe <sven(a)beta9.be> wrote:
> Hey John,
>
> Yes there seems to be a problem.
> I will try to investigate as soon as possible but I won't have time tonight, at earliest tomorrow morning EU time.
> Sorry for the inconvenience.
>
> Sven
>
> On 08 Sep 2011, at 19:25, John Toohey wrote:
>
>> Just tried it on Linux, and its the same. MC cannot read my source
>> repos. This is a little scary.
>>
>> On Thu, Sep 8, 2011 at 12:44, John Toohey <jt(a)parspro.com> wrote:
>>> If it helps I can give access to the code repo, and anyone can then
>>> reproduce the bug.
>>>
>>> On Thu, Sep 8, 2011 at 11:55, John Toohey <jt(a)parspro.com> wrote:
>>>> Bug tracker tells me that my comment is too long! Anyhow here is what
>>>> I tried to post. Would love a solution as all my sources code is now
>>>> locked out of Pharo.
>>>>
>>>> Pharo image: Pharo 1.3
>>>> Pharo core version: Latest update: #13298
>>>> Virtual machine used: 1.3 One-Click with Cog
>>>> Description
>>>>
>>>> When I open MC and create a package for my code, I get an "Illegal
>>>> UTF-8 encoding" error when I try to open any of my packages.
>>>>
>>>> 8 September 2011 11:49:57 am
>>>>
>>>> VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter
>>>> VMMaker-oscog.54] Pharo Development 1.1
>>>> Image: Pharo1.3 [Latest update: #13298]
>>>>
>>>> ZnUTF8Encoder(Object)>>error:
>>>> Â Â Â Â Receiver: a ZnUTF8Encoder
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aString: Â Â Â Â 'illegal UTF-8 encoding'
>>>> Â Â Â Â Receiver's instance variables:
>>>> a ZnUTF8Encoder
>>>>
>>>> [| nextByte | ((nextByte := stream next) bitAnd: 192)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â = 128
>>>> Â Â Â Â Â Â Â Â ifTrue: [code := (code bitShift: 6)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â + (nextByte bitAnd: 63)]
>>>> Â Â Â Â Â Â Â Â ifFalse: [self error: 'illegal UTF-8 encoding']] in
>>>> ZnUTF8Encoder>>nextFromStream:
>>>> Â Â Â Â Receiver: a ZnUTF8Encoder
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â a ZnLimitedReadStream
>>>> Â Â Â Â Â Â Â Â code: Â #(26)
>>>> Â Â Â Â Â Â Â Â nextByte: Â Â Â 94
>>>> Â Â Â Â Receiver's instance variables:
>>>> a ZnUTF8Encoder
>>>>
>>>> ZnUTF8Encoder>>nextFromStream:
>>>> Â Â Â Â Receiver: a ZnUTF8Encoder
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â a ZnLimitedReadStream
>>>> Â Â Â Â Â Â Â Â byte: Â 218
>>>> Â Â Â Â Â Â Â Â next: Â [| nextByte | ((nextByte := stream next) bitAnd: 192)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â = 128
>>>> Â Â Â Â Â Â Â Â ifTrue: ...etc...
>>>> Â Â Â Â Â Â Â Â code: Â #(26)
>>>> Â Â Â Â Receiver's instance variables:
>>>> a ZnUTF8Encoder
>>>>
>>>> [:stringStream |
>>>> [readStream atEnd]
>>>> Â Â Â Â Â Â Â Â whileFalse: [stringStream
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nextPut: (encoder nextFromStream: readStream)].
>>>> Â Â Â Â nil] in ZnStringEntity>>readLimitedFrom:
>>>> Â Â Â Â Receiver: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â readStream: Â Â a WriteStream 'PK Â Â '
>>>> Â Â Â Â Â Â Â Â stringStream: Â a ZnLimitedReadStream
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â contentType: Â Â text/plain;charset=UTF-8
>>>> Â Â Â Â Â Â Â Â contentLength: Â 9025
>>>> Â Â Â Â Â Â Â Â string: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â encoder: Â Â Â Â a ZnUTF8Encoder
>>>>
>>>> String class(SequenceableCollection class)>>new:streamContents:
>>>> Â Â Â Â Receiver: String
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â newSize: Â Â Â Â 100
>>>> Â Â Â Â Â Â Â Â blockWithArg: Â [:stringStream |
>>>> [readStream atEnd]
>>>> Â Â Â Â Â Â Â Â whileFalse: [stringStream
>>>> ...etc...
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â a WriteStream 'PK Â Â '
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â ArrayedCollection
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary(size 267)
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 2
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â organization: Â ('*Compiler-Kernel' inviolateInstanceVariableNames
>>>> isLegalInstVar...etc...
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â {ByteString. WideString. Symbol}
>>>> Â Â Â Â Â Â Â Â name: Â #String
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â a Dictionary(#AsciiOrder->#[0 1 2 3 4 5 6 7 8 9 10 11 12
>>>> 13 14 15 16...etc...
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Collections-Strings'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> String class(SequenceableCollection class)>>streamContents:
>>>> Â Â Â Â Receiver: String
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â blockWithArg: Â [:stringStream |
>>>> [readStream atEnd]
>>>> Â Â Â Â Â Â Â Â whileFalse: [stringStream
>>>> ...etc...
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â ArrayedCollection
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary(size 267)
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 2
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â organization: Â ('*Compiler-Kernel' inviolateInstanceVariableNames
>>>> isLegalInstVar...etc...
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â {ByteString. WideString. Symbol}
>>>> Â Â Â Â Â Â Â Â name: Â #String
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â a Dictionary(#AsciiOrder->#[0 1 2 3 4 5 6 7 8 9 10 11 12
>>>> 13 14 15 16...etc...
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Collections-Strings'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> ZnStringEntity>>readLimitedFrom:
>>>> Â Â Â Â Receiver: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Â Â Â Â readStream: Â Â a ZnLimitedReadStream
>>>> Â Â Â Â Â Â Â Â newString: Â Â Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â contentType: Â Â text/plain;charset=UTF-8
>>>> Â Â Â Â Â Â Â Â contentLength: Â 9025
>>>> Â Â Â Â Â Â Â Â string: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â encoder: Â Â Â Â a ZnUTF8Encoder
>>>>
>>>> ZnStringEntity>>readFrom:
>>>> Â Â Â Â Receiver: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â contentType: Â Â text/plain;charset=UTF-8
>>>> Â Â Â Â Â Â Â Â contentLength: Â 9025
>>>> Â Â Â Â Â Â Â Â string: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â encoder: Â Â Â Â a ZnUTF8Encoder
>>>>
>>>> ZnEntity class>>readFrom:usingType:andLength:
>>>> Â Â Â Â Receiver: ZnEntity
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Â Â Â Â mimeType: Â Â Â text/plain;charset=UTF-8
>>>> Â Â Â Â Â Â Â Â length: Â Â Â Â 9025
>>>> Â Â Â Â Â Â Â Â newEntity: Â Â Â a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Object
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a
>>>> MethodDictionary(#contentLength->(ZnEntity>>#contentLength "a
>>>> Com...etc...
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 134
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('contentType' 'contentLength')
>>>> Â Â Â Â Â Â Â Â organization: Â ('accessing' contentLength contentLength: contentType
>>>> contentType...etc...
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â {ZnApplicationFormUrlEncodedEntity. ZnByteArrayEntity.
>>>> ZnMultiPartF...etc...
>>>> Â Â Â Â Â Â Â Â name: Â #ZnEntity
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Zinc-HTTP-Core'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> ZnEntityReader>>readEntityFromStream
>>>> Â Â Â Â Receiver: a ZnEntityReader
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â entity: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â decodedEntityLength: Â Â 9025
>>>> Â Â Â Â Â Â Â Â chunkedStream: Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â headers: Â Â Â Â a ZnHeaders('Accept-Ranges'->'bytes'
>>>> 'Cache-Control'->'max-age=-543414...etc...
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Â Â Â Â streaming: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â allowReadingUpToEnd: Â Â true
>>>>
>>>> ZnEntityReader>>readEntity
>>>> Â Â Â Â Receiver: a ZnEntityReader
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â entity: Â Â Â Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â headers: Â Â Â Â a ZnHeaders('Accept-Ranges'->'bytes'
>>>> 'Cache-Control'->'max-age=-543414...etc...
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Â Â Â Â streaming: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â allowReadingUpToEnd: Â Â true
>>>>
>>>> ZnResponse(ZnMessage)>>readFrom:
>>>> Â Â Â Â Receiver: a ZnResponse(200 OK)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â headers: Â Â Â Â a ZnHeaders('Accept-Ranges'->'bytes'
>>>> 'Cache-Control'->'max-age=-543414...etc...
>>>> Â Â Â Â Â Â Â Â entity: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â statusLine: Â Â a ZnStatusLine(200 OK)
>>>>
>>>> ZnResponse class(ZnMessage class)>>readFrom:
>>>> Â Â Â Â Receiver: ZnResponse
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â ZnMessage
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a
>>>> MethodDictionary(#addCookie:->(ZnResponse>>#addCookie: "a
>>>> Compile...etc...
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 136
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('statusLine')
>>>> Â Â Â Â Â Â Â Â organization: Â ('accessing' addCookie: code location location:
>>>> setKeepAliveFor: ...etc...
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #ZnResponse
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Zinc-HTTP-Core'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> ZnClient class>>execute:on:
>>>> Â Â Â Â Receiver: ZnClient
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â request: Â Â Â Â a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Object
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 2
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #ZnClient
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Zinc-HTTP-Client-Server'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> [ZnClient execute: request on: stream] in ZnHTTPSocketFacade class>>execute:on:
>>>> Â Â Â Â Receiver: ZnHTTPSocketFacade
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â request: Â Â Â Â a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Object
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 2
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #ZnHTTPSocketFacade
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Zinc-HTTP-Client-Server'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> BlockClosure>>ensure:
>>>> Â Â Â Â Receiver: [ZnClient execute: request on: stream]
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [stream close]
>>>> Â Â Â Â Â Â Â Â complete: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â returnValue: Â Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â outerContext: Â ZnHTTPSocketFacade class>>execute:on:
>>>> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 42
>>>> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>>>>
>>>> ZnHTTPSocketFacade class>>execute:on:
>>>> Â Â Â Â Receiver: ZnHTTPSocketFacade
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â request: Â Â Â Â a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Object
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 2
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #ZnHTTPSocketFacade
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Zinc-HTTP-Client-Server'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> ZnHTTPSocketFacade class>>httpGet:args:user:passwd:
>>>> Â Â Â Â Receiver: ZnHTTPSocketFacade
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â urlObject: Â Â Â 'http://git.parspro.com/mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz...etc...
>>>> Â Â Â Â Â Â Â Â queryArguments: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â username: Â Â Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â url: Â Â http://git.parspro.com/mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz
>>>> Â Â Â Â Â Â Â Â stream: Â Â Â Â SocketStream[inbuf:4kb/outbuf:4kb]
>>>> Â Â Â Â Â Â Â Â request: Â Â Â Â a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>>> Â Â Â Â Â Â Â Â response: Â Â Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Object
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 2
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #ZnHTTPSocketFacade
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Zinc-HTTP-Client-Server'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â {}
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> HTTPSocket class>>httpGet:args:user:passwd:
>>>> Â Â Â Â Receiver: HTTPSocket
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â url: Â Â 'http://git.parspro.com/mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â queryArguments: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â username: Â Â Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Socket
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a
>>>> MethodDictionary(#contentType->(HTTPSocket>>#contentType "a
>>>> Compi...etc...
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 144
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('headerTokens' 'headers' 'responseCode')
>>>> Â Â Â Â Â Â Â Â organization: Â ('accessing' contentType contentType: contentsLength:
>>>> getHeader: ...etc...
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #HTTPSocket
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â a Dictionary(#HTTPBlabEmail->''
>>>> #HTTPProxyCredentials->'' #HTTPProxy...etc...
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'Network-Protocols'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> [contents := HTTPSocket
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â httpGet: (self urlForFileNamed: aString)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â args: nil
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â user: self user
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â passwd: self password] in MCHttpRepository>>readStreamForFileNamed:do:
>>>> Â Â Â Â Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aString: Â Â Â Â 'JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â contents: Â Â Â #(nil)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â creationTemplate: Â Â Â 'MCHttpRepository
>>>> Â Â Â Â location: ''http://git.parspro.com/mc''
>>>> Â Â Â Â u...etc...
>>>> Â Â Â Â Â Â Â Â storeDiffs: Â Â nil
>>>> Â Â Â Â Â Â Â Â cache: Â a Dictionary()
>>>> Â Â Â Â Â Â Â Â allFileNames: Â nil
>>>> Â Â Â Â Â Â Â Â location: Â Â Â 'http://git.parspro.com/mc'
>>>> Â Â Â Â Â Â Â Â user: Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â readerCache: Â Â a Dictionary()
>>>>
>>>> [workBlock value] in [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex total
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNil: [true]
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [ex amount == nil])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [ex total = ex amount])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nextUpdateTime := Time millisecondClockValue + 100]].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in MCHttpRepository>>displayProgress:during:
>>>> Â Â Â Â Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [contents := HTTPSocket
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â httpGet: (self urlForFileNamed: aString)...etc...
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â creationTemplate: Â Â Â 'MCHttpRepository
>>>> Â Â Â Â location: ''http://git.parspro.com/mc''
>>>> Â Â Â Â u...etc...
>>>> Â Â Â Â Â Â Â Â storeDiffs: Â Â nil
>>>> Â Â Â Â Â Â Â Â cache: Â a Dictionary()
>>>> Â Â Â Â Â Â Â Â allFileNames: Â nil
>>>> Â Â Â Â Â Â Â Â location: Â Â Â 'http://git.parspro.com/mc'
>>>> Â Â Â Â Â Â Â Â user: Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â readerCache: Â Â a Dictionary()
>>>>
>>>> BlockClosure>>on:do:
>>>> Â Â Â Â Receiver: [workBlock value]
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â exception: Â Â Â HTTPProgress
>>>> Â Â Â Â Â Â Â Â handlerAction: Â [:ex |
>>>> (ex total
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ifNil: [true]
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [ex amount == ni...etc...
>>>> Â Â Â Â Â Â Â Â handlerActive: Â true
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â outerContext: Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex...etc...
>>>> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 114
>>>> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>>>>
>>>> [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex total
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNil: [true]
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [ex amount == nil])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [ex total = ex amount])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nextUpdateTime := Time millisecondClockValue + 100]].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in MCHttpRepository>>displayProgress:during:
>>>> Â Â Â Â Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:barValArg |
>>>> | barVal return newBarSize |
>>>> barVal := barValArg.
>>>> Â Â Â Â re...etc...
>>>> Â Â Â Â Â Â Â Â nextUpdateTime: Â Â Â Â [contents := HTTPSocket
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â httpGet: (self urlForFileNamed: aSt...etc...
>>>> Â Â Â Â Â Â Â Â bar: Â Â #(0)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â creationTemplate: Â Â Â 'MCHttpRepository
>>>> Â Â Â Â location: ''http://git.parspro.com/mc''
>>>> Â Â Â Â u...etc...
>>>> Â Â Â Â Â Â Â Â storeDiffs: Â Â nil
>>>> Â Â Â Â Â Â Â Â cache: Â a Dictionary()
>>>> Â Â Â Â Â Â Â Â allFileNames: Â nil
>>>> Â Â Â Â Â Â Â Â location: Â Â Â 'http://git.parspro.com/mc'
>>>> Â Â Â Â Â Â Â Â user: Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â readerCache: Â Â a Dictionary()
>>>>
>>>> [result := workBlock value: progress] in [[result := workBlock value: progress]
>>>> Â Â Â Â Â Â Â Â on: ProgressNotification
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex extraParam isString
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>>> ex extraParam].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â progress: Â Â Â [:barValArg |
>>>> | barVal return newBarSize |
>>>> barVal := barValArg.
>>>> Â Â Â Â ret...etc...
>>>> Â Â Â Â Â Â Â Â result: Â Â Â Â #(nil)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â messageText: Â Â nil
>>>> Â Â Â Â Â Â Â Â tag: Â Â nil
>>>> Â Â Â Â Â Â Â Â signaler: Â Â Â a MorphicUIManager
>>>> Â Â Â Â Â Â Â Â signalContext: Â ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Â Â Â Â handlerContext: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â outerContext: Â nil
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â progressTitle: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>>
>>>> BlockClosure>>on:do:
>>>> Â Â Â Â Receiver: [result := workBlock value: progress]
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â exception: Â Â Â ProgressNotification
>>>> Â Â Â Â Â Â Â Â handlerAction: Â [:ex |
>>>> ex extraParam isString
>>>> Â Â Â Â Â Â Â Â ifTrue: [SystemProgressMorph un...etc...
>>>> Â Â Â Â Â Â Â Â handlerActive: Â true
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â outerContext: Â [[result := workBlock value: progress]
>>>> Â Â Â Â Â Â Â Â on: ProgressNotification...etc...
>>>> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 87
>>>> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>>>>
>>>> [[result := workBlock value: progress]
>>>> Â Â Â Â Â Â Â Â on: ProgressNotification
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex extraParam isString
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>>> ex extraParam].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â progress: Â Â Â [:barValArg |
>>>> | barVal return newBarSize |
>>>> barVal := barValArg.
>>>> Â Â Â Â ret...etc...
>>>> Â Â Â Â Â Â Â Â result: Â Â Â Â #(nil)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â messageText: Â Â nil
>>>> Â Â Â Â Â Â Â Â tag: Â Â nil
>>>> Â Â Â Â Â Â Â Â signaler: Â Â Â a MorphicUIManager
>>>> Â Â Â Â Â Â Â Â signalContext: Â ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Â Â Â Â handlerContext: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â outerContext: Â nil
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â progressTitle: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>>
>>>> BlockClosure>>ensure:
>>>> Â Â Â Â Receiver: [[result := workBlock value: progress]
>>>> Â Â Â Â Â Â Â Â on: ProgressNotification
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex extr...etc...
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [SystemProgressMorph close: progress]
>>>> Â Â Â Â Â Â Â Â complete: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â returnValue: Â Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â outerContext: Â ProgressInitiationException>>defaultMorphicAction
>>>> Â Â Â Â Â Â Â Â startpc: Â Â Â Â 81
>>>> Â Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>>>>
>>>> ProgressInitiationException>>defaultMorphicAction
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â progress: Â Â Â [:barValArg |
>>>> | barVal return newBarSize |
>>>> barVal := barValArg.
>>>> Â Â Â Â ret...etc...
>>>> Â Â Â Â Â Â Â Â result: Â Â Â Â #(nil)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â messageText: Â Â nil
>>>> Â Â Â Â Â Â Â Â tag: Â Â nil
>>>> Â Â Â Â Â Â Â Â signaler: Â Â Â a MorphicUIManager
>>>> Â Â Â Â Â Â Â Â signalContext: Â ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Â Â Â Â handlerContext: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â outerContext: Â nil
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â progressTitle: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>>
>>>> MorphicUIManager>>progressInitiationExceptionDefaultAction:
>>>> Â Â Â Â Receiver: a MorphicUIManager
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â anException: Â Â ProgressInitiationException
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â interactiveParser: Â Â Â nil
>>>>
>>>> ProgressInitiationException>>defaultAction
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>>
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â messageText: Â Â nil
>>>> Â Â Â Â Â Â Â Â tag: Â Â nil
>>>> Â Â Â Â Â Â Â Â signaler: Â Â Â a MorphicUIManager
>>>> Â Â Â Â Â Â Â Â signalContext: Â ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Â Â Â Â handlerContext: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â outerContext: Â nil
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â progressTitle: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>>
>>>> UndefinedObject>>handleSignal:
>>>> Â Â Â Â Receiver: nil
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â exception: Â Â Â ProgressInitiationException
>>>> Â Â Â Â Receiver's instance variables:
>>>> nil
>>>>
>>>> MethodContext(ContextPart)>>handleSignal:
>>>> Â Â Â Â Receiver: BlockClosure>>on:do:
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â exception: Â Â Â ProgressInitiationException
>>>> Â Â Â Â Â Â Â Â val: Â Â nil
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â sender: Â Â Â Â PasteUpMorph>>becomeActiveDuring:
>>>> Â Â Â Â Â Â Â Â pc: Â Â 17
>>>> Â Â Â Â Â Â Â Â stackp: Â Â Â Â 3
>>>> Â Â Â Â Â Â Â Â method: Â Â Â Â (BlockClosure>>#on:do: "a CompiledMethod(137625600)")
>>>> Â Â Â Â Â Â Â Â closureOrNil: Â nil
>>>> Â Â Â Â Â Â Â Â receiver: Â Â Â [aBlock value]
>>>>
>>>> ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>>
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â messageText: Â Â nil
>>>> Â Â Â Â Â Â Â Â tag: Â Â nil
>>>> Â Â Â Â Â Â Â Â signaler: Â Â Â a MorphicUIManager
>>>> Â Â Â Â Â Â Â Â signalContext: Â ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Â Â Â Â handlerContext: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â outerContext: Â nil
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â progressTitle: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>>
>>>> ProgressInitiationException>>display:at:from:to:during:
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â argString: Â Â Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â argPoint: Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â argMinVal: Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â argMaxVal: Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â argWorkBlock: Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex...etc...
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â messageText: Â Â nil
>>>> Â Â Â Â Â Â Â Â tag: Â Â nil
>>>> Â Â Â Â Â Â Â Â signaler: Â Â Â a MorphicUIManager
>>>> Â Â Â Â Â Â Â Â signalContext: Â ProgressInitiationException(Exception)>>signal
>>>> Â Â Â Â Â Â Â Â handlerContext: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â Â outerContext: Â nil
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â progressTitle: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>>
>>>> ProgressInitiationException class>>display:at:from:to:during:
>>>> Â Â Â Â Receiver: ProgressInitiationException
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aString: Â Â Â Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â superclass: Â Â Exception
>>>> Â Â Â Â Â Â Â Â methodDict: Â Â a
>>>> MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc...
>>>> Â Â Â Â Â Â Â Â format: Â Â Â Â 152
>>>> Â Â Â Â Â Â Â Â instanceVariables: Â Â Â #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle')
>>>> Â Â Â Â Â Â Â Â organization: Â ('*Morphic' defaultMorphicAction)
>>>> ('accessing' maxVal minVal poin...etc...
>>>> Â Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â Â name: Â #ProgressInitiationException
>>>> Â Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â Â environment: Â Â a SystemDictionary(lots of globals)
>>>> Â Â Â Â Â Â Â Â category: Â Â Â #'UIManager-Support'
>>>> Â Â Â Â Â Â Â Â traitComposition: Â Â Â nil
>>>> Â Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> MorphicUIManager>>displayProgress:at:from:to:during:
>>>> Â Â Â Â Receiver: a MorphicUIManager
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â titleString: Â Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â aPoint: Â Â Â Â 960@589
>>>> Â Â Â Â Â Â Â Â minVal: Â Â Â Â 0.0
>>>> Â Â Â Â Â Â Â Â maxVal: Â Â Â Â 1.0
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex to...etc...
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â interactiveParser: Â Â Â nil
>>>>
>>>> MCHttpRepository>>displayProgress:during:
>>>> Â Â Â Â Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â label: Â 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â workBlock: Â Â Â [contents := HTTPSocket
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â httpGet: (self urlForFileNamed: aString)...etc...
>>>> Â Â Â Â Â Â Â Â nextUpdateTime: Â Â Â Â #(0)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â creationTemplate: Â Â Â 'MCHttpRepository
>>>> Â Â Â Â location: ''http://git.parspro.com/mc''
>>>> Â Â Â Â u...etc...
>>>> Â Â Â Â Â Â Â Â storeDiffs: Â Â nil
>>>> Â Â Â Â Â Â Â Â cache: Â a Dictionary()
>>>> Â Â Â Â Â Â Â Â allFileNames: Â nil
>>>> Â Â Â Â Â Â Â Â location: Â Â Â 'http://git.parspro.com/mc'
>>>> Â Â Â Â Â Â Â Â user: Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â readerCache: Â Â a Dictionary()
>>>>
>>>> MCHttpRepository>>readStreamForFileNamed:do:
>>>> Â Â Â Â Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aString: Â Â Â Â 'JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:s | (MCVersionReader readerClassForFileNamed: aString)
>>>> Â Â Â Â Â Â Â Â ifNotNil: [:...etc...
>>>> Â Â Â Â Â Â Â Â contents: Â Â Â #(nil)
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â creationTemplate: Â Â Â 'MCHttpRepository
>>>> Â Â Â Â location: ''http://git.parspro.com/mc''
>>>> Â Â Â Â u...etc...
>>>> Â Â Â Â Â Â Â Â storeDiffs: Â Â nil
>>>> Â Â Â Â Â Â Â Â cache: Â a Dictionary()
>>>> Â Â Â Â Â Â Â Â allFileNames: Â nil
>>>> Â Â Â Â Â Â Â Â location: Â Â Â 'http://git.parspro.com/mc'
>>>> Â Â Â Â Â Â Â Â user: Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â readerCache: Â Â a Dictionary()
>>>>
>>>> MCHttpRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do:
>>>> Â Â Â Â Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>>> Â Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â Â aString: Â Â Â Â 'JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>> Â Â Â Â Â Â Â Â aBlock: Â Â Â Â [:r | r
>>>> Â Â Â Â Â Â Â Â ifNotNil: [readerCache at: aString put: r]]
>>>> Â Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â Â creationTemplate: Â Â Â 'MCHttpRepository
>>>> Â Â Â Â location: ''http://git.parspro.com/mc''
>>>> Â Â Â Â u...etc...
>>>> Â Â Â Â Â Â Â Â storeDiffs: Â Â nil
>>>> Â Â Â Â Â Â Â Â cache: Â a Dictionary()
>>>> Â Â Â Â Â Â Â Â allFileNames: Â nil
>>>> Â Â Â Â Â Â Â Â location: Â Â Â 'http://git.parspro.com/mc'
>>>> Â Â Â Â Â Â Â Â user: Â 'jt'
>>>> Â Â Â Â Â Â Â Â password: Â Â Â 'trimixisg4u'
>>>> Â Â Â Â Â Â Â Â readerCache: Â Â a Dictionary()
>>>>
>>>>
>>>> --- The full stack ---
>>>> ZnUTF8Encoder(Object)>>error:
>>>> [| nextByte | ((nextByte := stream next) bitAnd: 192)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â = 128
>>>> Â Â Â Â Â Â Â Â ifTrue: [code := (code bitShift: 6)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â + (nextByte bitAnd: 63)]
>>>> Â Â Â Â Â Â Â Â ifFalse: [self error: 'illegal UTF-8 encoding']] in
>>>> ZnUTF8Encoder>>nextFromStream:
>>>> ZnUTF8Encoder>>nextFromStream:
>>>> [:stringStream |
>>>> [readStream atEnd]
>>>> Â Â Â Â Â Â Â Â whileFalse: [stringStream
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nextPut: (encoder nextFromStream: readStream)].
>>>> Â Â Â Â nil] in ZnStringEntity>>readLimitedFrom:
>>>> String class(SequenceableCollection class)>>new:streamContents:
>>>> String class(SequenceableCollection class)>>streamContents:
>>>> ZnStringEntity>>readLimitedFrom:
>>>> ZnStringEntity>>readFrom:
>>>> ZnEntity class>>readFrom:usingType:andLength:
>>>> ZnEntityReader>>readEntityFromStream
>>>> ZnEntityReader>>readEntity
>>>> ZnResponse(ZnMessage)>>readFrom:
>>>> ZnResponse class(ZnMessage class)>>readFrom:
>>>> ZnClient class>>execute:on:
>>>> [ZnClient execute: request on: stream] in ZnHTTPSocketFacade class>>execute:on:
>>>> BlockClosure>>ensure:
>>>> ZnHTTPSocketFacade class>>execute:on:
>>>> ZnHTTPSocketFacade class>>httpGet:args:user:passwd:
>>>> HTTPSocket class>>httpGet:args:user:passwd:
>>>> [contents := HTTPSocket
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â httpGet: (self urlForFileNamed: aString)
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â args: nil
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â user: self user
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â passwd: self password] in MCHttpRepository>>readStreamForFileNamed:do:
>>>> [workBlock value] in [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex total
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNil: [true]
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [ex amount == nil])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [ex total = ex amount])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nextUpdateTime := Time millisecondClockValue + 100]].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in MCHttpRepository>>displayProgress:during:
>>>> BlockClosure>>on:do:
>>>> [:bar | [workBlock value]
>>>> Â Â Â Â Â Â Â Â on: HTTPProgress
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â (ex total
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNil: [true]
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [ex amount == nil])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â or: [ex total = ex amount])
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â nextUpdateTime := Time millisecondClockValue + 100]].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in MCHttpRepository>>displayProgress:during:
>>>> [result := workBlock value: progress] in [[result := workBlock value: progress]
>>>> Â Â Â Â Â Â Â Â on: ProgressNotification
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex extraParam isString
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>>> ex extraParam].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>>> BlockClosure>>on:do:
>>>> [[result := workBlock value: progress]
>>>> Â Â Â Â Â Â Â Â on: ProgressNotification
>>>> Â Â Â Â Â Â Â Â do: [:ex |
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex extraParam isString
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>>> ex extraParam].
>>>> Â Â Â Â Â Â Â Â Â Â Â Â ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>>> BlockClosure>>ensure:
>>>> ProgressInitiationException>>defaultMorphicAction
>>>> MorphicUIManager>>progressInitiationExceptionDefaultAction:
>>>> ProgressInitiationException>>defaultAction
>>>> UndefinedObject>>handleSignal:
>>>> MethodContext(ContextPart)>>handleSignal:
>>>> ProgressInitiationException(Exception)>>signal
>>>> ProgressInitiationException>>display:at:from:to:during:
>>>> ProgressInitiationException class>>display:at:from:to:during:
>>>> MorphicUIManager>>displayProgress:at:from:to:during:
>>>> MCHttpRepository>>displayProgress:during:
>>>> MCHttpRepository>>readStreamForFileNamed:do:
>>>> MCHttpRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do:
>>>> Â - - - - - - - - - - - - - - -
>>>> Â Â Â Â Â Â Â Â Â Â Â Â - - - - - - - - - - - - - - - - - -
>>>> [self resizeCache: readerCache.
>>>> Â Â Â Â super
>>>> Â Â Â Â Â Â Â Â versionReaderForFileNamed: aString
>>>> Â Â Â Â Â Â Â Â do: [:r | r
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ifNotNil: [readerCache at: aString put: r]]] in
>>>> MCHttpRepository>>versionReaderForFileNamed:
>>>> Dictionary>>at:ifAbsent:
>>>> MCHttpRepository>>versionReaderForFileNamed:
>>>> MCHttpRepository>>versionReaderForFileNamed:do:
>>>> MCHttpRepository(MCFileBasedRepository)>>loadVersionFromFileNamed:
>>>> [self loadVersionFromFileNamed: aString] in
>>>> MCHttpRepository(MCFileBasedRepository)>>versionFromFileNamed:
>>>> Dictionary>>at:ifAbsent:
>>>> MCHttpRepository(MCFileBasedRepository)>>versionFromFileNamed:
>>>> [version := repository versionFromFileNamed: selectedVersion] in
>>>> MCFileRepositoryInspector>>version
>>>> BlockClosure>>ensure:
>>>> CursorWithMask(Cursor)>>showWhile:
>>>> MCFileRepositoryInspector>>version
>>>> MCFileRepositoryInspector(MCVersionInspector)>>versionSummary
>>>> MCFileRepositoryInspector(MCVersionInspector)>>summary
>>>> PluggableTextMorph>>getText
>>>> PluggableTextMorph>>update:
>>>> [:aDependent | aDependent update: aParameter] in
>>>> MCFileRepositoryInspector(Object)>>changed:
>>>> DependentsArray>>do:
>>>> MCFileRepositoryInspector(Object)>>changed:
>>>> MCFileRepositoryInspector>>versionSelection:
>>>> PluggableListMorph>>changeModelSelection:
>>>> PluggableListMorph>>mouseUpOnSingle:
>>>> PluggableListMorph>>mouseUp:
>>>> PluggableListMorph(Morph)>>handleMouseUp:
>>>> MouseButtonEvent>>sentTo:
>>>> PluggableListMorph(Morph)>>handleEvent:
>>>> MorphicEventDispatcher>>dispatchDefault:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> PluggableListMorph(Morph)>>processEvent:using:
>>>> PluggableListMorph(Morph)>>processEvent:
>>>> 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>>sendMouseEvent:
>>>> 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 Project class>>spawnNewProcess
>>>> [self value.
>>>> Â Â Â Â Processor terminateActive] in BlockClosure>>newProcess
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Sep 8, 2011 at 10:24, Marcus Denker <marcus.denker(a)inria.fr> wrote:
>>>>>
>>>>> On Sep 8, 2011, at 4:19 PM, John Toohey wrote:
>>>>>
>>>>>> Many thanks. Unfortunately this version throws errors when I try to
>>>>>> load my code from MC. "Error: Illegal UTF-8 encoding" from MC when I
>>>>>> try to build my image. Can you tell me what is the *most* stable
>>>>>> version that I can use with Cog and SS 3.x?
>>>>>>
>>>>>
>>>>> This one. I have never seen that error. So.. a case for the bug tracker.
>>>>>
>>>>> Â Â Â Â http://code.google.com/p/pharo/issues
>>>>>
>>>>>> On Thu, Sep 8, 2011 at 10:05, Marcus Denker <marcus.denker(a)inria.fr> wrote:
>>>>>>>
>>>>>>> On Sep 8, 2011, at 3:59 PM, John Toohey wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>> Is there a 1.3 OneClick build available with the Cog VM, or should I
>>>>>>>> just down load the linux and OSX Cog builds from the Jenkins server?
>>>>>>>
>>>>>>> The script on the hudson is old... we need to update it. And move everything
>>>>>>> from hudson to jenkins. And, and...
>>>>>>>
>>>>>>> So for now:
>>>>>>>
>>>>>>> Â Â Â Â https://gforge.inria.fr/frs/download.php/28922/Pharo-1.3-OneClick.zip
>>>>>>>
>>>>>>> hand-build one-click with Cog as build from https://ci.lille.inria.fr/pharo/view/Cog/
>>>>>>>
>>>>>>>> often run into problems with having different VMs/Plugin on different
>>>>>>>> servers, and like the idea of having both Liux and OSX supported in
>>>>>>>> one package, where I can just update the image.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Marcus Denker -- http://marcusdenker.de
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> ~JT
>>>>>>
>>>>>
>>>>> --
>>>>> Marcus Denker -- http://marcusdenker.de
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ~JT
>>>>
>>>
>>>
>>>
>>> --
>>> ~JT
>>>
>>
>>
>>
>
>
>
--
~JT
Sept. 8, 2011
Re: [Pharo-project] 1.3 OneCick with Cog VM
by Sven Van Caekenberghe
Hey John,
Yes there seems to be a problem.
I will try to investigate as soon as possible but I won't have time tonight, at earliest tomorrow morning EU time.
Sorry for the inconvenience.
Sven
On 08 Sep 2011, at 19:25, John Toohey wrote:
> Just tried it on Linux, and its the same. MC cannot read my source
> repos. This is a little scary.
>
> On Thu, Sep 8, 2011 at 12:44, John Toohey <jt(a)parspro.com> wrote:
>> If it helps I can give access to the code repo, and anyone can then
>> reproduce the bug.
>>
>> On Thu, Sep 8, 2011 at 11:55, John Toohey <jt(a)parspro.com> wrote:
>>> Bug tracker tells me that my comment is too long! Anyhow here is what
>>> I tried to post. Would love a solution as all my sources code is now
>>> locked out of Pharo.
>>>
>>> Pharo image: Pharo 1.3
>>> Pharo core version: Latest update: #13298
>>> Virtual machine used: 1.3 One-Click with Cog
>>> Description
>>>
>>> When I open MC and create a package for my code, I get an "Illegal
>>> UTF-8 encoding" error when I try to open any of my packages.
>>>
>>> 8 September 2011 11:49:57 am
>>>
>>> VM: Mac OS - intel - 1067 - Croquet Closure Cog VM [CoInterpreter
>>> VMMaker-oscog.54] Pharo Development 1.1
>>> Image: Pharo1.3 [Latest update: #13298]
>>>
>>> ZnUTF8Encoder(Object)>>error:
>>> Receiver: a ZnUTF8Encoder
>>> Arguments and temporary variables:
>>> aString: 'illegal UTF-8 encoding'
>>> Receiver's instance variables:
>>> a ZnUTF8Encoder
>>>
>>> [| nextByte | ((nextByte := stream next) bitAnd: 192)
>>> = 128
>>> ifTrue: [code := (code bitShift: 6)
>>> + (nextByte bitAnd: 63)]
>>> ifFalse: [self error: 'illegal UTF-8 encoding']] in
>>> ZnUTF8Encoder>>nextFromStream:
>>> Receiver: a ZnUTF8Encoder
>>> Arguments and temporary variables:
>>> stream: a ZnLimitedReadStream
>>> code: #(26)
>>> nextByte: 94
>>> Receiver's instance variables:
>>> a ZnUTF8Encoder
>>>
>>> ZnUTF8Encoder>>nextFromStream:
>>> Receiver: a ZnUTF8Encoder
>>> Arguments and temporary variables:
>>> stream: a ZnLimitedReadStream
>>> byte: 218
>>> next: [| nextByte | ((nextByte := stream next) bitAnd: 192)
>>> = 128
>>> ifTrue: ...etc...
>>> code: #(26)
>>> Receiver's instance variables:
>>> a ZnUTF8Encoder
>>>
>>> [:stringStream |
>>> [readStream atEnd]
>>> whileFalse: [stringStream
>>> nextPut: (encoder nextFromStream: readStream)].
>>> nil] in ZnStringEntity>>readLimitedFrom:
>>> Receiver: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>> Arguments and temporary variables:
>>> readStream: a WriteStream 'PK '
>>> stringStream: a ZnLimitedReadStream
>>> Receiver's instance variables:
>>> contentType: text/plain;charset=UTF-8
>>> contentLength: 9025
>>> string: nil
>>> encoder: a ZnUTF8Encoder
>>>
>>> String class(SequenceableCollection class)>>new:streamContents:
>>> Receiver: String
>>> Arguments and temporary variables:
>>> newSize: 100
>>> blockWithArg: [:stringStream |
>>> [readStream atEnd]
>>> whileFalse: [stringStream
>>> ...etc...
>>> stream: a WriteStream 'PK '
>>> Receiver's instance variables:
>>> superclass: ArrayedCollection
>>> methodDict: a MethodDictionary(size 267)
>>> format: 2
>>> instanceVariables: nil
>>> organization: ('*Compiler-Kernel' inviolateInstanceVariableNames
>>> isLegalInstVar...etc...
>>> subclasses: {ByteString. WideString. Symbol}
>>> name: #String
>>> classPool: a Dictionary(#AsciiOrder->#[0 1 2 3 4 5 6 7 8 9 10 11 12
>>> 13 14 15 16...etc...
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Collections-Strings'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> String class(SequenceableCollection class)>>streamContents:
>>> Receiver: String
>>> Arguments and temporary variables:
>>> blockWithArg: [:stringStream |
>>> [readStream atEnd]
>>> whileFalse: [stringStream
>>> ...etc...
>>> Receiver's instance variables:
>>> superclass: ArrayedCollection
>>> methodDict: a MethodDictionary(size 267)
>>> format: 2
>>> instanceVariables: nil
>>> organization: ('*Compiler-Kernel' inviolateInstanceVariableNames
>>> isLegalInstVar...etc...
>>> subclasses: {ByteString. WideString. Symbol}
>>> name: #String
>>> classPool: a Dictionary(#AsciiOrder->#[0 1 2 3 4 5 6 7 8 9 10 11 12
>>> 13 14 15 16...etc...
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Collections-Strings'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> ZnStringEntity>>readLimitedFrom:
>>> Receiver: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>> Arguments and temporary variables:
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> readStream: a ZnLimitedReadStream
>>> newString: nil
>>> Receiver's instance variables:
>>> contentType: text/plain;charset=UTF-8
>>> contentLength: 9025
>>> string: nil
>>> encoder: a ZnUTF8Encoder
>>>
>>> ZnStringEntity>>readFrom:
>>> Receiver: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>> Arguments and temporary variables:
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> Receiver's instance variables:
>>> contentType: text/plain;charset=UTF-8
>>> contentLength: 9025
>>> string: nil
>>> encoder: a ZnUTF8Encoder
>>>
>>> ZnEntity class>>readFrom:usingType:andLength:
>>> Receiver: ZnEntity
>>> Arguments and temporary variables:
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> mimeType: text/plain;charset=UTF-8
>>> length: 9025
>>> newEntity: a ZnStringEntity(text/plain;charset=UTF-8 9025B)
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a
>>> MethodDictionary(#contentLength->(ZnEntity>>#contentLength "a
>>> Com...etc...
>>> format: 134
>>> instanceVariables: #('contentType' 'contentLength')
>>> organization: ('accessing' contentLength contentLength: contentType
>>> contentType...etc...
>>> subclasses: {ZnApplicationFormUrlEncodedEntity. ZnByteArrayEntity.
>>> ZnMultiPartF...etc...
>>> name: #ZnEntity
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Zinc-HTTP-Core'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> ZnEntityReader>>readEntityFromStream
>>> Receiver: a ZnEntityReader
>>> Arguments and temporary variables:
>>> entity: nil
>>> decodedEntityLength: 9025
>>> chunkedStream: nil
>>> Receiver's instance variables:
>>> headers: a ZnHeaders('Accept-Ranges'->'bytes'
>>> 'Cache-Control'->'max-age=-543414...etc...
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> streaming: nil
>>> allowReadingUpToEnd: true
>>>
>>> ZnEntityReader>>readEntity
>>> Receiver: a ZnEntityReader
>>> Arguments and temporary variables:
>>> entity: nil
>>> Receiver's instance variables:
>>> headers: a ZnHeaders('Accept-Ranges'->'bytes'
>>> 'Cache-Control'->'max-age=-543414...etc...
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> streaming: nil
>>> allowReadingUpToEnd: true
>>>
>>> ZnResponse(ZnMessage)>>readFrom:
>>> Receiver: a ZnResponse(200 OK)
>>> Arguments and temporary variables:
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> Receiver's instance variables:
>>> headers: a ZnHeaders('Accept-Ranges'->'bytes'
>>> 'Cache-Control'->'max-age=-543414...etc...
>>> entity: nil
>>> statusLine: a ZnStatusLine(200 OK)
>>>
>>> ZnResponse class(ZnMessage class)>>readFrom:
>>> Receiver: ZnResponse
>>> Arguments and temporary variables:
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> Receiver's instance variables:
>>> superclass: ZnMessage
>>> methodDict: a
>>> MethodDictionary(#addCookie:->(ZnResponse>>#addCookie: "a
>>> Compile...etc...
>>> format: 136
>>> instanceVariables: #('statusLine')
>>> organization: ('accessing' addCookie: code location location:
>>> setKeepAliveFor: ...etc...
>>> subclasses: nil
>>> name: #ZnResponse
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Zinc-HTTP-Core'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> ZnClient class>>execute:on:
>>> Receiver: ZnClient
>>> Arguments and temporary variables:
>>> request: a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary()
>>> format: 2
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> subclasses: nil
>>> name: #ZnClient
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Zinc-HTTP-Client-Server'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> [ZnClient execute: request on: stream] in ZnHTTPSocketFacade class>>execute:on:
>>> Receiver: ZnHTTPSocketFacade
>>> Arguments and temporary variables:
>>> request: a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary()
>>> format: 2
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> subclasses: nil
>>> name: #ZnHTTPSocketFacade
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Zinc-HTTP-Client-Server'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> BlockClosure>>ensure:
>>> Receiver: [ZnClient execute: request on: stream]
>>> Arguments and temporary variables:
>>> aBlock: [stream close]
>>> complete: nil
>>> returnValue: nil
>>> Receiver's instance variables:
>>> outerContext: ZnHTTPSocketFacade class>>execute:on:
>>> startpc: 42
>>> numArgs: 0
>>>
>>> ZnHTTPSocketFacade class>>execute:on:
>>> Receiver: ZnHTTPSocketFacade
>>> Arguments and temporary variables:
>>> request: a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary()
>>> format: 2
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> subclasses: nil
>>> name: #ZnHTTPSocketFacade
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Zinc-HTTP-Client-Server'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> ZnHTTPSocketFacade class>>httpGet:args:user:passwd:
>>> Receiver: ZnHTTPSocketFacade
>>> Arguments and temporary variables:
>>> urlObject: 'http://git.parspro.com/mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz...etc...
>>> queryArguments: nil
>>> username: 'jt'
>>> password: 'trimixisg4u'
>>> url: http://git.parspro.com/mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz
>>> stream: SocketStream[inbuf:4kb/outbuf:4kb]
>>> request: a ZnRequest(GET /mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz)
>>> response: nil
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary()
>>> format: 2
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> subclasses: nil
>>> name: #ZnHTTPSocketFacade
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Zinc-HTTP-Client-Server'
>>> traitComposition: {}
>>> localSelectors: nil
>>>
>>> HTTPSocket class>>httpGet:args:user:passwd:
>>> Receiver: HTTPSocket
>>> Arguments and temporary variables:
>>> url: 'http://git.parspro.com/mc/JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> queryArguments: nil
>>> username: 'jt'
>>> password: 'trimixisg4u'
>>> Receiver's instance variables:
>>> superclass: Socket
>>> methodDict: a
>>> MethodDictionary(#contentType->(HTTPSocket>>#contentType "a
>>> Compi...etc...
>>> format: 144
>>> instanceVariables: #('headerTokens' 'headers' 'responseCode')
>>> organization: ('accessing' contentType contentType: contentsLength:
>>> getHeader: ...etc...
>>> subclasses: nil
>>> name: #HTTPSocket
>>> classPool: a Dictionary(#HTTPBlabEmail->''
>>> #HTTPProxyCredentials->'' #HTTPProxy...etc...
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'Network-Protocols'
>>> traitComposition: nil
>>> localSelectors: nil
>>>
>>> [contents := HTTPSocket
>>> httpGet: (self urlForFileNamed: aString)
>>> args: nil
>>> user: self user
>>> passwd: self password] in MCHttpRepository>>readStreamForFileNamed:do:
>>> Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>> Arguments and temporary variables:
>>> aString: 'JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> contents: #(nil)
>>> Receiver's instance variables:
>>> creationTemplate: 'MCHttpRepository
>>> location: ''http://git.parspro.com/mc''
>>> u...etc...
>>> storeDiffs: nil
>>> cache: a Dictionary()
>>> allFileNames: nil
>>> location: 'http://git.parspro.com/mc'
>>> user: 'jt'
>>> password: 'trimixisg4u'
>>> readerCache: a Dictionary()
>>>
>>> [workBlock value] in [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex total
>>> ifNil: [true]
>>> ifNotNil: [ex amount == nil])
>>> ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>> or: [ex total = ex amount])
>>> ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>> nextUpdateTime := Time millisecondClockValue + 100]].
>>> ex resume]] in MCHttpRepository>>displayProgress:during:
>>> Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>> Arguments and temporary variables:
>>> workBlock: [contents := HTTPSocket
>>> httpGet: (self urlForFileNamed: aString)...etc...
>>> Receiver's instance variables:
>>> creationTemplate: 'MCHttpRepository
>>> location: ''http://git.parspro.com/mc''
>>> u...etc...
>>> storeDiffs: nil
>>> cache: a Dictionary()
>>> allFileNames: nil
>>> location: 'http://git.parspro.com/mc'
>>> user: 'jt'
>>> password: 'trimixisg4u'
>>> readerCache: a Dictionary()
>>>
>>> BlockClosure>>on:do:
>>> Receiver: [workBlock value]
>>> Arguments and temporary variables:
>>> exception: HTTPProgress
>>> handlerAction: [:ex |
>>> (ex total
>>> ifNil: [true]
>>> ifNotNil: [ex amount == ni...etc...
>>> handlerActive: true
>>> Receiver's instance variables:
>>> outerContext: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex...etc...
>>> startpc: 114
>>> numArgs: 0
>>>
>>> [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex total
>>> ifNil: [true]
>>> ifNotNil: [ex amount == nil])
>>> ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>> or: [ex total = ex amount])
>>> ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>> nextUpdateTime := Time millisecondClockValue + 100]].
>>> ex resume]] in MCHttpRepository>>displayProgress:during:
>>> Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>> Arguments and temporary variables:
>>> workBlock: [:barValArg |
>>> | barVal return newBarSize |
>>> barVal := barValArg.
>>> re...etc...
>>> nextUpdateTime: [contents := HTTPSocket
>>> httpGet: (self urlForFileNamed: aSt...etc...
>>> bar: #(0)
>>> Receiver's instance variables:
>>> creationTemplate: 'MCHttpRepository
>>> location: ''http://git.parspro.com/mc''
>>> u...etc...
>>> storeDiffs: nil
>>> cache: a Dictionary()
>>> allFileNames: nil
>>> location: 'http://git.parspro.com/mc'
>>> user: 'jt'
>>> password: 'trimixisg4u'
>>> readerCache: a Dictionary()
>>>
>>> [result := workBlock value: progress] in [[result := workBlock value: progress]
>>> on: ProgressNotification
>>> do: [:ex |
>>> ex extraParam isString
>>> ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>> ex extraParam].
>>> ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>> progress: [:barValArg |
>>> | barVal return newBarSize |
>>> barVal := barValArg.
>>> ret...etc...
>>> result: #(nil)
>>> Receiver's instance variables:
>>> messageText: nil
>>> tag: nil
>>> signaler: a MorphicUIManager
>>> signalContext: ProgressInitiationException(Exception)>>signal
>>> handlerContext: nil
>>> outerContext: nil
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> maxVal: 1.0
>>> minVal: 0.0
>>> aPoint: 960@589
>>> progressTitle: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>
>>> BlockClosure>>on:do:
>>> Receiver: [result := workBlock value: progress]
>>> Arguments and temporary variables:
>>> exception: ProgressNotification
>>> handlerAction: [:ex |
>>> ex extraParam isString
>>> ifTrue: [SystemProgressMorph un...etc...
>>> handlerActive: true
>>> Receiver's instance variables:
>>> outerContext: [[result := workBlock value: progress]
>>> on: ProgressNotification...etc...
>>> startpc: 87
>>> numArgs: 0
>>>
>>> [[result := workBlock value: progress]
>>> on: ProgressNotification
>>> do: [:ex |
>>> ex extraParam isString
>>> ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>> ex extraParam].
>>> ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>> progress: [:barValArg |
>>> | barVal return newBarSize |
>>> barVal := barValArg.
>>> ret...etc...
>>> result: #(nil)
>>> Receiver's instance variables:
>>> messageText: nil
>>> tag: nil
>>> signaler: a MorphicUIManager
>>> signalContext: ProgressInitiationException(Exception)>>signal
>>> handlerContext: nil
>>> outerContext: nil
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> maxVal: 1.0
>>> minVal: 0.0
>>> aPoint: 960@589
>>> progressTitle: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>
>>> BlockClosure>>ensure:
>>> Receiver: [[result := workBlock value: progress]
>>> on: ProgressNotification
>>> do: [:ex |
>>> ex extr...etc...
>>> Arguments and temporary variables:
>>> aBlock: [SystemProgressMorph close: progress]
>>> complete: nil
>>> returnValue: nil
>>> Receiver's instance variables:
>>> outerContext: ProgressInitiationException>>defaultMorphicAction
>>> startpc: 81
>>> numArgs: 0
>>>
>>> ProgressInitiationException>>defaultMorphicAction
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>> progress: [:barValArg |
>>> | barVal return newBarSize |
>>> barVal := barValArg.
>>> ret...etc...
>>> result: #(nil)
>>> Receiver's instance variables:
>>> messageText: nil
>>> tag: nil
>>> signaler: a MorphicUIManager
>>> signalContext: ProgressInitiationException(Exception)>>signal
>>> handlerContext: nil
>>> outerContext: nil
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> maxVal: 1.0
>>> minVal: 0.0
>>> aPoint: 960@589
>>> progressTitle: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>
>>> MorphicUIManager>>progressInitiationExceptionDefaultAction:
>>> Receiver: a MorphicUIManager
>>> Arguments and temporary variables:
>>> anException: ProgressInitiationException
>>> Receiver's instance variables:
>>> interactiveParser: nil
>>>
>>> ProgressInitiationException>>defaultAction
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> messageText: nil
>>> tag: nil
>>> signaler: a MorphicUIManager
>>> signalContext: ProgressInitiationException(Exception)>>signal
>>> handlerContext: nil
>>> outerContext: nil
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> maxVal: 1.0
>>> minVal: 0.0
>>> aPoint: 960@589
>>> progressTitle: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>
>>> UndefinedObject>>handleSignal:
>>> Receiver: nil
>>> Arguments and temporary variables:
>>> exception: ProgressInitiationException
>>> Receiver's instance variables:
>>> nil
>>>
>>> MethodContext(ContextPart)>>handleSignal:
>>> Receiver: BlockClosure>>on:do:
>>> Arguments and temporary variables:
>>> exception: ProgressInitiationException
>>> val: nil
>>> Receiver's instance variables:
>>> sender: PasteUpMorph>>becomeActiveDuring:
>>> pc: 17
>>> stackp: 3
>>> method: (BlockClosure>>#on:do: "a CompiledMethod(137625600)")
>>> closureOrNil: nil
>>> receiver: [aBlock value]
>>>
>>> ProgressInitiationException(Exception)>>signal
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> messageText: nil
>>> tag: nil
>>> signaler: a MorphicUIManager
>>> signalContext: ProgressInitiationException(Exception)>>signal
>>> handlerContext: nil
>>> outerContext: nil
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> maxVal: 1.0
>>> minVal: 0.0
>>> aPoint: 960@589
>>> progressTitle: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>
>>> ProgressInitiationException>>display:at:from:to:during:
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>> argString: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> argPoint: 960@589
>>> argMinVal: 0.0
>>> argMaxVal: 1.0
>>> argWorkBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex...etc...
>>> Receiver's instance variables:
>>> messageText: nil
>>> tag: nil
>>> signaler: a MorphicUIManager
>>> signalContext: ProgressInitiationException(Exception)>>signal
>>> handlerContext: nil
>>> outerContext: nil
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> maxVal: 1.0
>>> minVal: 0.0
>>> aPoint: 960@589
>>> progressTitle: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>>
>>> ProgressInitiationException class>>display:at:from:to:during:
>>> Receiver: ProgressInitiationException
>>> Arguments and temporary variables:
>>> aString: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> aPoint: 960@589
>>> minVal: 0.0
>>> maxVal: 1.0
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> Receiver's instance variables:
>>> superclass: Exception
>>> methodDict: a
>>> MethodDictionary(#defaultAction->(ProgressInitiationException>>#d...etc...
>>> format: 152
>>> instanceVariables: #('workBlock' 'maxVal' 'minVal' 'aPoint' 'progressTitle')
>>> organization: ('*Morphic' defaultMorphicAction)
>>> ('accessing' maxVal minVal poin...etc...
>>> subclasses: nil
>>> name: #ProgressInitiationException
>>> classPool: nil
>>> sharedPools: nil
>>> environment: a SystemDictionary(lots of globals)
>>> category: #'UIManager-Support'
>>> traitComposition: nil
>>> localSelectors: nil
>>>
>>> MorphicUIManager>>displayProgress:at:from:to:during:
>>> Receiver: a MorphicUIManager
>>> Arguments and temporary variables:
>>> titleString: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> aPoint: 960@589
>>> minVal: 0.0
>>> maxVal: 1.0
>>> workBlock: [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex to...etc...
>>> Receiver's instance variables:
>>> interactiveParser: nil
>>>
>>> MCHttpRepository>>displayProgress:during:
>>> Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>> Arguments and temporary variables:
>>> label: 'Downloading JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> workBlock: [contents := HTTPSocket
>>> httpGet: (self urlForFileNamed: aString)...etc...
>>> nextUpdateTime: #(0)
>>> Receiver's instance variables:
>>> creationTemplate: 'MCHttpRepository
>>> location: ''http://git.parspro.com/mc''
>>> u...etc...
>>> storeDiffs: nil
>>> cache: a Dictionary()
>>> allFileNames: nil
>>> location: 'http://git.parspro.com/mc'
>>> user: 'jt'
>>> password: 'trimixisg4u'
>>> readerCache: a Dictionary()
>>>
>>> MCHttpRepository>>readStreamForFileNamed:do:
>>> Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>> Arguments and temporary variables:
>>> aString: 'JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> aBlock: [:s | (MCVersionReader readerClassForFileNamed: aString)
>>> ifNotNil: [:...etc...
>>> contents: #(nil)
>>> Receiver's instance variables:
>>> creationTemplate: 'MCHttpRepository
>>> location: ''http://git.parspro.com/mc''
>>> u...etc...
>>> storeDiffs: nil
>>> cache: a Dictionary()
>>> allFileNames: nil
>>> location: 'http://git.parspro.com/mc'
>>> user: 'jt'
>>> password: 'trimixisg4u'
>>> readerCache: a Dictionary()
>>>
>>> MCHttpRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do:
>>> Receiver: a MCHttpRepository(http://git.parspro.com/mc)
>>> Arguments and temporary variables:
>>> aString: 'JQWidgetBox-Spinner-Core-JohnToohey.3.mcz'
>>> aBlock: [:r | r
>>> ifNotNil: [readerCache at: aString put: r]]
>>> Receiver's instance variables:
>>> creationTemplate: 'MCHttpRepository
>>> location: ''http://git.parspro.com/mc''
>>> u...etc...
>>> storeDiffs: nil
>>> cache: a Dictionary()
>>> allFileNames: nil
>>> location: 'http://git.parspro.com/mc'
>>> user: 'jt'
>>> password: 'trimixisg4u'
>>> readerCache: a Dictionary()
>>>
>>>
>>> --- The full stack ---
>>> ZnUTF8Encoder(Object)>>error:
>>> [| nextByte | ((nextByte := stream next) bitAnd: 192)
>>> = 128
>>> ifTrue: [code := (code bitShift: 6)
>>> + (nextByte bitAnd: 63)]
>>> ifFalse: [self error: 'illegal UTF-8 encoding']] in
>>> ZnUTF8Encoder>>nextFromStream:
>>> ZnUTF8Encoder>>nextFromStream:
>>> [:stringStream |
>>> [readStream atEnd]
>>> whileFalse: [stringStream
>>> nextPut: (encoder nextFromStream: readStream)].
>>> nil] in ZnStringEntity>>readLimitedFrom:
>>> String class(SequenceableCollection class)>>new:streamContents:
>>> String class(SequenceableCollection class)>>streamContents:
>>> ZnStringEntity>>readLimitedFrom:
>>> ZnStringEntity>>readFrom:
>>> ZnEntity class>>readFrom:usingType:andLength:
>>> ZnEntityReader>>readEntityFromStream
>>> ZnEntityReader>>readEntity
>>> ZnResponse(ZnMessage)>>readFrom:
>>> ZnResponse class(ZnMessage class)>>readFrom:
>>> ZnClient class>>execute:on:
>>> [ZnClient execute: request on: stream] in ZnHTTPSocketFacade class>>execute:on:
>>> BlockClosure>>ensure:
>>> ZnHTTPSocketFacade class>>execute:on:
>>> ZnHTTPSocketFacade class>>httpGet:args:user:passwd:
>>> HTTPSocket class>>httpGet:args:user:passwd:
>>> [contents := HTTPSocket
>>> httpGet: (self urlForFileNamed: aString)
>>> args: nil
>>> user: self user
>>> passwd: self password] in MCHttpRepository>>readStreamForFileNamed:do:
>>> [workBlock value] in [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex total
>>> ifNil: [true]
>>> ifNotNil: [ex amount == nil])
>>> ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>> or: [ex total = ex amount])
>>> ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>> nextUpdateTime := Time millisecondClockValue + 100]].
>>> ex resume]] in MCHttpRepository>>displayProgress:during:
>>> BlockClosure>>on:do:
>>> [:bar | [workBlock value]
>>> on: HTTPProgress
>>> do: [:ex |
>>> (ex total
>>> ifNil: [true]
>>> ifNotNil: [ex amount == nil])
>>> ifFalse: [(nextUpdateTime < Time millisecondClockValue
>>> or: [ex total = ex amount])
>>> ifTrue: [bar value: ex amount asFloat / ex total asFloat.
>>> nextUpdateTime := Time millisecondClockValue + 100]].
>>> ex resume]] in MCHttpRepository>>displayProgress:during:
>>> [result := workBlock value: progress] in [[result := workBlock value: progress]
>>> on: ProgressNotification
>>> do: [:ex |
>>> ex extraParam isString
>>> ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>> ex extraParam].
>>> ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>> BlockClosure>>on:do:
>>> [[result := workBlock value: progress]
>>> on: ProgressNotification
>>> do: [:ex |
>>> ex extraParam isString
>>> ifTrue: [SystemProgressMorph uniqueInstance labelAt: progress put:
>>> ex extraParam].
>>> ex resume]] in ProgressInitiationException>>defaultMorphicAction
>>> BlockClosure>>ensure:
>>> ProgressInitiationException>>defaultMorphicAction
>>> MorphicUIManager>>progressInitiationExceptionDefaultAction:
>>> ProgressInitiationException>>defaultAction
>>> UndefinedObject>>handleSignal:
>>> MethodContext(ContextPart)>>handleSignal:
>>> ProgressInitiationException(Exception)>>signal
>>> ProgressInitiationException>>display:at:from:to:during:
>>> ProgressInitiationException class>>display:at:from:to:during:
>>> MorphicUIManager>>displayProgress:at:from:to:during:
>>> MCHttpRepository>>displayProgress:during:
>>> MCHttpRepository>>readStreamForFileNamed:do:
>>> MCHttpRepository(MCFileBasedRepository)>>versionReaderForFileNamed:do:
>>> - - - - - - - - - - - - - - -
>>> - - - - - - - - - - - - - - - - - -
>>> [self resizeCache: readerCache.
>>> super
>>> versionReaderForFileNamed: aString
>>> do: [:r | r
>>> ifNotNil: [readerCache at: aString put: r]]] in
>>> MCHttpRepository>>versionReaderForFileNamed:
>>> Dictionary>>at:ifAbsent:
>>> MCHttpRepository>>versionReaderForFileNamed:
>>> MCHttpRepository>>versionReaderForFileNamed:do:
>>> MCHttpRepository(MCFileBasedRepository)>>loadVersionFromFileNamed:
>>> [self loadVersionFromFileNamed: aString] in
>>> MCHttpRepository(MCFileBasedRepository)>>versionFromFileNamed:
>>> Dictionary>>at:ifAbsent:
>>> MCHttpRepository(MCFileBasedRepository)>>versionFromFileNamed:
>>> [version := repository versionFromFileNamed: selectedVersion] in
>>> MCFileRepositoryInspector>>version
>>> BlockClosure>>ensure:
>>> CursorWithMask(Cursor)>>showWhile:
>>> MCFileRepositoryInspector>>version
>>> MCFileRepositoryInspector(MCVersionInspector)>>versionSummary
>>> MCFileRepositoryInspector(MCVersionInspector)>>summary
>>> PluggableTextMorph>>getText
>>> PluggableTextMorph>>update:
>>> [:aDependent | aDependent update: aParameter] in
>>> MCFileRepositoryInspector(Object)>>changed:
>>> DependentsArray>>do:
>>> MCFileRepositoryInspector(Object)>>changed:
>>> MCFileRepositoryInspector>>versionSelection:
>>> PluggableListMorph>>changeModelSelection:
>>> PluggableListMorph>>mouseUpOnSingle:
>>> PluggableListMorph>>mouseUp:
>>> PluggableListMorph(Morph)>>handleMouseUp:
>>> MouseButtonEvent>>sentTo:
>>> PluggableListMorph(Morph)>>handleEvent:
>>> MorphicEventDispatcher>>dispatchDefault:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> PluggableListMorph(Morph)>>processEvent:using:
>>> PluggableListMorph(Morph)>>processEvent:
>>> 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>>sendMouseEvent:
>>> 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 Project class>>spawnNewProcess
>>> [self value.
>>> Processor terminateActive] in BlockClosure>>newProcess
>>>
>>>
>>>
>>>
>>> On Thu, Sep 8, 2011 at 10:24, Marcus Denker <marcus.denker(a)inria.fr> wrote:
>>>>
>>>> On Sep 8, 2011, at 4:19 PM, John Toohey wrote:
>>>>
>>>>> Many thanks. Unfortunately this version throws errors when I try to
>>>>> load my code from MC. "Error: Illegal UTF-8 encoding" from MC when I
>>>>> try to build my image. Can you tell me what is the *most* stable
>>>>> version that I can use with Cog and SS 3.x?
>>>>>
>>>>
>>>> This one. I have never seen that error. So.. a case for the bug tracker.
>>>>
>>>> http://code.google.com/p/pharo/issues
>>>>
>>>>> On Thu, Sep 8, 2011 at 10:05, Marcus Denker <marcus.denker(a)inria.fr> wrote:
>>>>>>
>>>>>> On Sep 8, 2011, at 3:59 PM, John Toohey wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>> Is there a 1.3 OneClick build available with the Cog VM, or should I
>>>>>>> just down load the linux and OSX Cog builds from the Jenkins server?
>>>>>>
>>>>>> The script on the hudson is old... we need to update it. And move everything
>>>>>> from hudson to jenkins. And, and...
>>>>>>
>>>>>> So for now:
>>>>>>
>>>>>> https://gforge.inria.fr/frs/download.php/28922/Pharo-1.3-OneClick.zip
>>>>>>
>>>>>> hand-build one-click with Cog as build from https://ci.lille.inria.fr/pharo/view/Cog/
>>>>>>
>>>>>>> often run into problems with having different VMs/Plugin on different
>>>>>>> servers, and like the idea of having both Liux and OSX supported in
>>>>>>> one package, where I can just update the image.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Marcus Denker -- http://marcusdenker.de
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> ~JT
>>>>>
>>>>
>>>> --
>>>> Marcus Denker -- http://marcusdenker.de
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> ~JT
>>>
>>
>>
>>
>> --
>> ~JT
>>
>
>
>
Sept. 8, 2011
Re: [Pharo-project] jenkins mac cogvm misses os process?
by Tudor Girba
Thanks. It works fine!
Doru
On 8 Sep 2011, at 19:25, Tudor Girba wrote:
> Thanks. I will try this one from now on :).
>
> Just a note regarding communication. I am using the Cocoa from the first time you announced it. This is exactly because I strongly believe in continuously stressing the latest version as a means to cope with limited resources. It might be counter intuitive to some, but by spending a bit more apparently we gain in the long run due to the significantly reduced costs of feedback and collaboration.
>
> However, this can only work if communication is kept flowing and clear. In the case of the VM, it is neither flowing nor clear :). At least not for me. But, I will keep sending issues and feedback around until it gets better :).
>
> Cheers,
> Doru
>
>
> On 8 Sep 2011, at 15:16, Esteban Lorenzano wrote:
>
>> yeah... but you should be using
>>
>> https://ci.lille.inria.fr/pharo/view/Cog/job/Cog-Mac-Cocoa-blessed/
>>
>> not
>>
>> https://ci.lille.inria.fr/pharo/view/Cog/job/Cog-Mac-Cocoa/
>>
>> sorry for the mess... still dealing with my last configurations :)
>>
>> please, please, please... do not use carbon versions. Report cocoa problems instead :)
>>
>> cheers,
>> Esteban
>>
>> El 08/09/2011, a las 10:03a.m., Sean P. DeNigris escribió:
>>
>>> I reported this @ http://code.google.com/p/cog/issues/detail?id=60 :
>>> OSProcess not working
>>>
>>> If you don't mind using the Carbon versions for now, OSP is working on both
>>> the Jenkins Stack and Jit IIRC.
>>>
>>> Sean
>>>
>>> --
>>> View this message in context: http://forum.world.st/jenkins-mac-cogvm-misses-os-process-tp3798359p3798741…
>>> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>>>
>>
>>
>
> --
> www.tudorgirba.com
>
> "We cannot reach the flow of things unless we let go."
>
>
>
--
www.tudorgirba.com
"Problem solving should be focused on describing
the problem in a way that makes the solution obvious."
Sept. 8, 2011
Re: [Pharo-project] Debugger bug fix 1
by Eliot Miranda
Hmmm, let me correct the comment in findNearbyBinaryIndex:. Find attached.
On Thu, Sep 8, 2011 at 10:34 AM, Eliot Miranda <eliot.miranda(a)gmail.com>wrote:
> Hi Henrik, Mike,
>
> On Thu, Sep 8, 2011 at 8:02 AM, Henrik Sperre Johansen <
> henrik.s.johansen(a)veloxit.no> wrote:
>
>> On 08.09.2011 14:37, Michael Roberts wrote:
>>
>>> So I found the bug with the first assignment. It is caused by a
>>> difference between squeak and Pharo in SortedCollection. (on my phone so
>>> will be brief)
>>>
>>> In Pharo the debugger map collection gets sorted and asked for an index
>>> for a given pc. It is supposed to answer 1 because there is no match and it
>>> is expected to be the first index for insertion. However when the
>>> asSortedCollection gets done the internal start index of the collection is
>>> 2. This manifests the bug. 2 is answered as the insertion position but this
>>> is a value internal to the collection.
>>>
>>> Squeak does not have this bug because it forces a reset of the start
>>> index to 1. Hope that makes sense. I don't know what the correct fix is. We
>>> copy the reset:1 type code to force the collection to have start from 1
>>> property. We check semantics of index for insertion. Is it the position of
>>> the element of index relative to pointers? Or we change the debugger to
>>> calculate the offset (but this feels wrong)
>>>
>>> So this is an opportunity for some test cases and fixes around sorted
>>> collection if we know what the correct semantics are. This leak of '2' out
>>> of the collection is only wrong if 2 is a valid state. If that makes
>>> sense...
>>>
>>> Cheers
>>> Mike
>>>
>>
> Mike, thanks for your careful search!
>
>
>> Hum, indexForInserting: is _supposed_ to answer the internal index...
>> Depending on the startIndex being 1 for doing the correct at: later is
>> just wrong.
>> Squeak potentially has the same highlight bug for different methds, as
>> insert:before: used when converting to SortedCollection in no way ensures
>> startIndex remains 1 just because it started as it.
>>
>
> This is an ancient bug. I copied the code from Debugger and it's been
> there since at least Smalltalk-80 V2:
>
> !Debugger methodsFor: 'pc selection'!
> pcRange
> "Answer the indices in the source code for the method corresponding
> to the selected context's program counter value."
>
> | i methodNode pc end |
> (HighlightPC and: [context ~~ nil])
> ifFalse: [^1 to: 0].
> (sourceMap == nil or: [sourceMap size = 0])
> ifTrue: [^1 to: 0].
> pc_ context pc -
> ((context == processHandle topContext and: [processHandle
> interrupted])
> ifTrue: [1]
> ifFalse: [2]).
> i _ sourceMap indexForInserting: (Association key: pc value: nil).
> i < 1 ifTrue: [^1 to: 0].
> i > sourceMap size
> ifTrue:
> [end _ sourceMap inject: 0 into:
> [:prev :this | prev max: this value last].
> ^ end+1 to: end].
> ^(sourceMap at: i) value! !
>
> In Smalltalk-80 V2 indexForInserting: is also private, but like Squeak it
> "just works" since firstIndex is 1 in this context. So either take your
> approach or add a non-private accessor to SortedCollection than answers an
> external index. Personally I like the external accessor, since findBinary:
> doesn't quite do what we want. In my Qwaq-derived image Josh Gargus
> contributed findNearbyBinaryIndex: which is nearly what we want:
>
>
> !SequenceableCollection methodsFor: 'enumerating' stamp: 'jcg 1/27/2009
> 18:32'!
> findNearbyBinaryIndex: aBlock
> "Search for an element in the receiver using binary search.
> The argument aBlock is a one-element block returning
> 0 - if the element is the one searched for
> <0 - if the search should continue in the first half
> >0 - if the search should continue in the second half
> If no matching element is found, answer the closest index we could find."
> | index low high test |
> low := 1.
> high := self size.
> [index := high + low // 2.
> low > high] whileFalse:[
> test := aBlock value: (self at: index).
> test = 0
> ifTrue:[^index]
> ifFalse:[test > 0
> ifTrue: [low := index + 1]
> ifFalse: [high := index - 1]]].
> ^index! !
>
> but it doesn't answer an index > size when the searched for element should
> be past the end.
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 0 - arg ] 0
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 24 - arg ] 7
>
> I think it should read
> !SequenceableCollection methodsFor: 'enumerating' stamp: 'eem 9/8/2011
> 10:23'!
> findNearbyBinaryIndex: aBlock
> "Search for an element in the receiver using binary search.
> The argument aBlock is a one-element block returning
> 0 - if the element is the one searched for
> <0 - if the search should continue in the first half
> >0 - if the search should continue in the second half
> If no matching element is found, answer the closest index we could find."
> | index low high test |
> low := 1.
> high := self size.
> [index := high + low // 2.
> low > high] whileFalse:[
> test := aBlock value: (self at: index).
> test = 0
> ifTrue:[^index]
> ifFalse:[test > 0
> ifTrue: [low := index + 1]
> ifFalse: [high := index - 1]]].
> ^index = self size ifTrue: [index + 1] ifFalse: [index]! !
>
> and then
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 0 - arg ] 0
>
> #(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 24 - arg ] 8
>
> and then the debugger method uses simply
>
> i := sortedSourceMap findNearbyBinaryIndex: [:assoc| pc - assoc key].
>
> in place of
>
> i := sortedSourceMap indexForInserting: (pc -> nil)].
>
> Find attached. I'll add this to Squeak trunk.
>
>
>> I assume it was written this way for performance reasons, now that we have
>> #findBinary: aBlock, we can rewrite the code achieving same performance
>> using an ordinary collection, something like:
>>
>> "Maintain a sorted array of intervals"
>> sortedSourceMap ifNil: [sortedSourceMap := self abstractSourceMap values
>> sorted].
>>
>> "Look up which interval contains pc using a binary search"
>> sortedSourceMap findBinary: [: one |
>> (one includes: pc)
>> ifTrue: [0]
>> ifFalse: [one first > pc ifTrue: [-1] ifFalse: [1]] ]
>>
>> (with some extra code needed to deal with the cases where pc < first
>> interval or > last interval)
>>
>> Cheers,
>> Henry
>>
>>
>
>
> --
> best,
> Eliot
>
>
--
best,
Eliot
Sept. 8, 2011
Re: [Pharo-project] Debugger bug fix 1
by Eliot Miranda
Hi Henrik, Mike,
On Thu, Sep 8, 2011 at 8:02 AM, Henrik Sperre Johansen <
henrik.s.johansen(a)veloxit.no> wrote:
> On 08.09.2011 14:37, Michael Roberts wrote:
>
>> So I found the bug with the first assignment. It is caused by a difference
>> between squeak and Pharo in SortedCollection. (on my phone so will be brief)
>>
>> In Pharo the debugger map collection gets sorted and asked for an index
>> for a given pc. It is supposed to answer 1 because there is no match and it
>> is expected to be the first index for insertion. However when the
>> asSortedCollection gets done the internal start index of the collection is
>> 2. This manifests the bug. 2 is answered as the insertion position but this
>> is a value internal to the collection.
>>
>> Squeak does not have this bug because it forces a reset of the start index
>> to 1. Hope that makes sense. I don't know what the correct fix is. We copy
>> the reset:1 type code to force the collection to have start from 1 property.
>> We check semantics of index for insertion. Is it the position of the element
>> of index relative to pointers? Or we change the debugger to calculate the
>> offset (but this feels wrong)
>>
>> So this is an opportunity for some test cases and fixes around sorted
>> collection if we know what the correct semantics are. This leak of '2' out
>> of the collection is only wrong if 2 is a valid state. If that makes
>> sense...
>>
>> Cheers
>> Mike
>>
>
Mike, thanks for your careful search!
> Hum, indexForInserting: is _supposed_ to answer the internal index...
> Depending on the startIndex being 1 for doing the correct at: later is just
> wrong.
> Squeak potentially has the same highlight bug for different methds, as
> insert:before: used when converting to SortedCollection in no way ensures
> startIndex remains 1 just because it started as it.
>
This is an ancient bug. I copied the code from Debugger and it's been there
since at least Smalltalk-80 V2:
!Debugger methodsFor: 'pc selection'!
pcRange
"Answer the indices in the source code for the method corresponding
to the selected context's program counter value."
| i methodNode pc end |
(HighlightPC and: [context ~~ nil])
ifFalse: [^1 to: 0].
(sourceMap == nil or: [sourceMap size = 0])
ifTrue: [^1 to: 0].
pc_ context pc -
((context == processHandle topContext and: [processHandle
interrupted])
ifTrue: [1]
ifFalse: [2]).
i _ sourceMap indexForInserting: (Association key: pc value: nil).
i < 1 ifTrue: [^1 to: 0].
i > sourceMap size
ifTrue:
[end _ sourceMap inject: 0 into:
[:prev :this | prev max: this value last].
^ end+1 to: end].
^(sourceMap at: i) value! !
In Smalltalk-80 V2 indexForInserting: is also private, but like Squeak it
"just works" since firstIndex is 1 in this context. So either take your
approach or add a non-private accessor to SortedCollection than answers an
external index. Personally I like the external accessor, since findBinary:
doesn't quite do what we want. In my Qwaq-derived image Josh Gargus
contributed findNearbyBinaryIndex: which is nearly what we want:
!SequenceableCollection methodsFor: 'enumerating' stamp: 'jcg 1/27/2009
18:32'!
findNearbyBinaryIndex: aBlock
"Search for an element in the receiver using binary search.
The argument aBlock is a one-element block returning
0 - if the element is the one searched for
<0 - if the search should continue in the first half
>0 - if the search should continue in the second half
If no matching element is found, answer the closest index we could find."
| index low high test |
low := 1.
high := self size.
[index := high + low // 2.
low > high] whileFalse:[
test := aBlock value: (self at: index).
test = 0
ifTrue:[^index]
ifFalse:[test > 0
ifTrue: [low := index + 1]
ifFalse: [high := index - 1]]].
^index! !
but it doesn't answer an index > size when the searched for element should
be past the end.
#(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 0 - arg ] 0
#(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 24 - arg ] 7
I think it should read
!SequenceableCollection methodsFor: 'enumerating' stamp: 'eem 9/8/2011
10:23'!
findNearbyBinaryIndex: aBlock
"Search for an element in the receiver using binary search.
The argument aBlock is a one-element block returning
0 - if the element is the one searched for
<0 - if the search should continue in the first half
>0 - if the search should continue in the second half
If no matching element is found, answer the closest index we could find."
| index low high test |
low := 1.
high := self size.
[index := high + low // 2.
low > high] whileFalse:[
test := aBlock value: (self at: index).
test = 0
ifTrue:[^index]
ifFalse:[test > 0
ifTrue: [low := index + 1]
ifFalse: [high := index - 1]]].
^index = self size ifTrue: [index + 1] ifFalse: [index]! !
and then
#(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 0 - arg ] 0
#(1 3 5 7 11 15 23) findNearbyBinaryIndex: [ :arg | 24 - arg ] 8
and then the debugger method uses simply
i := sortedSourceMap findNearbyBinaryIndex: [:assoc| pc - assoc key].
in place of
i := sortedSourceMap indexForInserting: (pc -> nil)].
Find attached. I'll add this to Squeak trunk.
> I assume it was written this way for performance reasons, now that we have
> #findBinary: aBlock, we can rewrite the code achieving same performance
> using an ordinary collection, something like:
>
> "Maintain a sorted array of intervals"
> sortedSourceMap ifNil: [sortedSourceMap := self abstractSourceMap values
> sorted].
>
> "Look up which interval contains pc using a binary search"
> sortedSourceMap findBinary: [: one |
> (one includes: pc)
> ifTrue: [0]
> ifFalse: [one first > pc ifTrue: [-1] ifFalse: [1]] ]
>
> (with some extra code needed to deal with the cases where pc < first
> interval or > last interval)
>
> Cheers,
> Henry
>
>
--
best,
Eliot
Sept. 8, 2011