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
November 2009
- 80 participants
- 1107 messages
Re: [Pharo-project] [BUG]UndefinedObject(Object)>>doesNotUnderstand: #<
by Simon Denier
On 30 nov. 2009, at 18:15, Nicolas Cellier wrote:
> 2009/11/30 Simon Denier <Simon.Denier(a)inria.fr>:
>>
>> On 30 nov. 2009, at 16:49, Nicolas Cellier wrote:
>>
>>> Just the full source code would do:
>>>
>>> lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>> #testA...etc...
>>
>>
>> Can you be a bit more precise? I feel concerned about this, it's part
>> of something we did with Alex.
>>
>
> Are these auto-generated ?
Yes, these are generated.
> If yes, I guess you might easily cross some bytecode limits and
> produce un-compilable code...
> I would try to store Sets differently - for example:
>
> #passed -> #(#testSuite #testAssert #testRanOnlyOnce #testFail
> #testIsNotRerunOnDebug #testDefects #testResult
> #testDialectLocalizedException #testRunning #testError #testException
> #testShould #testWithExceptionDo) asSet
ok, thanks for the tip.
>
> Nicolas
>
>>>
>>> Nicolas
>>>
>>> 2009/11/30 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>>>> thanks can you let us knw the exact sequence your did?
>>>>
>>>> Stef
>>>>
>>>> On Nov 30, 2009, at 8:30 PM, csrabak(a)bol.com.br wrote:
>>>>
>>>>> I got a recent dev-image and ran some tests (all CollectionTests
>>>>> if this matter) and attempted to store the result.
>>>>>
>>>>> 30 November 2009 5:26:40 pm
>>>>>
>>>>> VM: Win32 - IX86 - NT - Squeak3.10.2 of '5 June 2008' [latest
>>>>> update: #7179]
>>>>> Image: PharoCore1.0rc1 [Latest update: #10498]
>>>>>
>>>>> SecurityManager state:
>>>>> Restricted: false
>>>>> FileAccess: true
>>>>> SocketAccess: true
>>>>> Working Dir E:\Pharo
>>>>> Trusted Dir E:\Pharo\Cesar S. Rabak
>>>>> Untrusted Dir C:\Documents and Settings\Cesar S. Rabak\Meus
>>>>> documentos\My Squeak
>>>>>
>>>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>>>> Receiver: nil
>>>>> Arguments and temporary variables:
>>>>> aMessage: < 0
>>>>> exception: MessageNotUnderstood: receiver of
>>>>> "<" is nil
>>>>> resumeValue: nil
>>>>> Receiver's instance variables:
>>>>> nil
>>>>>
>>>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>>>> Receiver: {an EncoderForV3PlusClosures}
>>>>> Arguments and temporary variables:
>>>>> literalIndex: nil
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> scopeTable: a Dictionary('category'->{category}
>>>>> 'classPool'->{classPool} 'envir...etc...
>>>>> nTemps: 0
>>>>> supered: false
>>>>> requestor: nil
>>>>> class: StringTest class
>>>>> selector: #lastStoredRun
>>>>> literalStream: a WriteStream {#Dictionary-
>>>>>> Dictionary. #add:. #'->'. #passed. #...etc...
>>>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-}
>>>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>>>> litIndSet: a Dictionary(#Dictionary-
>>>>> >Dictionary-
>>>>>> {Dictionary} #Set->Set->{Set} ...etc...
>>>>> litSet: a LiteralDictionary(size 302)
>>>>> sourceRanges: a Dictionary(size 309)
>>>>> globalSourceRanges: an OrderedCollection
>>>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>>>> addedSelectorAndMethodClassLiterals: false
>>>>> stream: {an EncoderForV3PlusClosures}
>>>>> position: 0
>>>>> rootNode: lastStoredRun
>>>>> ^ Dictionary new add: #passed -> (Set new add:
>>>>> #testAs...etc...
>>>>> blockExtentsToLocals: nil
>>>>>
>>>>> EncoderForV3PlusClosures(BytecodeEncoder)
>>>>>>> sizeOpcodeSelector:withArguments:
>>>>> Receiver: {an EncoderForV3PlusClosures}
>>>>> Arguments and temporary variables:
>>>>> genSelector: #genPushLiteral:
>>>>> args: #(nil)
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> scopeTable: a Dictionary('category'->{category}
>>>>> 'classPool'->{classPool} 'envir...etc...
>>>>> nTemps: 0
>>>>> supered: false
>>>>> requestor: nil
>>>>> class: StringTest class
>>>>> selector: #lastStoredRun
>>>>> literalStream: a WriteStream {#Dictionary-
>>>>>> Dictionary. #add:. #'->'. #passed. #...etc...
>>>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-}
>>>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>>>> litIndSet: a Dictionary(#Dictionary-
>>>>> >Dictionary-
>>>>>> {Dictionary} #Set->Set->{Set} ...etc...
>>>>> litSet: a LiteralDictionary(size 302)
>>>>> sourceRanges: a Dictionary(size 309)
>>>>> globalSourceRanges: an OrderedCollection
>>>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>>>> addedSelectorAndMethodClassLiterals: false
>>>>> stream: {an EncoderForV3PlusClosures}
>>>>> position: 0
>>>>> rootNode: lastStoredRun
>>>>> ^ Dictionary new add: #passed -> (Set new add:
>>>>> #testAs...etc...
>>>>> blockExtentsToLocals: nil
>>>>>
>>>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>>>> Receiver: {an EncoderForV3PlusClosures}
>>>>> Arguments and temporary variables:
>>>>> literalIndex: nil
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> scopeTable: a Dictionary('category'->{category}
>>>>> 'classPool'->{classPool} 'envir...etc...
>>>>> nTemps: 0
>>>>> supered: false
>>>>> requestor: nil
>>>>> class: StringTest class
>>>>> selector: #lastStoredRun
>>>>> literalStream: a WriteStream {#Dictionary-
>>>>>> Dictionary. #add:. #'->'. #passed. #...etc...
>>>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-}
>>>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>>>> litIndSet: a Dictionary(#Dictionary-
>>>>> >Dictionary-
>>>>>> {Dictionary} #Set->Set->{Set} ...etc...
>>>>> litSet: a LiteralDictionary(size 302)
>>>>> sourceRanges: a Dictionary(size 309)
>>>>> globalSourceRanges: an OrderedCollection
>>>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>>>> addedSelectorAndMethodClassLiterals: false
>>>>> stream: {an EncoderForV3PlusClosures}
>>>>> position: 0
>>>>> rootNode: lastStoredRun
>>>>> ^ Dictionary new add: #passed -> (Set new add:
>>>>> #testAs...etc...
>>>>> blockExtentsToLocals: nil
>>>>>
>>>>> LiteralNode>>sizeCodeForValue:
>>>>> Receiver: {#testWithWithWithWith}
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> key: #testWithWithWithWith
>>>>> code: -3
>>>>> index: nil
>>>>>
>>>>> [] in MessageNode>>sizeCodeForValue:
>>>>> Receiver: { add: #testWithWithWithWith}
>>>>> Arguments and temporary variables:
>>>>> <<error during printing>
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: nil
>>>>> selector: {add:}
>>>>> precedence: 3
>>>>> special: 0
>>>>> arguments: an OrderedCollection
>>>>> ({#testWithWithWithWith})
>>>>> sizes: #(nil)
>>>>> equalNode: nil
>>>>> caseErrorNode: nil
>>>>>
>>>>> OrderedCollection>>collect:
>>>>> Receiver: an OrderedCollection({#testWithWithWithWith})
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in
>>>>> MessageNode>>sizeCodeForValue:
>>>>> newCollection: an OrderedCollection()
>>>>> index: 3
>>>>> Receiver's instance variables:
>>>>> array: #(nil nil {#testWithWithWithWith} nil nil
>>>>> nil nil nil nil nil)
>>>>> firstIndex: 3
>>>>> lastIndex: 3
>>>>>
>>>>> MessageNode>>sizeCodeForValue:
>>>>> Receiver: { add: #testWithWithWithWith}
>>>>> Arguments and temporary variables:
>>>>> <<error during printing>
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: nil
>>>>> selector: {add:}
>>>>> precedence: 3
>>>>> special: 0
>>>>> arguments: an OrderedCollection
>>>>> ({#testWithWithWithWith})
>>>>> sizes: #(nil)
>>>>> equalNode: nil
>>>>> caseErrorNode: nil
>>>>>
>>>>> [] in CascadeNode>>sizeCodeForValue:
>>>>> Receiver: {Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedCollection;
>>>>> add: #tes...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: { add: #testWithWithWithWith}
>>>>> size: {an EncoderForV3PlusClosures}
>>>>> aMessage: #(1506)
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {Set new}
>>>>> messages: an OrderedCollection({ add:
>>>>> #testAsArray} { add: #testAsSet} { add: #...etc...
>>>>>
>>>>> OrderedCollection>>do:
>>>>> Receiver: an OrderedCollection({ add: #testAsArray} { add:
>>>>> #testAsSet} { add: #testAsSortedCollectio...etc...
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in
>>>>> CascadeNode>>sizeCodeForValue:
>>>>> index: 252
>>>>> Receiver's instance variables:
>>>>> array: an Array({ add: #testAsArray} { add:
>>>>> #testAsSet} { add: #testAsSortedCol...etc...
>>>>> firstIndex: 1
>>>>> lastIndex: 294
>>>>>
>>>>> CascadeNode>>sizeCodeForValue:
>>>>> Receiver: {Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedCollection;
>>>>> add: #tes...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> size: #(1506)
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {Set new}
>>>>> messages: an OrderedCollection({ add:
>>>>> #testAsArray} { add: #testAsSet} { add: #...etc...
>>>>>
>>>>> [] in MessageNode>>sizeCodeForValue:
>>>>> Receiver: {#passed -> (Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedCollectio...etc...
>>>>> Arguments and temporary variables:
>>>>> <<error during printing>
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {#passed}
>>>>> selector: {->}
>>>>> precedence: 2
>>>>> special: 0
>>>>> arguments: an Array({Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #test...etc...
>>>>> sizes: #(nil)
>>>>> equalNode: nil
>>>>> caseErrorNode: nil
>>>>>
>>>>> Array(SequenceableCollection)>>collect:
>>>>> Receiver: an Array({Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedCollection;
>>>>> ...etc...
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in
>>>>> MessageNode>>sizeCodeForValue:
>>>>> newCollection: #(nil)
>>>>> index: 1
>>>>> indexLimiT: 1
>>>>> Receiver's instance variables:
>>>>> an Array({Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedCollection;
>>>>> ...etc...
>>>>>
>>>>> MessageNode>>sizeCodeForValue:
>>>>> Receiver: {#passed -> (Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedCollectio...etc...
>>>>> Arguments and temporary variables:
>>>>> <<error during printing>
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {#passed}
>>>>> selector: {->}
>>>>> precedence: 2
>>>>> special: 0
>>>>> arguments: an Array({Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #test...etc...
>>>>> sizes: #(nil)
>>>>> equalNode: nil
>>>>> caseErrorNode: nil
>>>>>
>>>>> [] in MessageNode>>sizeCodeForValue:
>>>>> Receiver: { add: #passed -> (Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedC...etc...
>>>>> Arguments and temporary variables:
>>>>> <<error during printing>
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: nil
>>>>> selector: {add:}
>>>>> precedence: 3
>>>>> special: 0
>>>>> arguments: an OrderedCollection({#passed ->
>>>>> (Set new add: #testAsArray;
>>>>> add:...etc...
>>>>> sizes: #(nil)
>>>>> equalNode: nil
>>>>> caseErrorNode: nil
>>>>>
>>>>> OrderedCollection>>collect:
>>>>> Receiver: an OrderedCollection({#passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #...etc...
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in
>>>>> MessageNode>>sizeCodeForValue:
>>>>> newCollection: an OrderedCollection()
>>>>> index: 3
>>>>> Receiver's instance variables:
>>>>> array: an Array(nil nil {#passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAs...etc...
>>>>> firstIndex: 3
>>>>> lastIndex: 3
>>>>>
>>>>> MessageNode>>sizeCodeForValue:
>>>>> Receiver: { add: #passed -> (Set new add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: #testAsSortedC...etc...
>>>>> Arguments and temporary variables:
>>>>> <<error during printing>
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: nil
>>>>> selector: {add:}
>>>>> precedence: 3
>>>>> special: 0
>>>>> arguments: an OrderedCollection({#passed ->
>>>>> (Set new add: #testAsArray;
>>>>> add:...etc...
>>>>> sizes: #(nil)
>>>>> equalNode: nil
>>>>> caseErrorNode: nil
>>>>>
>>>>> [] in CascadeNode>>sizeCodeForValue:
>>>>> Receiver: {Dictionary new add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: ...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: { add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> ...etc...
>>>>> size: {an EncoderForV3PlusClosures}
>>>>> aMessage: #(10)
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {Dictionary new}
>>>>> messages: an OrderedCollection({ add:
>>>>> #passed -
>>>>>> (Set new add: #testAsArray;
>>>>> ...etc...
>>>>>
>>>>> OrderedCollection>>do:
>>>>> Receiver: an OrderedCollection({ add: #passed -> (Set new
>>>>> add: #testAsArray;
>>>>> add: #testAsSet;
>>>>> ...etc...
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in
>>>>> CascadeNode>>sizeCodeForValue:
>>>>> index: 3
>>>>> Receiver's instance variables:
>>>>> array: an Array(nil nil { add: #passed -> (Set new
>>>>> add: #testAsArray;
>>>>> add: ...etc...
>>>>> firstIndex: 3
>>>>> lastIndex: 7
>>>>>
>>>>> CascadeNode>>sizeCodeForValue:
>>>>> Receiver: {Dictionary new add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: ...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> size: #(10)
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {Dictionary new}
>>>>> messages: an OrderedCollection({ add:
>>>>> #passed -
>>>>>> (Set new add: #testAsArray;
>>>>> ...etc...
>>>>>
>>>>> CascadeNode(ParseNode)>>sizeCodeForReturn:
>>>>> Receiver: {Dictionary new add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> add: ...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> receiver: {Dictionary new}
>>>>> messages: an OrderedCollection({ add:
>>>>> #passed -
>>>>>> (Set new add: #testAsArray;
>>>>> ...etc...
>>>>>
>>>>> ReturnNode>>sizeCodeForValue:
>>>>> Receiver: {^ Dictionary new add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> add...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> expr: {Dictionary new add: #passed -> (Set new
>>>>> add: #testAsArray;
>>>>> add: #tes...etc...
>>>>>
>>>>> ReturnNode(ParseNode)>>sizeCodeForBlockValue:
>>>>> Receiver: {^ Dictionary new add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> add...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> expr: {Dictionary new add: #passed -> (Set new
>>>>> add: #testAsArray;
>>>>> add: #tes...etc...
>>>>>
>>>>> BlockNode>>sizeCodeForEvaluatedValue:
>>>>> Receiver: {[^ Dictionary new add: #passed -> (Set new add:
>>>>> #testAsArray;
>>>>> add: #testAsSet;
>>>>> ...etc...
>>>>> Arguments and temporary variables:
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> arguments: #()
>>>>> statements: an OrderedCollection({^ Dictionary
>>>>> new add: #passed -> (Set new add...etc...
>>>>> returns: true
>>>>> nArgsNode: nil
>>>>> size: nil
>>>>> remoteCopyNode: nil
>>>>> temporaries: an OrderedCollection()
>>>>> optimized: false
>>>>> actualScopeIfOptimized: nil
>>>>> blockExtent: (0 to: 2)
>>>>> remoteTempNode: nil
>>>>> copiedValues: nil
>>>>> closureCreationNode: nil
>>>>> startOfLastStatement: 16
>>>>>
>>>>> BytecodeAgnosticMethodNode>>generate:
>>>>> Receiver: lastStoredRun
>>>>> ^ Dictionary new add: #passed -> (Set new add: #testAsArray;
>>>>> add: #tes...etc...
>>>>> Arguments and temporary variables:
>>>>> trailer: #(0 0 0 0)
>>>>> primErrNode: nil
>>>>> blkSize: nil
>>>>> nLits: nil
>>>>> literals: nil
>>>>> stack: nil
>>>>> method: nil
>>>>> locals: nil
>>>>> lit: nil
>>>>> Receiver's instance variables:
>>>>> comment: nil
>>>>> pc: nil
>>>>> selectorOrFalse: #lastStoredRun
>>>>> precedence: 1
>>>>> arguments: #()
>>>>> block: {[^ Dictionary new add: #passed -> (Set new
>>>>> add: #testAsArray;
>>>>> add:...etc...
>>>>> primitive: 0
>>>>> encoder: {an EncoderForV3PlusClosures}
>>>>> temporaries: #()
>>>>> properties: an AdditionalMethodState
>>>>> sourceText: 'lastStoredRun
>>>>> ^ ((Dictionary new) add: (#passed->((Set new) add: ...etc...
>>>>> locationCounter: 3
>>>>> localsPool: an IdentitySet()
>>>>>
>>>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>>>> Receiver: CompiledMethodWithNode
>>>>> Arguments and temporary variables:
>>>>> aMethodNode: lastStoredRun
>>>>> ^ Dictionary new add: #passed -> (Set new add: #tes...etc...
>>>>> bytes: #(0 0 0 0)
>>>>> Receiver's instance variables:
>>>>> superclass: Object
>>>>> methodDict: a MethodDictionary(#method->a
>>>>> CompiledMethod(650: CompiledMethodWit...etc...
>>>>> format: 134
>>>>> instanceVariables: #('node' 'method')
>>>>> organization: ('accessing' method node selector)
>>>>> ('private' method: node:)
>>>>>
>>>>> subclasses: nil
>>>>> name: #CompiledMethodWithNode
>>>>> classPool: nil
>>>>> sharedPools: nil
>>>>> environment: Smalltalk
>>>>> category: #'Compiler-Support'
>>>>> traitComposition: nil
>>>>> localSelectors: nil
>>>>>
>>>>> Metaclass(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>>>> Receiver: StringTest class
>>>>> Arguments and temporary variables:
>>>>> code: 'lastStoredRun
>>>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>>> #testA...etc...
>>>>> category: 'history'
>>>>> requestor: nil
>>>>> bytes: #(0 0 0 0)
>>>>> failBlock: [closure] in Metaclass
>>>>> (ClassDescription)>>compile:classified:withSta...etc...
>>>>> methodNode: lastStoredRun
>>>>> ^ Dictionary new add: #passed -> (Set new add:
>>>>> #test...etc...
>>>>> Receiver's instance variables:
>>>>> superclass: CollectionRootTest class
>>>>> methodDict: a MethodDictionary()
>>>>> format: 158
>>>>> instanceVariables: nil
>>>>> organization: ('as yet unclassified')
>>>>>
>>>>> thisClass: StringTest
>>>>> traitComposition: TIncludesTest classTrait +
>>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>>> localSelectors: nil
>>>>>
>>>>> Metaclass(ClassDescription)
>>>>>>> compile:classified:withStamp:notifying:logSource:
>>>>> Receiver: StringTest class
>>>>> Arguments and temporary variables:
>>>>> text: 'lastStoredRun
>>>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>>> #testA...etc...
>>>>> category: 'history'
>>>>> changeStamp: 'CesarRabak 11/30/2009 17:26'
>>>>> requestor: nil
>>>>> logSource: true
>>>>> methodAndNode: nil
>>>>> Receiver's instance variables:
>>>>> superclass: CollectionRootTest class
>>>>> methodDict: a MethodDictionary()
>>>>> format: 158
>>>>> instanceVariables: nil
>>>>> organization: ('as yet unclassified')
>>>>>
>>>>> thisClass: StringTest
>>>>> traitComposition: TIncludesTest classTrait +
>>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>>> localSelectors: nil
>>>>>
>>>>> Metaclass(ClassDescription)
>>>>> >>compile:classified:withStamp:notifying:
>>>>> Receiver: StringTest class
>>>>> Arguments and temporary variables:
>>>>> text: 'lastStoredRun
>>>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>>> #testA...etc...
>>>>> category: 'history'
>>>>> changeStamp: 'CesarRabak 11/30/2009 17:26'
>>>>> requestor: nil
>>>>> Receiver's instance variables:
>>>>> superclass: CollectionRootTest class
>>>>> methodDict: a MethodDictionary()
>>>>> format: 158
>>>>> instanceVariables: nil
>>>>> organization: ('as yet unclassified')
>>>>>
>>>>> thisClass: StringTest
>>>>> traitComposition: TIncludesTest classTrait +
>>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>>> localSelectors: nil
>>>>>
>>>>> Metaclass(ClassDescription)>>compile:classified:notifying:
>>>>> Receiver: StringTest class
>>>>> Arguments and temporary variables:
>>>>> text: 'lastStoredRun
>>>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>>> #testA...etc...
>>>>> category: 'history'
>>>>> requestor: nil
>>>>> stamp: 'CesarRabak 11/30/2009 17:26'
>>>>> Receiver's instance variables:
>>>>> superclass: CollectionRootTest class
>>>>> methodDict: a MethodDictionary()
>>>>> format: 158
>>>>> instanceVariables: nil
>>>>> organization: ('as yet unclassified')
>>>>>
>>>>> thisClass: StringTest
>>>>> traitComposition: TIncludesTest classTrait +
>>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>>> localSelectors: nil
>>>>>
>>>>> Metaclass(ClassDescription)>>compile:classified:
>>>>> Receiver: StringTest class
>>>>> Arguments and temporary variables:
>>>>> code: 'lastStoredRun
>>>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>>> #testA...etc...
>>>>> heading: 'history'
>>>>> Receiver's instance variables:
>>>>> superclass: CollectionRootTest class
>>>>> methodDict: a MethodDictionary()
>>>>> format: 158
>>>>> instanceVariables: nil
>>>>> organization: ('as yet unclassified')
>>>>>
>>>>> thisClass: StringTest
>>>>> traitComposition: TIncludesTest classTrait +
>>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>>> localSelectors: nil
>>>>>
>>>>> StringTest class(TestCase class)>>generateLastStoredRunMethod
>>>>> Receiver: StringTest
>>>>> Arguments and temporary variables:
>>>>>
>>>>> Receiver's instance variables:
>>>>> superclass: CollectionRootTest
>>>>> methodDict: a MethodDictionary(size 321)
>>>>> format: 158
>>>>> instanceVariables: #('string' 'emptyString'
>>>>> 'elementInNonEmpty' 'notIn' 'subcol...etc...
>>>>> organization: ('initialization' setUp)
>>>>> ('requirements' aValue anIndex anotherEl...etc...
>>>>> subclasses: nil
>>>>> name: #StringTest
>>>>> classPool: nil
>>>>> sharedPools: nil
>>>>> environment: Smalltalk
>>>>> category: #'CollectionsTests-Text'
>>>>> traitComposition: TIncludesTest + TCloneTest +
>>>>> TCopyTest + TSetArithmetic + TIt...etc...
>>>>> localSelectors: an IdentitySet(#elementNotIn
>>>>> #firstIndex #replacementCollection...etc...
>>>>> history: a Dictionary(#errors->a Set()
>>>>> #failures->a Set() #passed->a Set(#testA...etc...
>>>>>
>>>>> [] in TestRunner>>storeResultIntoTestCases
>>>>> Receiver: a TestRunner
>>>>> Arguments and temporary variables:
>>>>> testCaseCls: StringTest
>>>>> Receiver's instance variables:
>>>>> categories: #(#'AST-Tests'
>>>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>>>> categoriesSelected: a Set(#'CollectionsTests-
>>>>> Support' #'CollectionsTests-Weak' ...etc...
>>>>> classes: {Base64MimeConverterTest.
>>>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>>>> classIndex: 0
>>>>> classesSelected: a Set(TextAndTextStreamTest
>>>>> WideStringTest WriteStreamTest Ide...etc...
>>>>> failedList: #()
>>>>> failedSelected: nil
>>>>> errorList: #()
>>>>> errorSelected: nil
>>>>> lastUpdate: 3437054762
>>>>> result: 4978 run, 4978 passes, 0 expected
>>>>> failures, 0 failures, 0 errors, 0 une...etc...
>>>>> previousRun: nil
>>>>>
>>>>> Set>>do:
>>>>> Receiver: a Set(RunArrayTest SmallDictionaryTest StringTest
>>>>> WeakKeyToCollectionDictionaryTest ArrayT...etc...
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in
>>>>> TestRunner>>storeResultIntoTestCases
>>>>> index: 364
>>>>> each: StringTest
>>>>> indexLimiT: 6638
>>>>> Receiver's instance variables:
>>>>> tally: 49
>>>>> array: {nil. nil. nil. nil. nil. nil. nil. nil.
>>>>> nil. nil. nil. nil. nil. nil. n...etc...
>>>>>
>>>>> TestRunner>>storeResultIntoTestCases
>>>>> Receiver: a TestRunner
>>>>> Arguments and temporary variables:
>>>>>
>>>>> Receiver's instance variables:
>>>>> categories: #(#'AST-Tests'
>>>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>>>> categoriesSelected: a Set(#'CollectionsTests-
>>>>> Support' #'CollectionsTests-Weak' ...etc...
>>>>> classes: {Base64MimeConverterTest.
>>>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>>>> classIndex: 0
>>>>> classesSelected: a Set(TextAndTextStreamTest
>>>>> WideStringTest WriteStreamTest Ide...etc...
>>>>> failedList: #()
>>>>> failedSelected: nil
>>>>> errorList: #()
>>>>> errorSelected: nil
>>>>> lastUpdate: 3437054762
>>>>> result: 4978 run, 4978 passes, 0 expected
>>>>> failures, 0 failures, 0 errors, 0 une...etc...
>>>>> previousRun: nil
>>>>>
>>>>> TestRunner>>perform:orSendTo:
>>>>> Receiver: a TestRunner
>>>>> Arguments and temporary variables:
>>>>> selector: #storeResultIntoTestCases
>>>>> otherTarget: a PluggableTextMorphPlus(3170)
>>>>> Receiver's instance variables:
>>>>> categories: #(#'AST-Tests'
>>>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>>>> categoriesSelected: a Set(#'CollectionsTests-
>>>>> Support' #'CollectionsTests-Weak' ...etc...
>>>>> classes: {Base64MimeConverterTest.
>>>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>>>> classIndex: 0
>>>>> classesSelected: a Set(TextAndTextStreamTest
>>>>> WideStringTest WriteStreamTest Ide...etc...
>>>>> failedList: #()
>>>>> failedSelected: nil
>>>>> errorList: #()
>>>>> errorSelected: nil
>>>>> lastUpdate: 3437054762
>>>>> result: 4978 run, 4978 passes, 0 expected
>>>>> failures, 0 failures, 0 errors, 0 une...etc...
>>>>> previousRun: nil
>>>>>
>>>>> [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>>>> Receiver: a ToggleMenuItemMorph(2690)'Store result as
>>>>> progress reference'
>>>>> Arguments and temporary variables:
>>>>> evt: [675@67 mouseUp 21933765 nil]
>>>>> selArgCount: #(2)
>>>>> Receiver's instance variables:
>>>>> bounds: 613@54 corner: 836@70
>>>>> owner: a MenuMorph(2400)
>>>>> submorphs: #()
>>>>> fullBounds: 613@54 corner: 836@70
>>>>> color: Color black
>>>>> extension: a MorphExtension (2845) [other:
>>>>> (layoutProperties -> a LayoutProper...etc...
>>>>> font: a LogicalFont
>>>>> familyName: DejaVu Sans
>>>>> emphasis: nil
>>>>> pointSize: 10
>>>>> rea...etc...
>>>>> emphasis: 0
>>>>> contents: 'Store result as progress reference'
>>>>> hasFocus: false
>>>>> isEnabled: true
>>>>> subMenu: nil
>>>>> isSelected: false
>>>>> target: a TestRunner
>>>>> selector: #perform:orSendTo:
>>>>> arguments: an Array(#storeResultIntoTestCases a
>>>>> PluggableTextMorphPlus(3170))
>>>>> icon: nil
>>>>> getStateSelector: nil
>>>>> enablementSelector: nil
>>>>> keyText: nil
>>>>>
>>>>> BlockClosure>>ensure:
>>>>> Receiver: [closure] in ToggleMenuItemMorph(MenuItemMorph)
>>>>>>> invokeWithEvent:
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in CursorWithMask(Cursor)
>>>>>>> showWhile:
>>>>> returnValue: nil
>>>>> b: nil
>>>>> Receiver's instance variables:
>>>>> outerContext: ToggleMenuItemMorph(MenuItemMorph)
>>>>>>> invokeWithEvent:
>>>>> startpc: 136
>>>>> numArgs: 0
>>>>>
>>>>> CursorWithMask(Cursor)>>showWhile:
>>>>> Receiver: ((CursorWithMask
>>>>> extent: 16@16
>>>>> depth: 1
>>>>> fromArray: #(
>>>>> 2r0
>>>>> 2r10000000000000000000000...etc...
>>>>> Arguments and temporary variables:
>>>>> aBlock: [closure] in ToggleMenuItemMorph
>>>>> (MenuItemMorph)>>invokeWithEvent:
>>>>> oldcursor: ((CursorWithMask
>>>>> extent: 16@16
>>>>> depth: 1
>>>>> fromArray: #(
>>>>> 2r0
>>>>> 2r1...etc...
>>>>> Receiver's instance variables:
>>>>> bits: a Bitmap of length 16
>>>>> width: 16
>>>>> height: 16
>>>>> depth: 1
>>>>> offset: -1@-1
>>>>> maskForm: Form(16x16x1)
>>>>>
>>>>>
>>>>> --- The full stack ---
>>>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>>>> EncoderForV3PlusClosures(BytecodeEncoder)
>>>>>>> sizeOpcodeSelector:withArguments:
>>>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>>>> LiteralNode>>sizeCodeForValue:
>>>>> [] in MessageNode>>sizeCodeForValue:
>>>>> OrderedCollection>>collect:
>>>>> MessageNode>>sizeCodeForValue:
>>>>> [] in CascadeNode>>sizeCodeForValue:
>>>>> OrderedCollection>>do:
>>>>> CascadeNode>>sizeCodeForValue:
>>>>> [] in MessageNode>>sizeCodeForValue:
>>>>> Array(SequenceableCollection)>>collect:
>>>>> MessageNode>>sizeCodeForValue:
>>>>> [] in MessageNode>>sizeCodeForValue:
>>>>> OrderedCollection>>collect:
>>>>> MessageNode>>sizeCodeForValue:
>>>>> [] in CascadeNode>>sizeCodeForValue:
>>>>> OrderedCollection>>do:
>>>>> CascadeNode>>sizeCodeForValue:
>>>>> CascadeNode(ParseNode)>>sizeCodeForReturn:
>>>>> ReturnNode>>sizeCodeForValue:
>>>>> ReturnNode(ParseNode)>>sizeCodeForBlockValue:
>>>>> BlockNode>>sizeCodeForEvaluatedValue:
>>>>> BytecodeAgnosticMethodNode>>generate:
>>>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>>>> Metaclass(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>>>> Metaclass(ClassDescription)
>>>>>>> compile:classified:withStamp:notifying:logSource:
>>>>> Metaclass(ClassDescription)
>>>>> >>compile:classified:withStamp:notifying:
>>>>> Metaclass(ClassDescription)>>compile:classified:notifying:
>>>>> Metaclass(ClassDescription)>>compile:classified:
>>>>> StringTest class(TestCase class)>>generateLastStoredRunMethod
>>>>> [] in TestRunner>>storeResultIntoTestCases
>>>>> Set>>do:
>>>>> TestRunner>>storeResultIntoTestCases
>>>>> TestRunner>>perform:orSendTo:
>>>>> [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>>>> BlockClosure>>ensure:
>>>>> CursorWithMask(Cursor)>>showWhile:
>>>>> - - - - - - - - - - - - - - -
>>>>> - - - - - - - - - - - - - - - - - -
>>>>> ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>>>> ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
>>>>> ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
>>>>> MouseButtonEvent>>sentTo:
>>>>> ToggleMenuItemMorph(Morph)>>handleEvent:
>>>>> MorphicEventDispatcher>>dispatchDefault:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> ToggleMenuItemMorph(Morph)>>processEvent:using:
>>>>> MorphicEventDispatcher>>dispatchDefault:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> MenuMorph(Morph)>>processEvent:using:
>>>>> MenuMorph(Morph)>>processEvent:
>>>>> MenuMorph>>handleFocusEvent:
>>>>> [] in HandMorph>>sendFocusEvent:to:clear:
>>>>> [] in PasteUpMorph>>becomeActiveDuring:
>>>>> BlockClosure>>on:do:
>>>>> PasteUpMorph>>becomeActiveDuring:
>>>>> HandMorph>>sendFocusEvent:to:clear:
>>>>> HandMorph>>sendEvent:focus:clear:
>>>>> HandMorph>>sendMouseEvent:
>>>>> HandMorph>>handleEvent:
>>>>> HandMorph>>processEvents
>>>>> [] in WorldState>>doOneCycleNowFor:
>>>>> Array(SequenceableCollection)>>do:
>>>>> WorldState>>handsDo:
>>>>> WorldState>>doOneCycleNowFor:
>>>>> WorldState>>doOneCycleFor:
>>>>> WorldState>>doOneSubCycleFor:
>>>>> PasteUpMorph>>doOneSubCycle
>>>>> MenuMorph>>invokeModalAt:in:allowKeyboard:
>>>>> MenuMorph>>invokeModal:
>>>>> MenuMorph>>invokeModal
>>>>> PluggableTextMorphPlus(PluggableTextMorph)>>yellowButtonActivity:
>>>>> TextMorphForEditView>>mouseDown:
>>>>> TextMorphForEditView(Morph)>>handleMouseDown:
>>>>> MouseButtonEvent>>sentTo:
>>>>> TextMorphForEditView(Morph)>>handleEvent:
>>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> TextMorphForEditView(Morph)>>processEvent:using:
>>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> TransformMorph(Morph)>>processEvent:using:
>>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> PluggableTextMorphPlus(Morph)>>processEvent:using:
>>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> PluggableStandardWindow(Morph)>>processEvent:using:
>>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>>> PasteUpMorph(Morph)>>processEvent:using:
>>>>> PasteUpMorph>>processEvent:using:
>>>>> PasteUpMorph(Morph)>>processEvent:
>>>>> HandMorph>>sendEvent:focus:clear:
>>>>> HandMorph>>sendMouseEvent:
>>>>> HandMorph>>handleEvent:
>>>>> HandMorph>>processEvents
>>>>> [] in WorldState>>doOneCycleNowFor:
>>>>> Array(SequenceableCollection)>>do:
>>>>> WorldState>>handsDo:
>>>>> WorldState>>doOneCycleNowFor:
>>>>> WorldState>>doOneCycleFor:
>>>>> PasteUpMorph>>doOneCycle
>>>>> [] in Project class>>spawnNewProcess
>>>>> [] in BlockClosure>>newProcess
>>>>>
>>>>> --
>>>>> Cesar Rabak
>>>>>
>>>>> _______________________________________________
>>>>> Pharo-project mailing list
>>>>> Pharo-project(a)lists.gforge.inria.fr
>>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-
>>>>> project
>>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>> --
>> Simon
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
Simon
Nov. 30, 2009
Re: [Pharo-project] Fwd: [squeak-dev] Updated trunk image
by Stéphane Ducasse
Yes I know.
Stef
On Nov 30, 2009, at 9:26 PM, Nicolas Cellier wrote:
> 2009/11/30 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>> ok so I imagine that this is already in pharo :)
>> Excellent.
>>
>> Stef
>>
>
> The only complication is that every DisplayScanner & co method was
> reformatted in Pharo.
> Chasing my own changes gets a bit tricky in these conditions...
> I would need a special merger option to ignore formats (just scan code
> and compare the sequence of tokens for example...).
>
> Nicolas
>
>> On Nov 30, 2009, at 8:35 PM, Nicolas Cellier wrote:
>>
>>> 2009/11/30 Henrik Sperre Johansen <henrik.s.johansen(a)veloxit.no>:
>>>> On 30.11.2009 19:29, Stéphane Ducasse wrote:
>>>>>>
>>>>>>>>> Collections
>>>>>>>>> -----------
>>>>>>>>> Conversion of OrderedCollection and SortedCollection to Arrays has been sped up significantly.
>>>>>>>>>
>>>>>> Yes, it should be ported to Pharo, I see no reason of divergence there.
>>>>>>
>>>>> Yes and I like the fast in the sentence :)
>>>> It's probably along the lines of what I did back in August for Pharo,
>>>> using the array primitives directly, instead of copying the elements one
>>>> by one.
>>>>
>>>> Cheers,
>>>> Henry
>>>>
>>>
>>> Oops, sorry, I did not noticed this one in Pharo and just rediscovered it.
>>> My implementation is a bit shorter and yours is faster:
>>>
>>> asArray
>>> "Overriden for speed"
>>> ^array copyFrom: firstIndex to: lastIndex
>>>
>>> Cheers
>>>
>>> Nicolas
>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Nov. 30, 2009
Re: [Pharo-project] MPEG in Pharo depricated why?
by Henrik Sperre Johansen
I tried to generate one using the files provided at squeakvm.org, ran
into some issues:
- First run, lots of undefined errors in Interpreter. "Resolved" this by
using sqVirtualMachine.c/h from \Cross\plugins\IA32ABI
- Second run, quite a few of the VMMaker-generated methods using nil as
a parameters in code generated by cCode: strings. Changed these to null.
- Third run, error in ia32abicc.c, MEM_TOP_DOWN undeclared.
And that's where I stopped for the evening, any pointer to things I'm
doing wrong would be appreciated..
Cheers,
Henry
On 30.11.2009 20:15, John M McIntosh wrote:
> Well what I need is some windows user to build a windows VM,
> then install the Alien VMMaker additions, rebuild the VM and test to confirm it works or not.
> Without a such effort it won't happen
>
> On 2009-11-30, at 8:17 AM, Stéphane Ducasse wrote:
>
>
>>>
>>>> Yes but that someone is busy so if someone else would publish the code in the inbox the someone would be happy
>>>> but thanks for the point.
>>>>
>>> I had worked on this a bit (Sophie clipboard, sophie quicktime graphics reader, macintosh navigation services) but.
>>>
>>> (a) it requires FFI in the image, did we decide FFI and Alien should be in Pharo? I think that is an open question.
>>>
>> Is alien working on windows?
>> May be we could have FFI and Alien
>>
>> FFI in the process of making sure that alien will work everywhere.
>> May be this is the best way to make sure that Alien will not make progress :)
>>
>>
> --
> ===========================================================================
> John M. McIntosh<johnmci(a)smalltalkconsulting.com> Twitter: squeaker68882
> Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
> ===========================================================================
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
>
Nov. 30, 2009
[Pharo-project] How do I know which issues are resolved in each new release?
by Tim Mackinnon
Hi guys - I noticed there was a new 9.11.4 release since buenos aires - and I got to wondering what issues have been resolved in it (as I am trying to follow Pharo by example - I am trying to test out features to see if they work as I progress through the material).
Anyway - is there a list of issues fixed marked against each new version? I can see the list at: http://code.google.com/p/pharo/issues/list# - but it doesn't list any build numbers - just milestone 1.1?
Tim
Nov. 30, 2009
Re: [Pharo-project] [BUG]UndefinedObject(Object)>>doesNotUnderstand: #<
by Nicolas Cellier
2009/11/30 Simon Denier <Simon.Denier(a)inria.fr>:
>
> On 30 nov. 2009, at 16:49, Nicolas Cellier wrote:
>
>> Just the full source code would do:
>>
>> lastStoredRun
>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add:
>> #testA...etc...
>
>
> Can you be a bit more precise? I feel concerned about this, it's part
> of something we did with Alex.
>
Are these auto-generated ?
If yes, I guess you might easily cross some bytecode limits and
produce un-compilable code...
I would try to store Sets differently - for example:
#passed -> #(#testSuite #testAssert #testRanOnlyOnce #testFail
#testIsNotRerunOnDebug #testDefects #testResult
#testDialectLocalizedException #testRunning #testError #testException
#testShould #testWithExceptionDo) asSet
Nicolas
>>
>> Nicolas
>>
>> 2009/11/30 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>>> thanks can you let us knw the exact sequence your did?
>>>
>>> Stef
>>>
>>> On Nov 30, 2009, at 8:30 PM, csrabak(a)bol.com.br wrote:
>>>
>>>> I got a recent dev-image and ran some tests (all CollectionTests
>>>> if this matter) and attempted to store the result.
>>>>
>>>> 30 November 2009 5:26:40 pm
>>>>
>>>> VM: Win32 - IX86 - NT - Squeak3.10.2 of '5 June 2008' [latest
>>>> update: #7179]
>>>> Image: PharoCore1.0rc1 [Latest update: #10498]
>>>>
>>>> SecurityManager state:
>>>> Restricted: false
>>>> FileAccess: true
>>>> SocketAccess: true
>>>> Working Dir E:\Pharo
>>>> Trusted Dir E:\Pharo\Cesar S. Rabak
>>>> Untrusted Dir C:\Documents and Settings\Cesar S. Rabak\Meus
>>>> documentos\My Squeak
>>>>
>>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>>> Â Â Â Receiver: nil
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aMessage: Â Â Â < 0
>>>> Â Â Â Â Â Â Â exception: Â Â Â MessageNotUnderstood: receiver of
>>>> "<" is nil
>>>> Â Â Â Â Â Â Â resumeValue: Â Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> nil
>>>>
>>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>>> Â Â Â Receiver: {an EncoderForV3PlusClosures}
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â literalIndex: Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â scopeTable: Â Â a Dictionary('category'->{category}
>>>> 'classPool'->{classPool} 'envir...etc...
>>>> Â Â Â Â Â Â Â nTemps: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â supered: Â Â Â Â false
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Â Â Â Â class: Â StringTest class
>>>> Â Â Â Â Â Â Â selector: Â Â Â #lastStoredRun
>>>> Â Â Â Â Â Â Â literalStream: Â a WriteStream {#Dictionary-
>>>> >Dictionary. #add:. #'->'. #passed. #...etc...
>>>> Â Â Â Â Â Â Â selectorSet: Â Â a Dictionary(#*->{*} #+->{+} #-->{-}
>>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>>> Â Â Â Â Â Â Â litIndSet: Â Â Â a Dictionary(#Dictionary->Dictionary-
>>>> >{Dictionary} #Set->Set->{Set} ...etc...
>>>> Â Â Â Â Â Â Â litSet: Â Â Â Â a LiteralDictionary(size 302)
>>>> Â Â Â Â Â Â Â sourceRanges: Â a Dictionary(size 309)
>>>> Â Â Â Â Â Â Â globalSourceRanges: Â Â an OrderedCollection
>>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>>> Â Â Â Â Â Â Â addedSelectorAndMethodClassLiterals: Â Â false
>>>> Â Â Â Â Â Â Â stream: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â position: Â Â Â 0
>>>> Â Â Â Â Â Â Â rootNode: Â Â Â lastStoredRun
>>>> Â Â Â ^ Dictionary new add: #passed -> (Set new add:
>>>> #testAs...etc...
>>>> Â Â Â Â Â Â Â blockExtentsToLocals: Â nil
>>>>
>>>> EncoderForV3PlusClosures(BytecodeEncoder)
>>>> >>sizeOpcodeSelector:withArguments:
>>>> Â Â Â Receiver: {an EncoderForV3PlusClosures}
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â genSelector: Â Â #genPushLiteral:
>>>> Â Â Â Â Â Â Â args: Â #(nil)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â scopeTable: Â Â a Dictionary('category'->{category}
>>>> 'classPool'->{classPool} 'envir...etc...
>>>> Â Â Â Â Â Â Â nTemps: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â supered: Â Â Â Â false
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Â Â Â Â class: Â StringTest class
>>>> Â Â Â Â Â Â Â selector: Â Â Â #lastStoredRun
>>>> Â Â Â Â Â Â Â literalStream: Â a WriteStream {#Dictionary-
>>>> >Dictionary. #add:. #'->'. #passed. #...etc...
>>>> Â Â Â Â Â Â Â selectorSet: Â Â a Dictionary(#*->{*} #+->{+} #-->{-}
>>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>>> Â Â Â Â Â Â Â litIndSet: Â Â Â a Dictionary(#Dictionary->Dictionary-
>>>> >{Dictionary} #Set->Set->{Set} ...etc...
>>>> Â Â Â Â Â Â Â litSet: Â Â Â Â a LiteralDictionary(size 302)
>>>> Â Â Â Â Â Â Â sourceRanges: Â a Dictionary(size 309)
>>>> Â Â Â Â Â Â Â globalSourceRanges: Â Â an OrderedCollection
>>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>>> Â Â Â Â Â Â Â addedSelectorAndMethodClassLiterals: Â Â false
>>>> Â Â Â Â Â Â Â stream: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â position: Â Â Â 0
>>>> Â Â Â Â Â Â Â rootNode: Â Â Â lastStoredRun
>>>> Â Â Â ^ Dictionary new add: #passed -> (Set new add:
>>>> #testAs...etc...
>>>> Â Â Â Â Â Â Â blockExtentsToLocals: Â nil
>>>>
>>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>>> Â Â Â Receiver: {an EncoderForV3PlusClosures}
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â literalIndex: Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â scopeTable: Â Â a Dictionary('category'->{category}
>>>> 'classPool'->{classPool} 'envir...etc...
>>>> Â Â Â Â Â Â Â nTemps: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â supered: Â Â Â Â false
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Â Â Â Â class: Â StringTest class
>>>> Â Â Â Â Â Â Â selector: Â Â Â #lastStoredRun
>>>> Â Â Â Â Â Â Â literalStream: Â a WriteStream {#Dictionary-
>>>> >Dictionary. #add:. #'->'. #passed. #...etc...
>>>> Â Â Â Â Â Â Â selectorSet: Â Â a Dictionary(#*->{*} #+->{+} #-->{-}
>>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>>> Â Â Â Â Â Â Â litIndSet: Â Â Â a Dictionary(#Dictionary->Dictionary-
>>>> >{Dictionary} #Set->Set->{Set} ...etc...
>>>> Â Â Â Â Â Â Â litSet: Â Â Â Â a LiteralDictionary(size 302)
>>>> Â Â Â Â Â Â Â sourceRanges: Â a Dictionary(size 309)
>>>> Â Â Â Â Â Â Â globalSourceRanges: Â Â an OrderedCollection
>>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>>> Â Â Â Â Â Â Â addedSelectorAndMethodClassLiterals: Â Â false
>>>> Â Â Â Â Â Â Â stream: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â position: Â Â Â 0
>>>> Â Â Â Â Â Â Â rootNode: Â Â Â lastStoredRun
>>>> Â Â Â ^ Dictionary new add: #passed -> (Set new add:
>>>> #testAs...etc...
>>>> Â Â Â Â Â Â Â blockExtentsToLocals: Â nil
>>>>
>>>> LiteralNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {#testWithWithWithWith}
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â key: Â Â #testWithWithWithWith
>>>> Â Â Â Â Â Â Â code: Â -3
>>>> Â Â Â Â Â Â Â index: Â nil
>>>>
>>>> [] in MessageNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: { add: #testWithWithWithWith}
>>>> Â Â Â Arguments and temporary variables:
>>>> <<error during printing>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â nil
>>>> Â Â Â Â Â Â Â selector: Â Â Â {add:}
>>>> Â Â Â Â Â Â Â precedence: Â Â 3
>>>> Â Â Â Â Â Â Â special: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an OrderedCollection
>>>> ({#testWithWithWithWith})
>>>> Â Â Â Â Â Â Â sizes: Â #(nil)
>>>> Â Â Â Â Â Â Â equalNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â caseErrorNode: Â nil
>>>>
>>>> OrderedCollection>>collect:
>>>> Â Â Â Receiver: an OrderedCollection({#testWithWithWithWith})
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in
>>>> MessageNode>>sizeCodeForValue:
>>>> Â Â Â Â Â Â Â newCollection: Â an OrderedCollection()
>>>> Â Â Â Â Â Â Â index: Â 3
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â array: Â #(nil nil {#testWithWithWithWith} nil nil
>>>> nil nil nil nil nil)
>>>> Â Â Â Â Â Â Â firstIndex: Â Â 3
>>>> Â Â Â Â Â Â Â lastIndex: Â Â Â 3
>>>>
>>>> MessageNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: { add: #testWithWithWithWith}
>>>> Â Â Â Arguments and temporary variables:
>>>> <<error during printing>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â nil
>>>> Â Â Â Â Â Â Â selector: Â Â Â {add:}
>>>> Â Â Â Â Â Â Â precedence: Â Â 3
>>>> Â Â Â Â Â Â Â special: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an OrderedCollection
>>>> ({#testWithWithWithWith})
>>>> Â Â Â Â Â Â Â sizes: Â #(nil)
>>>> Â Â Â Â Â Â Â equalNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â caseErrorNode: Â nil
>>>>
>>>> [] in CascadeNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {Set new add: #testAsArray;
>>>> Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â add: #testAsSortedCollection;
>>>> Â Â Â Â add: #tes...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â { add: #testWithWithWithWith}
>>>> Â Â Â Â Â Â Â size: Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â aMessage: Â Â Â #(1506)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {Set new}
>>>> Â Â Â Â Â Â Â messages: Â Â Â an OrderedCollection({ add:
>>>> #testAsArray} { add: #testAsSet} { add: #...etc...
>>>>
>>>> OrderedCollection>>do:
>>>> Â Â Â Receiver: an OrderedCollection({ add: #testAsArray} { add:
>>>> #testAsSet} { add: #testAsSortedCollectio...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in
>>>> CascadeNode>>sizeCodeForValue:
>>>> Â Â Â Â Â Â Â index: Â 252
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â array: Â an Array({ add: #testAsArray} { add:
>>>> #testAsSet} { add: #testAsSortedCol...etc...
>>>> Â Â Â Â Â Â Â firstIndex: Â Â 1
>>>> Â Â Â Â Â Â Â lastIndex: Â Â Â 294
>>>>
>>>> CascadeNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {Set new add: #testAsArray;
>>>> Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â add: #testAsSortedCollection;
>>>> Â Â Â Â add: #tes...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â size: Â #(1506)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {Set new}
>>>> Â Â Â Â Â Â Â messages: Â Â Â an OrderedCollection({ add:
>>>> #testAsArray} { add: #testAsSet} { add: #...etc...
>>>>
>>>> [] in MessageNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {#passed -> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â add: #testAsSortedCollectio...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> <<error during printing>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {#passed}
>>>> Â Â Â Â Â Â Â selector: Â Â Â {->}
>>>> Â Â Â Â Â Â Â precedence: Â Â 2
>>>> Â Â Â Â Â Â Â special: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an Array({Set new add: #testAsArray;
>>>> Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â add: #test...etc...
>>>> Â Â Â Â Â Â Â sizes: Â #(nil)
>>>> Â Â Â Â Â Â Â equalNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â caseErrorNode: Â nil
>>>>
>>>> Array(SequenceableCollection)>>collect:
>>>> Â Â Â Receiver: an Array({Set new add: #testAsArray;
>>>> Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â add: #testAsSortedCollection;
>>>> Â Â Â Â ...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in
>>>> MessageNode>>sizeCodeForValue:
>>>> Â Â Â Â Â Â Â newCollection: Â #(nil)
>>>> Â Â Â Â Â Â Â index: Â 1
>>>> Â Â Â Â Â Â Â indexLimiT: Â Â 1
>>>> Â Â Â Receiver's instance variables:
>>>> an Array({Set new add: #testAsArray;
>>>> Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â add: #testAsSortedCollection;
>>>> Â Â Â Â ...etc...
>>>>
>>>> MessageNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {#passed -> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â add: #testAsSortedCollectio...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> <<error during printing>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {#passed}
>>>> Â Â Â Â Â Â Â selector: Â Â Â {->}
>>>> Â Â Â Â Â Â Â precedence: Â Â 2
>>>> Â Â Â Â Â Â Â special: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an Array({Set new add: #testAsArray;
>>>> Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â add: #test...etc...
>>>> Â Â Â Â Â Â Â sizes: Â #(nil)
>>>> Â Â Â Â Â Â Â equalNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â caseErrorNode: Â nil
>>>>
>>>> [] in MessageNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: { add: #passed -> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSortedC...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> <<error during printing>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â nil
>>>> Â Â Â Â Â Â Â selector: Â Â Â {add:}
>>>> Â Â Â Â Â Â Â precedence: Â Â 3
>>>> Â Â Â Â Â Â Â special: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an OrderedCollection({#passed ->
>>>> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â add:...etc...
>>>> Â Â Â Â Â Â Â sizes: Â #(nil)
>>>> Â Â Â Â Â Â Â equalNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â caseErrorNode: Â nil
>>>>
>>>> OrderedCollection>>collect:
>>>> Â Â Â Receiver: an OrderedCollection({#passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â add: #...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in
>>>> MessageNode>>sizeCodeForValue:
>>>> Â Â Â Â Â Â Â newCollection: Â an OrderedCollection()
>>>> Â Â Â Â Â Â Â index: Â 3
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â array: Â an Array(nil nil {#passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â add: #testAs...etc...
>>>> Â Â Â Â Â Â Â firstIndex: Â Â 3
>>>> Â Â Â Â Â Â Â lastIndex: Â Â Â 3
>>>>
>>>> MessageNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: { add: #passed -> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSortedC...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> <<error during printing>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â nil
>>>> Â Â Â Â Â Â Â selector: Â Â Â {add:}
>>>> Â Â Â Â Â Â Â precedence: Â Â 3
>>>> Â Â Â Â Â Â Â special: Â Â Â Â 0
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an OrderedCollection({#passed ->
>>>> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â add:...etc...
>>>> Â Â Â Â Â Â Â sizes: Â #(nil)
>>>> Â Â Â Â Â Â Â equalNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â caseErrorNode: Â nil
>>>>
>>>> [] in CascadeNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {Dictionary new add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: ...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â { add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â ...etc...
>>>> Â Â Â Â Â Â Â size: Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â aMessage: Â Â Â #(10)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {Dictionary new}
>>>> Â Â Â Â Â Â Â messages: Â Â Â an OrderedCollection({ add: #passed -
>>>> > (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â ...etc...
>>>>
>>>> OrderedCollection>>do:
>>>> Â Â Â Receiver: an OrderedCollection({ add: #passed -> (Set new
>>>> add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â ...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in
>>>> CascadeNode>>sizeCodeForValue:
>>>> Â Â Â Â Â Â Â index: Â 3
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â array: Â an Array(nil nil { add: #passed -> (Set new
>>>> add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: ...etc...
>>>> Â Â Â Â Â Â Â firstIndex: Â Â 3
>>>> Â Â Â Â Â Â Â lastIndex: Â Â Â 7
>>>>
>>>> CascadeNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {Dictionary new add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: ...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â size: Â #(10)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {Dictionary new}
>>>> Â Â Â Â Â Â Â messages: Â Â Â an OrderedCollection({ add: #passed -
>>>> > (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â ...etc...
>>>>
>>>> CascadeNode(ParseNode)>>sizeCodeForReturn:
>>>> Â Â Â Receiver: {Dictionary new add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: ...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â receiver: Â Â Â {Dictionary new}
>>>> Â Â Â Â Â Â Â messages: Â Â Â an OrderedCollection({ add: #passed -
>>>> > (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â ...etc...
>>>>
>>>> ReturnNode>>sizeCodeForValue:
>>>> Â Â Â Receiver: {^ Dictionary new add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â expr: Â {Dictionary new add: #passed -> (Set new
>>>> add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #tes...etc...
>>>>
>>>> ReturnNode(ParseNode)>>sizeCodeForBlockValue:
>>>> Â Â Â Receiver: {^ Dictionary new add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â expr: Â {Dictionary new add: #passed -> (Set new
>>>> add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â add: #tes...etc...
>>>>
>>>> BlockNode>>sizeCodeForEvaluatedValue:
>>>> Â Â Â Receiver: {[^ Dictionary new add: #passed -> (Set new add:
>>>> #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â add: #testAsSet;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â ...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â arguments: Â Â Â #()
>>>> Â Â Â Â Â Â Â statements: Â Â an OrderedCollection({^ Dictionary
>>>> new add: #passed -> (Set new add...etc...
>>>> Â Â Â Â Â Â Â returns: Â Â Â Â true
>>>> Â Â Â Â Â Â Â nArgsNode: Â Â Â nil
>>>> Â Â Â Â Â Â Â size: Â nil
>>>> Â Â Â Â Â Â Â remoteCopyNode: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â temporaries: Â Â an OrderedCollection()
>>>> Â Â Â Â Â Â Â optimized: Â Â Â false
>>>> Â Â Â Â Â Â Â actualScopeIfOptimized: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â blockExtent: Â Â (0 to: 2)
>>>> Â Â Â Â Â Â Â remoteTempNode: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â copiedValues: Â nil
>>>> Â Â Â Â Â Â Â closureCreationNode: Â Â nil
>>>> Â Â Â Â Â Â Â startOfLastStatement: Â 16
>>>>
>>>> BytecodeAgnosticMethodNode>>generate:
>>>> Â Â Â Receiver: lastStoredRun
>>>> Â Â Â ^ Dictionary new add: #passed -> (Set new add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â add: #tes...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â trailer: Â Â Â Â #(0 0 0 0)
>>>> Â Â Â Â Â Â Â primErrNode: Â Â nil
>>>> Â Â Â Â Â Â Â blkSize: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â nLits: Â nil
>>>> Â Â Â Â Â Â Â literals: Â Â Â nil
>>>> Â Â Â Â Â Â Â stack: Â nil
>>>> Â Â Â Â Â Â Â method: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â locals: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â lit: Â Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â comment: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â pc: Â Â nil
>>>> Â Â Â Â Â Â Â selectorOrFalse: Â Â Â Â #lastStoredRun
>>>> Â Â Â Â Â Â Â precedence: Â Â 1
>>>> Â Â Â Â Â Â Â arguments: Â Â Â #()
>>>> Â Â Â Â Â Â Â block: Â {[^ Dictionary new add: #passed -> (Set new
>>>> add: #testAsArray;
>>>> Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â add:...etc...
>>>> Â Â Â Â Â Â Â primitive: Â Â Â 0
>>>> Â Â Â Â Â Â Â encoder: Â Â Â Â {an EncoderForV3PlusClosures}
>>>> Â Â Â Â Â Â Â temporaries: Â Â #()
>>>> Â Â Â Â Â Â Â properties: Â Â an AdditionalMethodState
>>>> Â Â Â Â Â Â Â sourceText: Â Â 'lastStoredRun
>>>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add: ...etc...
>>>> Â Â Â Â Â Â Â locationCounter: Â Â Â Â 3
>>>> Â Â Â Â Â Â Â localsPool: Â Â an IdentitySet()
>>>>
>>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>>> Â Â Â Receiver: CompiledMethodWithNode
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aMethodNode: Â Â lastStoredRun
>>>> Â Â Â ^ Dictionary new add: #passed -> (Set new add: #tes...etc...
>>>> Â Â Â Â Â Â Â bytes: Â #(0 0 0 0)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â Object
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary(#method->a
>>>> CompiledMethod(650: CompiledMethodWit...etc...
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 134
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â #('node' 'method')
>>>> Â Â Â Â Â Â Â organization: Â ('accessing' method node selector)
>>>> ('private' method: node:)
>>>>
>>>> Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â name: Â #CompiledMethodWithNode
>>>> Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â environment: Â Â Smalltalk
>>>> Â Â Â Â Â Â Â category: Â Â Â #'Compiler-Support'
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â nil
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> Metaclass(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>>> Â Â Â Receiver: StringTest class
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â code: Â 'lastStoredRun
>>>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>> #testA...etc...
>>>> Â Â Â Â Â Â Â category: Â Â Â 'history'
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Â Â Â Â bytes: Â #(0 0 0 0)
>>>> Â Â Â Â Â Â Â failBlock: Â Â Â [closure] in Metaclass
>>>> (ClassDescription)>>compile:classified:withSta...etc...
>>>> Â Â Â Â Â Â Â methodNode: Â Â lastStoredRun
>>>> Â Â Â ^ Dictionary new add: #passed -> (Set new add: #test...etc...
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â CollectionRootTest class
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 158
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â thisClass: Â Â Â StringTest
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â TIncludesTest classTrait +
>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> Metaclass(ClassDescription)
>>>> >>compile:classified:withStamp:notifying:logSource:
>>>> Â Â Â Receiver: StringTest class
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â text: Â 'lastStoredRun
>>>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>> #testA...etc...
>>>> Â Â Â Â Â Â Â category: Â Â Â 'history'
>>>> Â Â Â Â Â Â Â changeStamp: Â Â 'CesarRabak 11/30/2009 17:26'
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Â Â Â Â logSource: Â Â Â true
>>>> Â Â Â Â Â Â Â methodAndNode: Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â CollectionRootTest class
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 158
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â thisClass: Â Â Â StringTest
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â TIncludesTest classTrait +
>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> Metaclass(ClassDescription)>>compile:classified:withStamp:notifying:
>>>> Â Â Â Receiver: StringTest class
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â text: Â 'lastStoredRun
>>>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>> #testA...etc...
>>>> Â Â Â Â Â Â Â category: Â Â Â 'history'
>>>> Â Â Â Â Â Â Â changeStamp: Â Â 'CesarRabak 11/30/2009 17:26'
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â CollectionRootTest class
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 158
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â thisClass: Â Â Â StringTest
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â TIncludesTest classTrait +
>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> Metaclass(ClassDescription)>>compile:classified:notifying:
>>>> Â Â Â Receiver: StringTest class
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â text: Â 'lastStoredRun
>>>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>> #testA...etc...
>>>> Â Â Â Â Â Â Â category: Â Â Â 'history'
>>>> Â Â Â Â Â Â Â requestor: Â Â Â nil
>>>> Â Â Â Â Â Â Â stamp: Â 'CesarRabak 11/30/2009 17:26'
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â CollectionRootTest class
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 158
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â thisClass: Â Â Â StringTest
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â TIncludesTest classTrait +
>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> Metaclass(ClassDescription)>>compile:classified:
>>>> Â Â Â Receiver: StringTest class
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â code: Â 'lastStoredRun
>>>> Â Â Â ^ ((Dictionary new) add: (#passed->((Set new) add:
>>>> #testA...etc...
>>>> Â Â Â Â Â Â Â heading: Â Â Â Â 'history'
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â CollectionRootTest class
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary()
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 158
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â nil
>>>> Â Â Â Â Â Â Â organization: Â ('as yet unclassified')
>>>>
>>>> Â Â Â Â Â Â Â thisClass: Â Â Â StringTest
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â TIncludesTest classTrait +
>>>> TCloneTest classTrait + TCopyTest ...etc...
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â nil
>>>>
>>>> StringTest class(TestCase class)>>generateLastStoredRunMethod
>>>> Â Â Â Receiver: StringTest
>>>> Â Â Â Arguments and temporary variables:
>>>>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â superclass: Â Â CollectionRootTest
>>>> Â Â Â Â Â Â Â methodDict: Â Â a MethodDictionary(size 321)
>>>> Â Â Â Â Â Â Â format: Â Â Â Â 158
>>>> Â Â Â Â Â Â Â instanceVariables: Â Â Â #('string' 'emptyString'
>>>> 'elementInNonEmpty' 'notIn' 'subcol...etc...
>>>> Â Â Â Â Â Â Â organization: Â ('initialization' setUp)
>>>> ('requirements' aValue anIndex anotherEl...etc...
>>>> Â Â Â Â Â Â Â subclasses: Â Â nil
>>>> Â Â Â Â Â Â Â name: Â #StringTest
>>>> Â Â Â Â Â Â Â classPool: Â Â Â nil
>>>> Â Â Â Â Â Â Â sharedPools: Â Â nil
>>>> Â Â Â Â Â Â Â environment: Â Â Smalltalk
>>>> Â Â Â Â Â Â Â category: Â Â Â #'CollectionsTests-Text'
>>>> Â Â Â Â Â Â Â traitComposition: Â Â Â TIncludesTest + TCloneTest +
>>>> TCopyTest + TSetArithmetic + TIt...etc...
>>>> Â Â Â Â Â Â Â localSelectors: Â Â Â Â an IdentitySet(#elementNotIn
>>>> #firstIndex #replacementCollection...etc...
>>>> Â Â Â Â Â Â Â history: Â Â Â Â a Dictionary(#errors->a Set()
>>>> #failures->a Set() #passed->a Set(#testA...etc...
>>>>
>>>> [] in TestRunner>>storeResultIntoTestCases
>>>> Â Â Â Receiver: a TestRunner
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â testCaseCls: Â Â StringTest
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â categories: Â Â #(#'AST-Tests'
>>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>>> Â Â Â Â Â Â Â categoriesSelected: Â Â a Set(#'CollectionsTests-
>>>> Support' #'CollectionsTests-Weak' ...etc...
>>>> Â Â Â Â Â Â Â classes: Â Â Â Â {Base64MimeConverterTest.
>>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>>> Â Â Â Â Â Â Â classIndex: Â Â 0
>>>> Â Â Â Â Â Â Â classesSelected: Â Â Â Â a Set(TextAndTextStreamTest
>>>> WideStringTest WriteStreamTest Ide...etc...
>>>> Â Â Â Â Â Â Â failedList: Â Â #()
>>>> Â Â Â Â Â Â Â failedSelected: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â errorList: Â Â Â #()
>>>> Â Â Â Â Â Â Â errorSelected: Â nil
>>>> Â Â Â Â Â Â Â lastUpdate: Â Â 3437054762
>>>> Â Â Â Â Â Â Â result: Â Â Â Â 4978 run, 4978 passes, 0 expected
>>>> failures, 0 failures, 0 errors, 0 une...etc...
>>>> Â Â Â Â Â Â Â previousRun: Â Â nil
>>>>
>>>> Set>>do:
>>>> Â Â Â Receiver: a Set(RunArrayTest SmallDictionaryTest StringTest
>>>> WeakKeyToCollectionDictionaryTest ArrayT...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in
>>>> TestRunner>>storeResultIntoTestCases
>>>> Â Â Â Â Â Â Â index: Â 364
>>>> Â Â Â Â Â Â Â each: Â StringTest
>>>> Â Â Â Â Â Â Â indexLimiT: Â Â 6638
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â tally: Â 49
>>>> Â Â Â Â Â Â Â array: Â {nil. nil. nil. nil. nil. nil. nil. nil.
>>>> nil. nil. nil. nil. nil. nil. n...etc...
>>>>
>>>> TestRunner>>storeResultIntoTestCases
>>>> Â Â Â Receiver: a TestRunner
>>>> Â Â Â Arguments and temporary variables:
>>>>
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â categories: Â Â #(#'AST-Tests'
>>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>>> Â Â Â Â Â Â Â categoriesSelected: Â Â a Set(#'CollectionsTests-
>>>> Support' #'CollectionsTests-Weak' ...etc...
>>>> Â Â Â Â Â Â Â classes: Â Â Â Â {Base64MimeConverterTest.
>>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>>> Â Â Â Â Â Â Â classIndex: Â Â 0
>>>> Â Â Â Â Â Â Â classesSelected: Â Â Â Â a Set(TextAndTextStreamTest
>>>> WideStringTest WriteStreamTest Ide...etc...
>>>> Â Â Â Â Â Â Â failedList: Â Â #()
>>>> Â Â Â Â Â Â Â failedSelected: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â errorList: Â Â Â #()
>>>> Â Â Â Â Â Â Â errorSelected: Â nil
>>>> Â Â Â Â Â Â Â lastUpdate: Â Â 3437054762
>>>> Â Â Â Â Â Â Â result: Â Â Â Â 4978 run, 4978 passes, 0 expected
>>>> failures, 0 failures, 0 errors, 0 une...etc...
>>>> Â Â Â Â Â Â Â previousRun: Â Â nil
>>>>
>>>> TestRunner>>perform:orSendTo:
>>>> Â Â Â Receiver: a TestRunner
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â selector: Â Â Â #storeResultIntoTestCases
>>>> Â Â Â Â Â Â Â otherTarget: Â Â a PluggableTextMorphPlus(3170)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â categories: Â Â #(#'AST-Tests'
>>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>>> Â Â Â Â Â Â Â categoriesSelected: Â Â a Set(#'CollectionsTests-
>>>> Support' #'CollectionsTests-Weak' ...etc...
>>>> Â Â Â Â Â Â Â classes: Â Â Â Â {Base64MimeConverterTest.
>>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>>> Â Â Â Â Â Â Â classIndex: Â Â 0
>>>> Â Â Â Â Â Â Â classesSelected: Â Â Â Â a Set(TextAndTextStreamTest
>>>> WideStringTest WriteStreamTest Ide...etc...
>>>> Â Â Â Â Â Â Â failedList: Â Â #()
>>>> Â Â Â Â Â Â Â failedSelected: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â errorList: Â Â Â #()
>>>> Â Â Â Â Â Â Â errorSelected: Â nil
>>>> Â Â Â Â Â Â Â lastUpdate: Â Â 3437054762
>>>> Â Â Â Â Â Â Â result: Â Â Â Â 4978 run, 4978 passes, 0 expected
>>>> failures, 0 failures, 0 errors, 0 une...etc...
>>>> Â Â Â Â Â Â Â previousRun: Â Â nil
>>>>
>>>> [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>>> Â Â Â Receiver: a ToggleMenuItemMorph(2690)'Store result as
>>>> progress reference'
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â evt: Â Â [675@67 mouseUp 21933765 nil]
>>>> Â Â Â Â Â Â Â selArgCount: Â Â #(2)
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â bounds: Â Â Â Â 613@54 corner: 836@70
>>>> Â Â Â Â Â Â Â owner: Â a MenuMorph(2400)
>>>> Â Â Â Â Â Â Â submorphs: Â Â Â #()
>>>> Â Â Â Â Â Â Â fullBounds: Â Â 613@54 corner: 836@70
>>>> Â Â Â Â Â Â Â color: Â Color black
>>>> Â Â Â Â Â Â Â extension: Â Â Â a MorphExtension (2845) [other:
>>>> (layoutProperties -> a LayoutProper...etc...
>>>> Â Â Â Â Â Â Â font: Â a LogicalFont
>>>> familyName: DejaVu Sans
>>>> emphasis: nil
>>>> pointSize: 10
>>>> rea...etc...
>>>> Â Â Â Â Â Â Â emphasis: Â Â Â 0
>>>> Â Â Â Â Â Â Â contents: Â Â Â 'Store result as progress reference'
>>>> Â Â Â Â Â Â Â hasFocus: Â Â Â false
>>>> Â Â Â Â Â Â Â isEnabled: Â Â Â true
>>>> Â Â Â Â Â Â Â subMenu: Â Â Â Â nil
>>>> Â Â Â Â Â Â Â isSelected: Â Â false
>>>> Â Â Â Â Â Â Â target: Â Â Â Â a TestRunner
>>>> Â Â Â Â Â Â Â selector: Â Â Â #perform:orSendTo:
>>>> Â Â Â Â Â Â Â arguments: Â Â Â an Array(#storeResultIntoTestCases a
>>>> PluggableTextMorphPlus(3170))
>>>> Â Â Â Â Â Â Â icon: Â nil
>>>> Â Â Â Â Â Â Â getStateSelector: Â Â Â nil
>>>> Â Â Â Â Â Â Â enablementSelector: Â Â nil
>>>> Â Â Â Â Â Â Â keyText: Â Â Â Â nil
>>>>
>>>> BlockClosure>>ensure:
>>>> Â Â Â Receiver: [closure] in ToggleMenuItemMorph(MenuItemMorph)
>>>> >>invokeWithEvent:
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in CursorWithMask(Cursor)
>>>> >>showWhile:
>>>> Â Â Â Â Â Â Â returnValue: Â Â nil
>>>> Â Â Â Â Â Â Â b: Â Â Â nil
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â outerContext: Â ToggleMenuItemMorph(MenuItemMorph)
>>>> >>invokeWithEvent:
>>>> Â Â Â Â Â Â Â startpc: Â Â Â Â 136
>>>> Â Â Â Â Â Â Â numArgs: Â Â Â Â 0
>>>>
>>>> CursorWithMask(Cursor)>>showWhile:
>>>> Â Â Â Receiver: ((CursorWithMask
>>>> Â Â Â extent: 16@16
>>>> Â Â Â depth: 1
>>>> Â Â Â fromArray: #(
>>>> Â Â Â Â Â Â Â 2r0
>>>> Â Â Â Â Â Â Â 2r10000000000000000000000...etc...
>>>> Â Â Â Arguments and temporary variables:
>>>> Â Â Â Â Â Â Â aBlock: Â Â Â Â [closure] in ToggleMenuItemMorph
>>>> (MenuItemMorph)>>invokeWithEvent:
>>>> Â Â Â Â Â Â Â oldcursor: Â Â Â ((CursorWithMask
>>>> Â Â Â extent: 16@16
>>>> Â Â Â depth: 1
>>>> Â Â Â fromArray: #(
>>>> Â Â Â Â Â Â Â 2r0
>>>> Â Â Â Â Â Â Â 2r1...etc...
>>>> Â Â Â Receiver's instance variables:
>>>> Â Â Â Â Â Â Â bits: Â a Bitmap of length 16
>>>> Â Â Â Â Â Â Â width: Â 16
>>>> Â Â Â Â Â Â Â height: Â Â Â Â 16
>>>> Â Â Â Â Â Â Â depth: Â 1
>>>> Â Â Â Â Â Â Â offset: Â Â Â Â -1@-1
>>>> Â Â Â Â Â Â Â maskForm: Â Â Â Form(16x16x1)
>>>>
>>>>
>>>> --- The full stack ---
>>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>>> EncoderForV3PlusClosures(BytecodeEncoder)
>>>> >>sizeOpcodeSelector:withArguments:
>>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>>> LiteralNode>>sizeCodeForValue:
>>>> [] in MessageNode>>sizeCodeForValue:
>>>> OrderedCollection>>collect:
>>>> MessageNode>>sizeCodeForValue:
>>>> [] in CascadeNode>>sizeCodeForValue:
>>>> OrderedCollection>>do:
>>>> CascadeNode>>sizeCodeForValue:
>>>> [] in MessageNode>>sizeCodeForValue:
>>>> Array(SequenceableCollection)>>collect:
>>>> MessageNode>>sizeCodeForValue:
>>>> [] in MessageNode>>sizeCodeForValue:
>>>> OrderedCollection>>collect:
>>>> MessageNode>>sizeCodeForValue:
>>>> [] in CascadeNode>>sizeCodeForValue:
>>>> OrderedCollection>>do:
>>>> CascadeNode>>sizeCodeForValue:
>>>> CascadeNode(ParseNode)>>sizeCodeForReturn:
>>>> ReturnNode>>sizeCodeForValue:
>>>> ReturnNode(ParseNode)>>sizeCodeForBlockValue:
>>>> BlockNode>>sizeCodeForEvaluatedValue:
>>>> BytecodeAgnosticMethodNode>>generate:
>>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>>> Metaclass(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>>> Metaclass(ClassDescription)
>>>> >>compile:classified:withStamp:notifying:logSource:
>>>> Metaclass(ClassDescription)>>compile:classified:withStamp:notifying:
>>>> Metaclass(ClassDescription)>>compile:classified:notifying:
>>>> Metaclass(ClassDescription)>>compile:classified:
>>>> StringTest class(TestCase class)>>generateLastStoredRunMethod
>>>> [] in TestRunner>>storeResultIntoTestCases
>>>> Set>>do:
>>>> TestRunner>>storeResultIntoTestCases
>>>> TestRunner>>perform:orSendTo:
>>>> [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>>> BlockClosure>>ensure:
>>>> CursorWithMask(Cursor)>>showWhile:
>>>> - - - - - - - - - - - - - - -
>>>> Â Â Â Â Â Â Â Â Â Â Â - - - - - - - - - - - - - - - - - -
>>>> ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>>> ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
>>>> ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
>>>> MouseButtonEvent>>sentTo:
>>>> ToggleMenuItemMorph(Morph)>>handleEvent:
>>>> MorphicEventDispatcher>>dispatchDefault:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> ToggleMenuItemMorph(Morph)>>processEvent:using:
>>>> MorphicEventDispatcher>>dispatchDefault:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> MenuMorph(Morph)>>processEvent:using:
>>>> MenuMorph(Morph)>>processEvent:
>>>> MenuMorph>>handleFocusEvent:
>>>> [] in HandMorph>>sendFocusEvent:to:clear:
>>>> [] in PasteUpMorph>>becomeActiveDuring:
>>>> BlockClosure>>on:do:
>>>> PasteUpMorph>>becomeActiveDuring:
>>>> HandMorph>>sendFocusEvent:to:clear:
>>>> HandMorph>>sendEvent:focus:clear:
>>>> HandMorph>>sendMouseEvent:
>>>> HandMorph>>handleEvent:
>>>> HandMorph>>processEvents
>>>> [] in WorldState>>doOneCycleNowFor:
>>>> Array(SequenceableCollection)>>do:
>>>> WorldState>>handsDo:
>>>> WorldState>>doOneCycleNowFor:
>>>> WorldState>>doOneCycleFor:
>>>> WorldState>>doOneSubCycleFor:
>>>> PasteUpMorph>>doOneSubCycle
>>>> MenuMorph>>invokeModalAt:in:allowKeyboard:
>>>> MenuMorph>>invokeModal:
>>>> MenuMorph>>invokeModal
>>>> PluggableTextMorphPlus(PluggableTextMorph)>>yellowButtonActivity:
>>>> TextMorphForEditView>>mouseDown:
>>>> TextMorphForEditView(Morph)>>handleMouseDown:
>>>> MouseButtonEvent>>sentTo:
>>>> TextMorphForEditView(Morph)>>handleEvent:
>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> TextMorphForEditView(Morph)>>processEvent:using:
>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> TransformMorph(Morph)>>processEvent:using:
>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> PluggableTextMorphPlus(Morph)>>processEvent:using:
>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> PluggableStandardWindow(Morph)>>processEvent:using:
>>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>>> MorphicEventDispatcher>>dispatchEvent:with:
>>>> PasteUpMorph(Morph)>>processEvent:using:
>>>> PasteUpMorph>>processEvent:using:
>>>> PasteUpMorph(Morph)>>processEvent:
>>>> HandMorph>>sendEvent:focus:clear:
>>>> HandMorph>>sendMouseEvent:
>>>> HandMorph>>handleEvent:
>>>> HandMorph>>processEvents
>>>> [] in WorldState>>doOneCycleNowFor:
>>>> Array(SequenceableCollection)>>do:
>>>> WorldState>>handsDo:
>>>> WorldState>>doOneCycleNowFor:
>>>> WorldState>>doOneCycleFor:
>>>> PasteUpMorph>>doOneCycle
>>>> [] in Project class>>spawnNewProcess
>>>> [] in BlockClosure>>newProcess
>>>>
>>>> --
>>>> Cesar Rabak
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
> --
> Â Simon
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Nov. 30, 2009
Re: [Pharo-project] Is there something wrong in debugging in the Morphic thread?
by Alexandre Bergel
The problem we're encountering is really vicious. It is hard to
identify a situation when it happens. I tried to define a simple
subclass of morph with an erroneous drawOn: method, but it behaved as
one would expect: the morph is colored in red. In mondrian, if a zero-
arg block is provided when a one-arg block is expected, boom... Hard
to reproduce...
Cheers,
Alexandre
On 30 Nov 2009, at 18:06, Schwab,Wilhelm K wrote:
> Simon,
>
> I can't speak to the specifics of your problem, but recursive errors
> from a GUI thread can indeed happen. Imagine if the debugger itself
> had trouble opening. Note that problem does not necessarily have to
> be "in the debugger;" it is enough to have the attempt to open it
> invalidate something else and trigger another debugger which
> invalidates something and so on until you run out of memory or
> patience.
>
> Some general comments:
>
> (1) this type of thing is why I kick up dust any time somebody wants
> to take away the notifier (aka pre-debugger, aka walkback window).
> The full debugger takes time to open, and that extra time can make
> it that much harder to interrupt something that is going nuts.
>
> (2) Debugging drawing code is probably best done using a single-shot
> breakpoint. I _think_ I have seen something about halt once in
> Pharo. FWIW, somebody posted a class called Once that creates such
> a feature that looks like
>
> Once do:[
> "do anything here, but this is common:"
> self halt.
> ].
>
> Somewhere you need to do Once reset or something (it's obvious from
> the code) to enable the breakpoint. Once evaluates the block one
> time, and then won't evaluate the block again until told to do so.
> If there is a need for this in Pharo, I should be able to "port" it
> - IIRC, it was licensed for public consumption.
>
> (3) I have yet identify this in Morphic (haven't had time to look
> for it), but a LOT of community-created Dolphin code for views is
> completely needless. Yup, I said that :) It's true too. Many
> times I have seen people create a view when they could just as
> easily create a bitmap and display it in an image presenter. The
> latter can be done efficiently by redrawing pieces of the bitmap and
> updating only the corresponding portion of the image presenter - no
> custom view required. The savings in programming overhead is
> larger than it might seem due to Dolphin's handling of views as
> serialized objects.
>
> Avoiding the custom view also simplifies debugging. One can write
> code to draw to an in-memory bitmap and debug essentially free of
> concern. Once it stops raising errors and runs, then display the
> result in an image presenter and fix the visual problems. At the
> same time, add some resolution-based drawing, and you have something
> that can print in addition to drawing on the display. You might
> think about adopting analogous practices.
>
> (4) I partition things into "just Smalltalk" and dangerous external
> interfacing. By "just Smalltalk" I mean things that might go into
> an infinite loop, but should never do anything horrible in terms of
> memory access. On the dangerous side, I consider anything newly
> changed in the way of FFI and changes to GUI elements; the latter
> goes on the list because it can meltdown as you are seeing. For
> such situations, I get the image ready do the work, including a do-
> it in plain view, save the image, and then do the thing that might
> blow up. If it gets ugly, I use the debugger to learn what I can,
> quit w/o saving, and start the next iteration. That way, I
> (hopefully) never save an unstable image.
>
> Bill
>
>
>
> From: pharo-project-bounces(a)lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr
> ] On Behalf Of Simon Denier
> Sent: Monday, November 30, 2009 2:18 PM
> To: Pharo Development
> Cc: Simon Denier
> Subject: [Pharo-project] Is there something wrong in debugging in
> the Morphic thread?
>
>
> Unfortunately, this is an issue which I cant easily reproduce, at
> least not without a third party tool (1525). Now I would like the
> general opinion/experience of debugging Morphic code especially in
> threads.
>
> Usually an exception raised from within Morphic code pops up a
> debugger as usual. However, from time to time, or for more
> complicated stuff, the situation runs out of hand and tons of
> debugger pop up everywhere because the same faulty gets obviously
> executed again and again.
>
> Now can somebody with some Morphic knowledge explain how this is
> supposed to work and how to deal with such issues?
>
> --
> Simon
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Nov. 30, 2009
[Pharo-project] Rollback with code critic in a Pharo web image
by Alexandre Bergel
Hi!
I selected a number of packages in a pharo web image 9.11.4 (Seaside +
Pier) and tried to run code critic, but an error is raised:
In WAChangesStateWhileRenderingRule>>initialize
there is the statement: matcher := ParseTreeSearcher new.
ParseTreeSearcher is not defined, new is therefore sent to nil. Looks
like a package is missing.
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Nov. 30, 2009
Re: [Pharo-project] Is there something wrong in debugging in the Morphic thread?
by Schwab,Wilhelm K
Simon,
I can't speak to the specifics of your problem, but recursive errors from a GUI thread can indeed happen. Imagine if the debugger itself had trouble opening. Note that problem does not necessarily have to be "in the debugger;" it is enough to have the attempt to open it invalidate something else and trigger another debugger which invalidates something and so on until you run out of memory or patience.
Some general comments:
(1) this type of thing is why I kick up dust any time somebody wants to take away the notifier (aka pre-debugger, aka walkback window). The full debugger takes time to open, and that extra time can make it that much harder to interrupt something that is going nuts.
(2) Debugging drawing code is probably best done using a single-shot breakpoint. I _think_ I have seen something about halt once in Pharo. FWIW, somebody posted a class called Once that creates such a feature that looks like
Once do:[
"do anything here, but this is common:"
self halt.
].
Somewhere you need to do Once reset or something (it's obvious from the code) to enable the breakpoint. Once evaluates the block one time, and then won't evaluate the block again until told to do so. If there is a need for this in Pharo, I should be able to "port" it - IIRC, it was licensed for public consumption.
(3) I have yet identify this in Morphic (haven't had time to look for it), but a LOT of community-created Dolphin code for views is completely needless. Yup, I said that :) It's true too. Many times I have seen people create a view when they could just as easily create a bitmap and display it in an image presenter. The latter can be done efficiently by redrawing pieces of the bitmap and updating only the corresponding portion of the image presenter - no custom view required. The savings in programming overhead is larger than it might seem due to Dolphin's handling of views as serialized objects.
Avoiding the custom view also simplifies debugging. One can write code to draw to an in-memory bitmap and debug essentially free of concern. Once it stops raising errors and runs, then display the result in an image presenter and fix the visual problems. At the same time, add some resolution-based drawing, and you have something that can print in addition to drawing on the display. You might think about adopting analogous practices.
(4) I partition things into "just Smalltalk" and dangerous external interfacing. By "just Smalltalk" I mean things that might go into an infinite loop, but should never do anything horrible in terms of memory access. On the dangerous side, I consider anything newly changed in the way of FFI and changes to GUI elements; the latter goes on the list because it can meltdown as you are seeing. For such situations, I get the image ready do the work, including a do-it in plain view, save the image, and then do the thing that might blow up. If it gets ugly, I use the debugger to learn what I can, quit w/o saving, and start the next iteration. That way, I (hopefully) never save an unstable image.
Bill
________________________________
From: pharo-project-bounces(a)lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Simon Denier
Sent: Monday, November 30, 2009 2:18 PM
To: Pharo Development
Cc: Simon Denier
Subject: [Pharo-project] Is there something wrong in debugging in the Morphic thread?
Unfortunately, this is an issue which I cant easily reproduce, at least not without a third party tool (1525<http://code.google.com/p/pharo/issues/detail?id=1525>). Now I would like the general opinion/experience of debugging Morphic code especially in threads.
Usually an exception raised from within Morphic code pops up a debugger as usual. However, from time to time, or for more complicated stuff, the situation runs out of hand and tons of debugger pop up everywhere because the same faulty gets obviously executed again and again.
Now can somebody with some Morphic knowledge explain how this is supposed to work and how to deal with such issues?
--
Simon
Nov. 30, 2009
Re: [Pharo-project] [BUG]UndefinedObject(Object)>>doesNotUnderstand: #<
by Simon Denier
On 30 nov. 2009, at 16:49, Nicolas Cellier wrote:
> Just the full source code would do:
>
> lastStoredRun
> ^ ((Dictionary new) add: (#passed->((Set new) add:
> #testA...etc...
Can you be a bit more precise? I feel concerned about this, it's part
of something we did with Alex.
>
> Nicolas
>
> 2009/11/30 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>> thanks can you let us knw the exact sequence your did?
>>
>> Stef
>>
>> On Nov 30, 2009, at 8:30 PM, csrabak(a)bol.com.br wrote:
>>
>>> I got a recent dev-image and ran some tests (all CollectionTests
>>> if this matter) and attempted to store the result.
>>>
>>> 30 November 2009 5:26:40 pm
>>>
>>> VM: Win32 - IX86 - NT - Squeak3.10.2 of '5 June 2008' [latest
>>> update: #7179]
>>> Image: PharoCore1.0rc1 [Latest update: #10498]
>>>
>>> SecurityManager state:
>>> Restricted: false
>>> FileAccess: true
>>> SocketAccess: true
>>> Working Dir E:\Pharo
>>> Trusted Dir E:\Pharo\Cesar S. Rabak
>>> Untrusted Dir C:\Documents and Settings\Cesar S. Rabak\Meus
>>> documentos\My Squeak
>>>
>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>> Receiver: nil
>>> Arguments and temporary variables:
>>> aMessage: < 0
>>> exception: MessageNotUnderstood: receiver of
>>> "<" is nil
>>> resumeValue: nil
>>> Receiver's instance variables:
>>> nil
>>>
>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> literalIndex: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('category'->{category}
>>> 'classPool'->{classPool} 'envir...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: StringTest class
>>> selector: #lastStoredRun
>>> literalStream: a WriteStream {#Dictionary-
>>> >Dictionary. #add:. #'->'. #passed. #...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-}
>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>> litIndSet: a Dictionary(#Dictionary->Dictionary-
>>> >{Dictionary} #Set->Set->{Set} ...etc...
>>> litSet: a LiteralDictionary(size 302)
>>> sourceRanges: a Dictionary(size 309)
>>> globalSourceRanges: an OrderedCollection
>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: lastStoredRun
>>> ^ Dictionary new add: #passed -> (Set new add:
>>> #testAs...etc...
>>> blockExtentsToLocals: nil
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)
>>> >>sizeOpcodeSelector:withArguments:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> genSelector: #genPushLiteral:
>>> args: #(nil)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('category'->{category}
>>> 'classPool'->{classPool} 'envir...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: StringTest class
>>> selector: #lastStoredRun
>>> literalStream: a WriteStream {#Dictionary-
>>> >Dictionary. #add:. #'->'. #passed. #...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-}
>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>> litIndSet: a Dictionary(#Dictionary->Dictionary-
>>> >{Dictionary} #Set->Set->{Set} ...etc...
>>> litSet: a LiteralDictionary(size 302)
>>> sourceRanges: a Dictionary(size 309)
>>> globalSourceRanges: an OrderedCollection
>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: lastStoredRun
>>> ^ Dictionary new add: #passed -> (Set new add:
>>> #testAs...etc...
>>> blockExtentsToLocals: nil
>>>
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>> Receiver: {an EncoderForV3PlusClosures}
>>> Arguments and temporary variables:
>>> literalIndex: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> scopeTable: a Dictionary('category'->{category}
>>> 'classPool'->{classPool} 'envir...etc...
>>> nTemps: 0
>>> supered: false
>>> requestor: nil
>>> class: StringTest class
>>> selector: #lastStoredRun
>>> literalStream: a WriteStream {#Dictionary-
>>> >Dictionary. #add:. #'->'. #passed. #...etc...
>>> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-}
>>> #'->'->{->} #/->{/} #'//'->{/...etc...
>>> litIndSet: a Dictionary(#Dictionary->Dictionary-
>>> >{Dictionary} #Set->Set->{Set} ...etc...
>>> litSet: a LiteralDictionary(size 302)
>>> sourceRanges: a Dictionary(size 309)
>>> globalSourceRanges: an OrderedCollection
>>> ({'Dictionary'. (20 to: 29). false} {'S...etc...
>>> addedSelectorAndMethodClassLiterals: false
>>> stream: {an EncoderForV3PlusClosures}
>>> position: 0
>>> rootNode: lastStoredRun
>>> ^ Dictionary new add: #passed -> (Set new add:
>>> #testAs...etc...
>>> blockExtentsToLocals: nil
>>>
>>> LiteralNode>>sizeCodeForValue:
>>> Receiver: {#testWithWithWithWith}
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> key: #testWithWithWithWith
>>> code: -3
>>> index: nil
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: { add: #testWithWithWithWith}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: nil
>>> selector: {add:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection
>>> ({#testWithWithWithWith})
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> OrderedCollection>>collect:
>>> Receiver: an OrderedCollection({#testWithWithWithWith})
>>> Arguments and temporary variables:
>>> aBlock: [closure] in
>>> MessageNode>>sizeCodeForValue:
>>> newCollection: an OrderedCollection()
>>> index: 3
>>> Receiver's instance variables:
>>> array: #(nil nil {#testWithWithWithWith} nil nil
>>> nil nil nil nil nil)
>>> firstIndex: 3
>>> lastIndex: 3
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: { add: #testWithWithWithWith}
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: nil
>>> selector: {add:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection
>>> ({#testWithWithWithWith})
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> [] in CascadeNode>>sizeCodeForValue:
>>> Receiver: {Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedCollection;
>>> add: #tes...etc...
>>> Arguments and temporary variables:
>>> encoder: { add: #testWithWithWithWith}
>>> size: {an EncoderForV3PlusClosures}
>>> aMessage: #(1506)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {Set new}
>>> messages: an OrderedCollection({ add:
>>> #testAsArray} { add: #testAsSet} { add: #...etc...
>>>
>>> OrderedCollection>>do:
>>> Receiver: an OrderedCollection({ add: #testAsArray} { add:
>>> #testAsSet} { add: #testAsSortedCollectio...etc...
>>> Arguments and temporary variables:
>>> aBlock: [closure] in
>>> CascadeNode>>sizeCodeForValue:
>>> index: 252
>>> Receiver's instance variables:
>>> array: an Array({ add: #testAsArray} { add:
>>> #testAsSet} { add: #testAsSortedCol...etc...
>>> firstIndex: 1
>>> lastIndex: 294
>>>
>>> CascadeNode>>sizeCodeForValue:
>>> Receiver: {Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedCollection;
>>> add: #tes...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> size: #(1506)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {Set new}
>>> messages: an OrderedCollection({ add:
>>> #testAsArray} { add: #testAsSet} { add: #...etc...
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: {#passed -> (Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedCollectio...etc...
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {#passed}
>>> selector: {->}
>>> precedence: 2
>>> special: 0
>>> arguments: an Array({Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #test...etc...
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> Array(SequenceableCollection)>>collect:
>>> Receiver: an Array({Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedCollection;
>>> ...etc...
>>> Arguments and temporary variables:
>>> aBlock: [closure] in
>>> MessageNode>>sizeCodeForValue:
>>> newCollection: #(nil)
>>> index: 1
>>> indexLimiT: 1
>>> Receiver's instance variables:
>>> an Array({Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedCollection;
>>> ...etc...
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: {#passed -> (Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedCollectio...etc...
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {#passed}
>>> selector: {->}
>>> precedence: 2
>>> special: 0
>>> arguments: an Array({Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #test...etc...
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> [] in MessageNode>>sizeCodeForValue:
>>> Receiver: { add: #passed -> (Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedC...etc...
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: nil
>>> selector: {add:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({#passed ->
>>> (Set new add: #testAsArray;
>>> add:...etc...
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> OrderedCollection>>collect:
>>> Receiver: an OrderedCollection({#passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> add: #...etc...
>>> Arguments and temporary variables:
>>> aBlock: [closure] in
>>> MessageNode>>sizeCodeForValue:
>>> newCollection: an OrderedCollection()
>>> index: 3
>>> Receiver's instance variables:
>>> array: an Array(nil nil {#passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAs...etc...
>>> firstIndex: 3
>>> lastIndex: 3
>>>
>>> MessageNode>>sizeCodeForValue:
>>> Receiver: { add: #passed -> (Set new add: #testAsArray;
>>> add: #testAsSet;
>>> add: #testAsSortedC...etc...
>>> Arguments and temporary variables:
>>> <<error during printing>
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: nil
>>> selector: {add:}
>>> precedence: 3
>>> special: 0
>>> arguments: an OrderedCollection({#passed ->
>>> (Set new add: #testAsArray;
>>> add:...etc...
>>> sizes: #(nil)
>>> equalNode: nil
>>> caseErrorNode: nil
>>>
>>> [] in CascadeNode>>sizeCodeForValue:
>>> Receiver: {Dictionary new add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> add: ...etc...
>>> Arguments and temporary variables:
>>> encoder: { add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> ...etc...
>>> size: {an EncoderForV3PlusClosures}
>>> aMessage: #(10)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {Dictionary new}
>>> messages: an OrderedCollection({ add: #passed -
>>> > (Set new add: #testAsArray;
>>> ...etc...
>>>
>>> OrderedCollection>>do:
>>> Receiver: an OrderedCollection({ add: #passed -> (Set new
>>> add: #testAsArray;
>>> add: #testAsSet;
>>> ...etc...
>>> Arguments and temporary variables:
>>> aBlock: [closure] in
>>> CascadeNode>>sizeCodeForValue:
>>> index: 3
>>> Receiver's instance variables:
>>> array: an Array(nil nil { add: #passed -> (Set new
>>> add: #testAsArray;
>>> add: ...etc...
>>> firstIndex: 3
>>> lastIndex: 7
>>>
>>> CascadeNode>>sizeCodeForValue:
>>> Receiver: {Dictionary new add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> add: ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> size: #(10)
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {Dictionary new}
>>> messages: an OrderedCollection({ add: #passed -
>>> > (Set new add: #testAsArray;
>>> ...etc...
>>>
>>> CascadeNode(ParseNode)>>sizeCodeForReturn:
>>> Receiver: {Dictionary new add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> add: ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> receiver: {Dictionary new}
>>> messages: an OrderedCollection({ add: #passed -
>>> > (Set new add: #testAsArray;
>>> ...etc...
>>>
>>> ReturnNode>>sizeCodeForValue:
>>> Receiver: {^ Dictionary new add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> add...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> expr: {Dictionary new add: #passed -> (Set new
>>> add: #testAsArray;
>>> add: #tes...etc...
>>>
>>> ReturnNode(ParseNode)>>sizeCodeForBlockValue:
>>> Receiver: {^ Dictionary new add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> add...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> expr: {Dictionary new add: #passed -> (Set new
>>> add: #testAsArray;
>>> add: #tes...etc...
>>>
>>> BlockNode>>sizeCodeForEvaluatedValue:
>>> Receiver: {[^ Dictionary new add: #passed -> (Set new add:
>>> #testAsArray;
>>> add: #testAsSet;
>>> ...etc...
>>> Arguments and temporary variables:
>>> encoder: {an EncoderForV3PlusClosures}
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> arguments: #()
>>> statements: an OrderedCollection({^ Dictionary
>>> new add: #passed -> (Set new add...etc...
>>> returns: true
>>> nArgsNode: nil
>>> size: nil
>>> remoteCopyNode: nil
>>> temporaries: an OrderedCollection()
>>> optimized: false
>>> actualScopeIfOptimized: nil
>>> blockExtent: (0 to: 2)
>>> remoteTempNode: nil
>>> copiedValues: nil
>>> closureCreationNode: nil
>>> startOfLastStatement: 16
>>>
>>> BytecodeAgnosticMethodNode>>generate:
>>> Receiver: lastStoredRun
>>> ^ Dictionary new add: #passed -> (Set new add: #testAsArray;
>>> add: #tes...etc...
>>> Arguments and temporary variables:
>>> trailer: #(0 0 0 0)
>>> primErrNode: nil
>>> blkSize: nil
>>> nLits: nil
>>> literals: nil
>>> stack: nil
>>> method: nil
>>> locals: nil
>>> lit: nil
>>> Receiver's instance variables:
>>> comment: nil
>>> pc: nil
>>> selectorOrFalse: #lastStoredRun
>>> precedence: 1
>>> arguments: #()
>>> block: {[^ Dictionary new add: #passed -> (Set new
>>> add: #testAsArray;
>>> add:...etc...
>>> primitive: 0
>>> encoder: {an EncoderForV3PlusClosures}
>>> temporaries: #()
>>> properties: an AdditionalMethodState
>>> sourceText: 'lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add: ...etc...
>>> locationCounter: 3
>>> localsPool: an IdentitySet()
>>>
>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>> Receiver: CompiledMethodWithNode
>>> Arguments and temporary variables:
>>> aMethodNode: lastStoredRun
>>> ^ Dictionary new add: #passed -> (Set new add: #tes...etc...
>>> bytes: #(0 0 0 0)
>>> Receiver's instance variables:
>>> superclass: Object
>>> methodDict: a MethodDictionary(#method->a
>>> CompiledMethod(650: CompiledMethodWit...etc...
>>> format: 134
>>> instanceVariables: #('node' 'method')
>>> organization: ('accessing' method node selector)
>>> ('private' method: node:)
>>>
>>> subclasses: nil
>>> name: #CompiledMethodWithNode
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'Compiler-Support'
>>> traitComposition: nil
>>> localSelectors: nil
>>>
>>> Metaclass(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>> Receiver: StringTest class
>>> Arguments and temporary variables:
>>> code: 'lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>> #testA...etc...
>>> category: 'history'
>>> requestor: nil
>>> bytes: #(0 0 0 0)
>>> failBlock: [closure] in Metaclass
>>> (ClassDescription)>>compile:classified:withSta...etc...
>>> methodNode: lastStoredRun
>>> ^ Dictionary new add: #passed -> (Set new add: #test...etc...
>>> Receiver's instance variables:
>>> superclass: CollectionRootTest class
>>> methodDict: a MethodDictionary()
>>> format: 158
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> thisClass: StringTest
>>> traitComposition: TIncludesTest classTrait +
>>> TCloneTest classTrait + TCopyTest ...etc...
>>> localSelectors: nil
>>>
>>> Metaclass(ClassDescription)
>>> >>compile:classified:withStamp:notifying:logSource:
>>> Receiver: StringTest class
>>> Arguments and temporary variables:
>>> text: 'lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>> #testA...etc...
>>> category: 'history'
>>> changeStamp: 'CesarRabak 11/30/2009 17:26'
>>> requestor: nil
>>> logSource: true
>>> methodAndNode: nil
>>> Receiver's instance variables:
>>> superclass: CollectionRootTest class
>>> methodDict: a MethodDictionary()
>>> format: 158
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> thisClass: StringTest
>>> traitComposition: TIncludesTest classTrait +
>>> TCloneTest classTrait + TCopyTest ...etc...
>>> localSelectors: nil
>>>
>>> Metaclass(ClassDescription)>>compile:classified:withStamp:notifying:
>>> Receiver: StringTest class
>>> Arguments and temporary variables:
>>> text: 'lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>> #testA...etc...
>>> category: 'history'
>>> changeStamp: 'CesarRabak 11/30/2009 17:26'
>>> requestor: nil
>>> Receiver's instance variables:
>>> superclass: CollectionRootTest class
>>> methodDict: a MethodDictionary()
>>> format: 158
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> thisClass: StringTest
>>> traitComposition: TIncludesTest classTrait +
>>> TCloneTest classTrait + TCopyTest ...etc...
>>> localSelectors: nil
>>>
>>> Metaclass(ClassDescription)>>compile:classified:notifying:
>>> Receiver: StringTest class
>>> Arguments and temporary variables:
>>> text: 'lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>> #testA...etc...
>>> category: 'history'
>>> requestor: nil
>>> stamp: 'CesarRabak 11/30/2009 17:26'
>>> Receiver's instance variables:
>>> superclass: CollectionRootTest class
>>> methodDict: a MethodDictionary()
>>> format: 158
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> thisClass: StringTest
>>> traitComposition: TIncludesTest classTrait +
>>> TCloneTest classTrait + TCopyTest ...etc...
>>> localSelectors: nil
>>>
>>> Metaclass(ClassDescription)>>compile:classified:
>>> Receiver: StringTest class
>>> Arguments and temporary variables:
>>> code: 'lastStoredRun
>>> ^ ((Dictionary new) add: (#passed->((Set new) add:
>>> #testA...etc...
>>> heading: 'history'
>>> Receiver's instance variables:
>>> superclass: CollectionRootTest class
>>> methodDict: a MethodDictionary()
>>> format: 158
>>> instanceVariables: nil
>>> organization: ('as yet unclassified')
>>>
>>> thisClass: StringTest
>>> traitComposition: TIncludesTest classTrait +
>>> TCloneTest classTrait + TCopyTest ...etc...
>>> localSelectors: nil
>>>
>>> StringTest class(TestCase class)>>generateLastStoredRunMethod
>>> Receiver: StringTest
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> superclass: CollectionRootTest
>>> methodDict: a MethodDictionary(size 321)
>>> format: 158
>>> instanceVariables: #('string' 'emptyString'
>>> 'elementInNonEmpty' 'notIn' 'subcol...etc...
>>> organization: ('initialization' setUp)
>>> ('requirements' aValue anIndex anotherEl...etc...
>>> subclasses: nil
>>> name: #StringTest
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #'CollectionsTests-Text'
>>> traitComposition: TIncludesTest + TCloneTest +
>>> TCopyTest + TSetArithmetic + TIt...etc...
>>> localSelectors: an IdentitySet(#elementNotIn
>>> #firstIndex #replacementCollection...etc...
>>> history: a Dictionary(#errors->a Set()
>>> #failures->a Set() #passed->a Set(#testA...etc...
>>>
>>> [] in TestRunner>>storeResultIntoTestCases
>>> Receiver: a TestRunner
>>> Arguments and temporary variables:
>>> testCaseCls: StringTest
>>> Receiver's instance variables:
>>> categories: #(#'AST-Tests'
>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>> categoriesSelected: a Set(#'CollectionsTests-
>>> Support' #'CollectionsTests-Weak' ...etc...
>>> classes: {Base64MimeConverterTest.
>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>> classIndex: 0
>>> classesSelected: a Set(TextAndTextStreamTest
>>> WideStringTest WriteStreamTest Ide...etc...
>>> failedList: #()
>>> failedSelected: nil
>>> errorList: #()
>>> errorSelected: nil
>>> lastUpdate: 3437054762
>>> result: 4978 run, 4978 passes, 0 expected
>>> failures, 0 failures, 0 errors, 0 une...etc...
>>> previousRun: nil
>>>
>>> Set>>do:
>>> Receiver: a Set(RunArrayTest SmallDictionaryTest StringTest
>>> WeakKeyToCollectionDictionaryTest ArrayT...etc...
>>> Arguments and temporary variables:
>>> aBlock: [closure] in
>>> TestRunner>>storeResultIntoTestCases
>>> index: 364
>>> each: StringTest
>>> indexLimiT: 6638
>>> Receiver's instance variables:
>>> tally: 49
>>> array: {nil. nil. nil. nil. nil. nil. nil. nil.
>>> nil. nil. nil. nil. nil. nil. n...etc...
>>>
>>> TestRunner>>storeResultIntoTestCases
>>> Receiver: a TestRunner
>>> Arguments and temporary variables:
>>>
>>> Receiver's instance variables:
>>> categories: #(#'AST-Tests'
>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>> categoriesSelected: a Set(#'CollectionsTests-
>>> Support' #'CollectionsTests-Weak' ...etc...
>>> classes: {Base64MimeConverterTest.
>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>> classIndex: 0
>>> classesSelected: a Set(TextAndTextStreamTest
>>> WideStringTest WriteStreamTest Ide...etc...
>>> failedList: #()
>>> failedSelected: nil
>>> errorList: #()
>>> errorSelected: nil
>>> lastUpdate: 3437054762
>>> result: 4978 run, 4978 passes, 0 expected
>>> failures, 0 failures, 0 errors, 0 une...etc...
>>> previousRun: nil
>>>
>>> TestRunner>>perform:orSendTo:
>>> Receiver: a TestRunner
>>> Arguments and temporary variables:
>>> selector: #storeResultIntoTestCases
>>> otherTarget: a PluggableTextMorphPlus(3170)
>>> Receiver's instance variables:
>>> categories: #(#'AST-Tests'
>>> #'AutomaticMethodCategorizer-Tests' #'AutomaticMetho...etc...
>>> categoriesSelected: a Set(#'CollectionsTests-
>>> Support' #'CollectionsTests-Weak' ...etc...
>>> classes: {Base64MimeConverterTest.
>>> ByteArrayTest. CharacterSetTest. Association...etc...
>>> classIndex: 0
>>> classesSelected: a Set(TextAndTextStreamTest
>>> WideStringTest WriteStreamTest Ide...etc...
>>> failedList: #()
>>> failedSelected: nil
>>> errorList: #()
>>> errorSelected: nil
>>> lastUpdate: 3437054762
>>> result: 4978 run, 4978 passes, 0 expected
>>> failures, 0 failures, 0 errors, 0 une...etc...
>>> previousRun: nil
>>>
>>> [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>> Receiver: a ToggleMenuItemMorph(2690)'Store result as
>>> progress reference'
>>> Arguments and temporary variables:
>>> evt: [675@67 mouseUp 21933765 nil]
>>> selArgCount: #(2)
>>> Receiver's instance variables:
>>> bounds: 613@54 corner: 836@70
>>> owner: a MenuMorph(2400)
>>> submorphs: #()
>>> fullBounds: 613@54 corner: 836@70
>>> color: Color black
>>> extension: a MorphExtension (2845) [other:
>>> (layoutProperties -> a LayoutProper...etc...
>>> font: a LogicalFont
>>> familyName: DejaVu Sans
>>> emphasis: nil
>>> pointSize: 10
>>> rea...etc...
>>> emphasis: 0
>>> contents: 'Store result as progress reference'
>>> hasFocus: false
>>> isEnabled: true
>>> subMenu: nil
>>> isSelected: false
>>> target: a TestRunner
>>> selector: #perform:orSendTo:
>>> arguments: an Array(#storeResultIntoTestCases a
>>> PluggableTextMorphPlus(3170))
>>> icon: nil
>>> getStateSelector: nil
>>> enablementSelector: nil
>>> keyText: nil
>>>
>>> BlockClosure>>ensure:
>>> Receiver: [closure] in ToggleMenuItemMorph(MenuItemMorph)
>>> >>invokeWithEvent:
>>> Arguments and temporary variables:
>>> aBlock: [closure] in CursorWithMask(Cursor)
>>> >>showWhile:
>>> returnValue: nil
>>> b: nil
>>> Receiver's instance variables:
>>> outerContext: ToggleMenuItemMorph(MenuItemMorph)
>>> >>invokeWithEvent:
>>> startpc: 136
>>> numArgs: 0
>>>
>>> CursorWithMask(Cursor)>>showWhile:
>>> Receiver: ((CursorWithMask
>>> extent: 16@16
>>> depth: 1
>>> fromArray: #(
>>> 2r0
>>> 2r10000000000000000000000...etc...
>>> Arguments and temporary variables:
>>> aBlock: [closure] in ToggleMenuItemMorph
>>> (MenuItemMorph)>>invokeWithEvent:
>>> oldcursor: ((CursorWithMask
>>> extent: 16@16
>>> depth: 1
>>> fromArray: #(
>>> 2r0
>>> 2r1...etc...
>>> Receiver's instance variables:
>>> bits: a Bitmap of length 16
>>> width: 16
>>> height: 16
>>> depth: 1
>>> offset: -1@-1
>>> maskForm: Form(16x16x1)
>>>
>>>
>>> --- The full stack ---
>>> UndefinedObject(Object)>>doesNotUnderstand: #<
>>> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>>> EncoderForV3PlusClosures(BytecodeEncoder)
>>> >>sizeOpcodeSelector:withArguments:
>>> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
>>> LiteralNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> OrderedCollection>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> [] in CascadeNode>>sizeCodeForValue:
>>> OrderedCollection>>do:
>>> CascadeNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> Array(SequenceableCollection)>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> [] in MessageNode>>sizeCodeForValue:
>>> OrderedCollection>>collect:
>>> MessageNode>>sizeCodeForValue:
>>> [] in CascadeNode>>sizeCodeForValue:
>>> OrderedCollection>>do:
>>> CascadeNode>>sizeCodeForValue:
>>> CascadeNode(ParseNode)>>sizeCodeForReturn:
>>> ReturnNode>>sizeCodeForValue:
>>> ReturnNode(ParseNode)>>sizeCodeForBlockValue:
>>> BlockNode>>sizeCodeForEvaluatedValue:
>>> BytecodeAgnosticMethodNode>>generate:
>>> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
>>> Metaclass(Behavior)>>compile:classified:notifying:trailer:ifFail:
>>> Metaclass(ClassDescription)
>>> >>compile:classified:withStamp:notifying:logSource:
>>> Metaclass(ClassDescription)>>compile:classified:withStamp:notifying:
>>> Metaclass(ClassDescription)>>compile:classified:notifying:
>>> Metaclass(ClassDescription)>>compile:classified:
>>> StringTest class(TestCase class)>>generateLastStoredRunMethod
>>> [] in TestRunner>>storeResultIntoTestCases
>>> Set>>do:
>>> TestRunner>>storeResultIntoTestCases
>>> TestRunner>>perform:orSendTo:
>>> [] in ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>> BlockClosure>>ensure:
>>> CursorWithMask(Cursor)>>showWhile:
>>> - - - - - - - - - - - - - - -
>>> - - - - - - - - - - - - - - - - - -
>>> ToggleMenuItemMorph(MenuItemMorph)>>invokeWithEvent:
>>> ToggleMenuItemMorph(MenuItemMorph)>>mouseUp:
>>> ToggleMenuItemMorph(MenuItemMorph)>>handleMouseUp:
>>> MouseButtonEvent>>sentTo:
>>> ToggleMenuItemMorph(Morph)>>handleEvent:
>>> MorphicEventDispatcher>>dispatchDefault:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> ToggleMenuItemMorph(Morph)>>processEvent:using:
>>> MorphicEventDispatcher>>dispatchDefault:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> MenuMorph(Morph)>>processEvent:using:
>>> MenuMorph(Morph)>>processEvent:
>>> MenuMorph>>handleFocusEvent:
>>> [] in HandMorph>>sendFocusEvent:to:clear:
>>> [] in PasteUpMorph>>becomeActiveDuring:
>>> BlockClosure>>on:do:
>>> PasteUpMorph>>becomeActiveDuring:
>>> HandMorph>>sendFocusEvent:to:clear:
>>> HandMorph>>sendEvent:focus:clear:
>>> HandMorph>>sendMouseEvent:
>>> HandMorph>>handleEvent:
>>> HandMorph>>processEvents
>>> [] in WorldState>>doOneCycleNowFor:
>>> Array(SequenceableCollection)>>do:
>>> WorldState>>handsDo:
>>> WorldState>>doOneCycleNowFor:
>>> WorldState>>doOneCycleFor:
>>> WorldState>>doOneSubCycleFor:
>>> PasteUpMorph>>doOneSubCycle
>>> MenuMorph>>invokeModalAt:in:allowKeyboard:
>>> MenuMorph>>invokeModal:
>>> MenuMorph>>invokeModal
>>> PluggableTextMorphPlus(PluggableTextMorph)>>yellowButtonActivity:
>>> TextMorphForEditView>>mouseDown:
>>> TextMorphForEditView(Morph)>>handleMouseDown:
>>> MouseButtonEvent>>sentTo:
>>> TextMorphForEditView(Morph)>>handleEvent:
>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> TextMorphForEditView(Morph)>>processEvent:using:
>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> TransformMorph(Morph)>>processEvent:using:
>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> PluggableTextMorphPlus(Morph)>>processEvent:using:
>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> PluggableStandardWindow(Morph)>>processEvent:using:
>>> MorphicEventDispatcher>>dispatchMouseDown:with:
>>> MorphicEventDispatcher>>dispatchEvent:with:
>>> PasteUpMorph(Morph)>>processEvent:using:
>>> PasteUpMorph>>processEvent:using:
>>> PasteUpMorph(Morph)>>processEvent:
>>> HandMorph>>sendEvent:focus:clear:
>>> HandMorph>>sendMouseEvent:
>>> HandMorph>>handleEvent:
>>> HandMorph>>processEvents
>>> [] in WorldState>>doOneCycleNowFor:
>>> Array(SequenceableCollection)>>do:
>>> WorldState>>handsDo:
>>> WorldState>>doOneCycleNowFor:
>>> WorldState>>doOneCycleFor:
>>> PasteUpMorph>>doOneCycle
>>> [] in Project class>>spawnNewProcess
>>> [] in BlockClosure>>newProcess
>>>
>>> --
>>> Cesar Rabak
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
Simon
Nov. 30, 2009
Re: [Pharo-project] Fwd: [squeak-dev] Updated trunk image
by Nicolas Cellier
2009/11/30 Nicolas Cellier <nicolas.cellier.aka.nice(a)gmail.com>:
> 2009/11/30 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>> ok so I imagine that this is already in pharo :)
>> Excellent.
>>
>> Stef
>>
>
> The only complication is that every DisplayScanner & co method was
> reformatted in Pharo.
> Chasing my own changes gets a bit tricky in these conditions...
> I would need a special merger option to ignore formats (just scan code
> and compare the sequence of tokens for example...).
>
Oh, and the second complication is *Freetype-override...
I would like to not see that stuff !
Nicolas
> Nicolas
>
>> On Nov 30, 2009, at 8:35 PM, Nicolas Cellier wrote:
>>
>>> 2009/11/30 Henrik Sperre Johansen <henrik.s.johansen(a)veloxit.no>:
>>>> On 30.11.2009 19:29, Stéphane Ducasse wrote:
>>>>>>
>>>>>>>>> Collections
>>>>>>>>> -----------
>>>>>>>>> Conversion of OrderedCollection and SortedCollection to Arrays has been sped up significantly.
>>>>>>>>>
>>>>>> Yes, it should be ported to Pharo, I see no reason of divergence there.
>>>>>>
>>>>> Yes and I like the fast in the sentence :)
>>>> It's probably along the lines of what I did back in August for Pharo,
>>>> using the array primitives directly, instead of copying the elements one
>>>> by one.
>>>>
>>>> Cheers,
>>>> Henry
>>>>
>>>
>>> Oops, sorry, I did not noticed this one in Pharo and just rediscovered it.
>>> My implementation is a bit shorter and yours is faster:
>>>
>>> asArray
>>> Â Â Â "Overriden for speed"
>>> Â Â Â Â ^array copyFrom: firstIndex to: lastIndex
>>>
>>> Cheers
>>>
>>> Nicolas
>>>
>>>>
>>>> _______________________________________________
>>>> Pharo-project mailing list
>>>> Pharo-project(a)lists.gforge.inria.fr
>>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>>>
>>>
>>> _______________________________________________
>>> Pharo-project mailing list
>>> Pharo-project(a)lists.gforge.inria.fr
>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>
Nov. 30, 2009