Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 3 participants
- 144616 messages
Re: [Pharo-project] did you check in 1.1 how the old browser now support the creation of new method cat
by Stéphane Ducasse
Adrian
lukas was frustrated because he could not have the last version of the tools like RB, helvetia working in 1.1 and 1.0
I think that this is not something that you can expect. Else we can just stop Pharo now and go to
do something else.
This is why tools should work on a stable version and be marked tools for Pharo1.0
and brnaching to have tools for pharo1.1
Stef
On Dec 20, 2009, at 7:53 PM, Adrian Lienhard wrote:
> Version 1.0 is the one to work with, to build and maintain tools for,
> etc. Unless you work on the Pharo base system there is no good reason
> to use 1.1 at the current time. It is unstable and it is going to
> change. Furthermore, nobody can expect that external packages are
> already flawlessly working with the moving target 1.1. At a later
> point when 1.1 is getting stable it makes sense to move over from 1.0
> and make your packages, applications etc. work with the new version.
>
> I don't know the details and context of the discussion that Stef
> posted. But I assume that it also concerns packages that are in Pharo
> (i.e., packages that are added to PharoCore). There we have a slightly
> different situation because these packages are part of the Pharo image
> and hence also need to follow its release regime. That is, for the
> release of Pharo 1.0, the added packages need to be in a stable state.
> The versions of the packages used in Pharo should not add new features
> since post release 1.0 there should only be few updates for critical
> fixes.
>
> Adrian
>
> On Dec 20, 2009, at 19:16 , Hernán Morales Durand wrote:
>
>> Hi,
>> can you clarify what is a frozen 1.0 and which is the stable Pharo
>> image to use as a base system to develop tools? (I cannot mantain my
>> packages for both 1.0 and 1.1, it's a lot of work)
>> Thanks
>>
>> Hernán
>>
>> 2009/12/20 Stéphane Ducasse <stephane.ducasse(a)inria.fr>:
>>> I sent that to the list because this is really important.
>>>
>>>
>>>
>>>
>>>>> one of these days we will have to have some pharo specific tools.
>>>>
>>>> There will be nobody that maintains them. There will be nobody
>>>> that takes responsibility and that writes and runs tests. You can
>>>> see that with Davids browser, it is dead. You can see that with
>>>> Services, they are dead. And many others ...
>>>
>>> Yes but pharo is moving so slowly we will get more people taking
>>> care of packages.
>>>
>>>> But that is not the real problem. And I didn't mean Squeak
>>>> (although that's a problem too, but I personally don't care). What
>>>> I ment is the difference between Pharo 1.0 and Pharo 1.1.
>>>
>>> You lost me there :)
>>>
>>>> These two versions are killing any progress on the tool front and
>>>> makes any maintainer of external packages a lot of pain.
>>>
>>> Why
>>> why don't you freeze a version for pharo1.0
>>> Else we can just stop now.
>>> because this will be the same with pharo1.1 and 1.2 and 1.0
>>>
>>>> I spent the complete Thursday and Friday trying to get Helvetia
>>>> running in Pharo 1.1, but that doesn't work because it requires
>>>> some significant changes in packages like the Refactoring Rngine,
>>>> the AST, Shout, eCompletion and OB that are also supposed to work
>>>> on Pharo 1.0.
>>>
>>> No there are not supposed to work in 1.0
>>> CERTAIN frozen versions are supposed to work on 1.0 and others won't.
>>> A lot of software on mac does not run automatically on snowleopard
>>> and 10.2
>>>
>>> Tell me if Im wrong but we should use release and version.
>>>
>>>> Adding the category dialog to OB makes it depend on 1.1, thus
>>>> people cannot use it in 1.0 anymore. So the category dialog can
>>>> maybe happen in a year from now. I cannot use 1.1 at the moment, I
>>>> am stuck with the frozen 1.0 version.
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
Dec. 21, 2009
Re: [Pharo-project] freetype plugin on os-x squeak v5.0
by John M McIntosh
Ok, I spent a good 4 hours here working through issues.
Unfortunately the plugin just assumes an oops reference is a pointer (it's not), and that the squeak word size is (4), it might not be,
and the occasional FreeType variable is that an int or long? FreeType defines their own var types so their code isn't confused, but we are...
Plus a sprinkling of self cCode: to do magic transformations between oops pointers and instance pointer values transformed to an int, or is that a long...
So it will be sometime yet before I get it working with a 64bit VM and 32bit image.
On 2009-12-17, at 3:16 AM, Henrik Johansen wrote:
>
> On Dec 17, 2009, at 11:09 01AM, John M McIntosh wrote:
>
>> Now I need someone to tell me where it fails when running as a 64bit VM with a 32bit image.
>> No doubt there is a primitive call that needs to be changed, but I'm a bit too tired now to
>> sort thru how the heck the FreeType class works to find out where it fails. (Silently I might add...)
--
===========================================================================
John M. McIntosh <johnmci(a)smalltalkconsulting.com> Twitter: squeaker68882
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
===========================================================================
Dec. 21, 2009
Re: [Pharo-project] Why you need new Method trailers? :)
by Igor Stasenko
A little more.
I made an experiment with compressing a method sources into trailers.
(you need to file in a changeset (trailer-fixes-extensions.1.cs )
http://bugs.squeak.org/view.php?id=7428
What i did is:
CompiledMethod allInstancesDo: [:m | m dropSourcePointer ]
It takes a while (compressing sources).
A more faster way is to do same in workspace:
old := CompiledMethod allInstances select: [ :each | each trailer
hasSourcePointer ].
new := old collect: [ :each |
each copyWithTrailerBytes: (CompiledMethodTrailer new sourceCode:
each getSource) ].
old elementsForwardIdentityTo: new.
Before:
Image size: 26,192,916 bytes
After:
Image size: 33,348,596 bytes
difference: 7,155,680 bytes.
But this means, that your image doesn't have to use .sources file, which is
17,584,724 bytes long
as well as .changes
11,745,139 bytes long..
of course, stripping like this, will leave you without method stamps.. :)
--
Best regards,
Igor Stasenko AKA sig.
Dec. 21, 2009
[Pharo-project] Why you need new Method trailers? :)
by Igor Stasenko
I just created a small changeset
http://bugs.squeak.org/view.php?id=7432
which gives me a long awaited feature:
to see in a browser, where the heck a given method comes from.
If method comes from trait, a method's source tells me , from which one exactly!
Open a browser on Behavior clas and select an #addExclusionOf:to: method.
Usually you'll see:
addExclusionOf: aSymbol to: aTrait
self setTraitComposition: (
self traitComposition copyWithExclusionOf: aSymbol to: aTrait)
But with my changes you'll see:
" From: TAccessingTraitCompositionBehavior "
addExclusionOf: aSymbol to: aTrait
self setTraitComposition: (
self traitComposition copyWithExclusionOf: aSymbol to: aTrait)
in code pane.
Same applies to traits themselves for instance, browse
TPureBehavior>>isAliasSelector:
" From: TAccessingTraitCompositionBehavior "
isAliasSelector: aSymbol
"Return true if the selector aSymbol is an alias defined
in my or in another composition somewhere deeper in
the tree of traits compositions."
^(self includesLocalSelector: aSymbol) not
and: [self hasTraitComposition]
and: [self traitComposition isAliasSelector: aSymbol]
There is one problem , which requires better expertise than mine and i
need a help from Traits experts: an aliased methods.
I tried to find out, how to dig out the aliased method from
composition, and get its source to display in code pane .. but no
luck.
Please give me an advice, how a #getSourceCodeBySelector:
method should be implemented for proper handling of aliases.
Currently, all aliased methods sources shown using decompiler:
Behavior>>methodDictAddSelectorSilently: t1 withMethod: t2
self basicAddSelector: t1 withMethod: t2
Aliased methods, obviously, will require an additional info in source
header, like:
" From: SomeTrait , originalSelector: #blablba "
--
Best regards,
Igor Stasenko AKA sig.
Dec. 21, 2009
[Pharo-project] How is the responsable of planet squeak blog?
by Mariano Martinez Peck
Hi folks. I just wanted to let you know that we created the "News" section
for our SqueakDBX/GlorpDBX. This section is a blog and you can put rss.
If you are interested to put it inside PlanetSqueak rss, do it :)
See you.
Mariano
Dec. 20, 2009
Re: [Pharo-project] Long method can not be compiled using #compile: aString
by Igor Stasenko
2009/12/20 Marcus Denker <marcus.denker(a)inria.fr>:
>
> On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:
>
>> Dear all,
>>
>> I'm developing code which generates a method content, compiles it and adds it to an existing class.
>> I compile the message using #compile: message:
>> for instance:
>>
> In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
> literals.
>
> Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
> (we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).
>
To get around this, place all literals into one (usually array):
#( a b c d e ..... )
For instance, the above:
self addMMEFrom: 1054@512 to: 1037@504.
self addMMEFrom: 651@559 to: 643@579.
can be easily replaced by something like:
#( (1054 512 1037 504)
..... put as many as you want here.... no limit!!!
(651 559 643 579) ) do: [:each |
self addMMEFrom: (each first @ each second) to: (each third @ each fourth)
]
> Â Â Â Â Marcus
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Best regards,
Igor Stasenko AKA sig.
Dec. 20, 2009
Re: [Pharo-project] Long method can not be compiled using #compile: aString
by Eliot Miranda
Hi Bart, can you package this up as a reproducible case, something like
Object compile: (Stream stringContents: [:s| s nextPutAll: 'testMethod'.
256 timesRepeat: ...])
?
TIA
2009/12/20 Bart Gauquie <bart.gauquie(a)gmail.com>
> Dear all,
>
> I'm developing code which generates a method content, compiles it and adds
> it to an existing class.
> I compile the message using #compile: message:
> for instance:
>
> MorphicReplayDemoTest compile: '
> testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 651@559 to: 643@579.
> '.
>
> This works fine. However if the contents of the method is too long; for
> instance:
> if the self addMMEFrom: 1054@512 to: 1037@504. is repeated around 250
> times; I get following error (see stack below)
>
> The strange thing is that if I manually add that method using the editor
> and paste it, it works just fine. I even tested up to 5000 lines of code;
> its slow, but its working.
>
> Any ideas how to solve this?
>
> Thanks,
>
> Bart
>
> I'm using Pharo 1.0 rc update: 10502; using Ubuntu 9.10, using vm
> pharo-vm-0.15.2f-linux.
>
> THERE_BE_DRAGONS_HERE
> MessageNotUnderstood: receiver of "<" is nil
> 20 December 2009 8:17:14 pm
>
> VM: unix - i686 - linux-gnu - Pharo0.1 of 16 May 2008 [latest update:
> #10074]
> Image: PharoCore1.0rc1 [Latest update: #10502]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
> Image
> Trusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
> Image/secure
> Untrusted Dir /home/gauquiebart/Smalltalk/Pharo/Images/Pharo 1.0 Playground
> Image/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('false'->{false} 'nil'->{nil}
> 'recording'->{recording}...etc...
> nTemps: 0
> supered: false
> requestor: nil
> class: MorphicReplayDemoTest
> selector: #testMethod
> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
> 482. ...etc...
> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
> #<->{<} #...etc...
> litIndSet: a
> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
> litSet: a LiteralDictionary(size 402)
> sourceRanges: a Dictionary(size 853)
> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
> 5778). ...etc...
> addedSelectorAndMethodClassLiterals: false
> stream: {an EncoderForV3PlusClosures}
> position: 0
> rootNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEF...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('false'->{false} 'nil'->{nil}
> 'recording'->{recording}...etc...
> nTemps: 0
> supered: false
> requestor: nil
> class: MorphicReplayDemoTest
> selector: #testMethod
> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
> 482. ...etc...
> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
> #<->{<} #...etc...
> litIndSet: a
> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
> litSet: a LiteralDictionary(size 402)
> sourceRanges: a Dictionary(size 853)
> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
> 5778). ...etc...
> addedSelectorAndMethodClassLiterals: false
> stream: {an EncoderForV3PlusClosures}
> position: 0
> rootNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEF...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('false'->{false} 'nil'->{nil}
> 'recording'->{recording}...etc...
> nTemps: 0
> supered: false
> requestor: nil
> class: MorphicReplayDemoTest
> selector: #testMethod
> literalStream: a WriteStream {#addMMEFrom:to:. 1054. 512. 1037. 504. 979.
> 482. ...etc...
> selectorSet: a Dictionary(#*->{*} #+->{+} #-->{-} #/->{/} #'//'->{//}
> #<->{<} #...etc...
> litIndSet: a
> Dictionary(#MouseButtonEvent->MouseButtonEvent->{MouseButtonEvent}...etc...
> litSet: a LiteralDictionary(size 402)
> sourceRanges: a Dictionary(size 853)
> globalSourceRanges: an OrderedCollection({'MouseButtonEvent'. (5763 to:
> 5778). ...etc...
> addedSelectorAndMethodClassLiterals: false
> stream: {an EncoderForV3PlusClosures}
> position: 0
> rootNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEF...etc...
> blockExtentsToLocals: nil
>
> LiteralNode>>sizeCodeForValue:
> Receiver: {397}
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> key: 397
> code: -3
> index: nil
>
> [] in MessageNode>>sizeCodeForValue:
> Receiver: {1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {1092}
> selector: {@}
> precedence: 2
> special: 0
> arguments: #({397})
> sizes: #(nil)
> equalNode: nil
> caseErrorNode: nil
>
> Array(SequenceableCollection)>>collect:
> Receiver: #({397})
> Arguments and temporary variables:
> aBlock: [closure] in MessageNode>>sizeCodeForValue:
> newCollection: #(nil)
> index: 1
> indexLimiT: 1
> Receiver's instance variables:
> #({397})
>
> MessageNode>>sizeCodeForValue:
> Receiver: {1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {1092}
> selector: {@}
> precedence: 2
> special: 0
> arguments: #({397})
> sizes: #(nil)
> equalNode: nil
> caseErrorNode: nil
>
> [] in MessageNode>>sizeCodeForValue:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> OrderedCollection>>collect:
> Receiver: an OrderedCollection({1140 @ 387} {1092 @ 397})
> Arguments and temporary variables:
> aBlock: [closure] in MessageNode>>sizeCodeForValue:
> newCollection: an OrderedCollection(7)
> index: 4
> Receiver's instance variables:
> array: an Array(nil nil {1140 @ 387} {1092 @ 397} nil nil nil nil nil nil)
> firstIndex: 3
> lastIndex: 4
>
> MessageNode>>sizeCodeForValue:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> MessageNode(ParseNode)>>sizeCodeForEffect:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> MessageNode>>sizeCodeForEffect:
> Receiver: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> receiver: {self}
> selector: {addMMEFrom:to:}
> precedence: 3
> special: 0
> arguments: an OrderedCollection({1140 @ 387} {1092 @ 397})
> sizes: #(nil nil)
> equalNode: nil
> caseErrorNode: nil
>
> BlockNode>>sizeCodeExceptLast:
> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
> ...etc...
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> codeSize: 2564
> i: 169
> statement: {self addMMEFrom: 1140 @ 387 to: 1092 @ 397}
> iLimiT: 287
> Receiver's instance variables:
> comment: nil
> pc: nil
> arguments: #()
> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @
> 504} {...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: 11519
>
> BlockNode>>sizeCodeForEvaluatedValue:
> Receiver: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 504 to: 979 @ 482.
> ...etc...
> Arguments and temporary variables:
> encoder: {an EncoderForV3PlusClosures}
> Receiver's instance variables:
> comment: nil
> pc: nil
> arguments: #()
> statements: an OrderedCollection({self addMMEFrom: 1054 @ 512 to: 1037 @
> 504} {...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: 11519
>
> BytecodeAgnosticMethodNode>>generate:
> Receiver: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 504 to: 9...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: #testMethod
> precedence: 1
> arguments: #()
> block: {[self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMMEFrom: 1037 @ 5...etc...
> primitive: 0
> encoder: {an EncoderForV3PlusClosures}
> temporaries: #()
> properties: an AdditionalMethodState
> sourceText: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFr...etc...
> locationCounter: 3
> localsPool: an IdentitySet()
>
> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
> Receiver: CompiledMethodWithNode
> Arguments and temporary variables:
> aMethodNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addM...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
>
> MorphicReplayDemoTest
> class(Behavior)>>compile:classified:notifying:trailer:ifFail:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> code: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> requestor: nil
> bytes: #(0 0 0 0)
> failBlock: [closure] in MorphicReplayDemoTest
> class(ClassDescription)>>compile:...etc...
> methodNode: testMethod
> self addMMEFrom: 1054 @ 512 to: 1037 @ 504.
> self addMM...etc...
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
> MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
> Set(#testM...etc...
>
> MorphicReplayDemoTest
> class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> text: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> changeStamp: 'BartGauquie 12/20/2009 20:17'
> requestor: nil
> logSource: true
> methodAndNode: nil
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
> MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
> Set(#testM...etc...
>
> MorphicReplayDemoTest
> class(ClassDescription)>>compile:classified:withStamp:notifying:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> text: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> changeStamp: 'BartGauquie 12/20/2009 20:17'
> requestor: nil
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
> MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
> Set(#testM...etc...
>
> MorphicReplayDemoTest
> class(ClassDescription)>>compile:classified:notifying:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> text: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> category: #'as yet unclassified'
> requestor: nil
> stamp: 'BartGauquie 12/20/2009 20:17'
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
> MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
> Set(#testM...etc...
>
> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> code: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> requestor: nil
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
> MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
> Set(#testM...etc...
>
> MorphicReplayDemoTest class(Behavior)>>compile:
> Receiver: MorphicReplayDemoTest
> Arguments and temporary variables:
> code: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> Receiver's instance variables:
> superclass: AbstractReplayTestCase
> methodDict: a MethodDictionary(#testMethod->a CompiledMethod(1191:
> MorphicRepla...etc...
> format: 134
> instanceVariables: nil
> organization: ('tests' testMethod)
>
> subclasses: nil
> name: #MorphicReplayDemoTest
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'MorphicsRecordNPlay-Model'
> traitComposition: nil
> localSelectors: nil
> history: a Dictionary(#errors->a Set() #failures->a Set() #passed->a
> Set(#testM...etc...
>
> ByteString>>DoIt
> Receiver: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@48...etc...
> Arguments and temporary variables:
>
> Receiver's instance variables:
> 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 1037@504 to: 979@48...etc...
>
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> Receiver: a Compiler
> Arguments and temporary variables:
> textOrStream: a ReadWriteStream 'MorphicReplayDemoTest
> compile: self.'
> aContext: nil
> receiver: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom...etc...
> aRequestor: a TextMorphEditor
> failBlock: [closure] in [] in
> TextMorphEditor(ParagraphEditor)>>evaluateSelecti...etc...
> logFlag: true
> methodNode: DoIt
> ^ MorphicReplayDemoTest compile: self
> method: a CompiledMethod(2378: ByteString>>DoIt)
> value: nil
> toLog: nil
> itsSelection: nil
> itsSelectionString: nil
> Receiver's instance variables:
> sourceStream: a ReadWriteStream 'MorphicReplayDemoTest
> compile: self.'
> requestor: a TextMorphEditor
> class: ByteString
> category: nil
> context: nil
> parser: a Parser
>
> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> rcvr: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> ctxt: nil
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> BlockClosure>>on:do:
> Receiver: [closure] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
> Arguments and temporary variables:
> exception: OutOfScopeNotification
> handlerAction: [closure] in
> TextMorphEditor(ParagraphEditor)>>evaluateSelection...etc...
> handlerActive: true
> Receiver's instance variables:
> outerContext: TextMorphEditor(ParagraphEditor)>>evaluateSelection
> startpc: 116
> numArgs: 0
>
> TextMorphEditor(ParagraphEditor)>>evaluateSelection
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> result: nil
> rcvr: 'testMethod
> self addMMEFrom: 1054@512 to: 1037@504.
> self addMMEFrom: 10...etc...
> ctxt: nil
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>doIt
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
>
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> [] in TextMorphEditor(ParagraphEditor)>>doIt:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
>
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> aBlock: [closure] in TextMorphEditor(ParagraphEditor)>>doIt:
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>doIt:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> characterStream: a WriteStream ''
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> typeAheadStream: a WriteStream ''
> honorCommandKeys: true
> keyValue: 100
> keyChar: $d
> char: $d
> action: #doIt:
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor>>dispatchOnKeyEvent:with:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> typeAheadStream: a WriteStream ''
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor(ParagraphEditor)>>keystroke:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> typeAhead: a WriteStream ''
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> TextMorphEditor>>keystroke:
> Receiver: a TextMorphEditor
> Arguments and temporary variables:
> keyEvent: [keystroke '<Cmd-d>']
> Receiver's instance variables:
> model: a NewInspector
> paragraph: a MultiNewParagraph
> startBlock: a CharacterBlock with index 39 and rectangle 103@16 corner:
> 103@32
> ...etc...
> stopBlock: a CharacterBlock with index 1 and character $M and rectangle 0@0cor...etc...
> beginTypeInBlock: nil
> emphasisHere: an Array(a TextFontChange font: 2)
> initialText: a Text for 'MorphicReplayDemoTest
> compile: self
> '
> selectionShowing: false
> otherInterval: (38 to: 38)
> lastParentLocation: nil
> morph: a TextMorphForEditView(3730)
> oldInterval: nil
> pivotBlock: nil
>
> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
> Receiver: a TextMorphForEditView(3730)
> Arguments and temporary variables:
> evt: [keystroke '<Cmd-d>']
> Receiver's instance variables:
> bounds: 0@0 corner: 358@34
> owner: a TransformMorph(942)
> submorphs: #()
> fullBounds: 0@0 corner: 358@34
> color: Color black
> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'MorphicReplayDemoTest
> compile: self.'
> wrapFlag: true
> paragraph: a MultiNewParagraph
> editor: a TextMorphEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editHistory: a TextMorphCommandHistory
> editView: a PluggableTextMorphPlus(2866)
> acceptOnCR: false
>
> TextMorphForEditView(TextMorph)>>handleInteraction:
> Receiver: a TextMorphForEditView(3730)
> Arguments and temporary variables:
> interactionBlock: [closure] in [] in
> TextMorphForEditView(TextMorph)>>keyStroke...etc...
> oldEditor: a TextMorphEditor
> oldParagraph: a MultiNewParagraph
> oldText: a Text for 'MorphicReplayDemoTest
> compile: self.'
> Receiver's instance variables:
> bounds: 0@0 corner: 358@34
> owner: a TransformMorph(942)
> submorphs: #()
> fullBounds: 0@0 corner: 358@34
> color: Color black
> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'MorphicReplayDemoTest
> compile: self.'
> wrapFlag: true
> paragraph: a MultiNewParagraph
> editor: a TextMorphEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editHistory: a TextMorphCommandHistory
> editView: a PluggableTextMorphPlus(2866)
> acceptOnCR: false
>
> TextMorphForEditView>>handleInteraction:
> Receiver: a TextMorphForEditView(3730)
> Arguments and temporary variables:
> interActionBlock: [closure] in [] in
> TextMorphForEditView(TextMorph)>>keyStroke...etc...
> Receiver's instance variables:
> bounds: 0@0 corner: 358@34
> owner: a TransformMorph(942)
> submorphs: #()
> fullBounds: 0@0 corner: 358@34
> color: Color black
> extension: a MorphExtension (3477) [other: (blinkStart -> 11369859)]
> borderWidth: 0
> borderColor: Color black
> textStyle: a TextStyle Bitmap DejaVu Sans 9
> text: a Text for 'MorphicReplayDemoTest
> compile: self.'
> wrapFlag: true
> paragraph: a MultiNewParagraph
> editor: a TextMorphEditor
> container: nil
> predecessor: nil
> successor: nil
> backgroundColor: nil
> margins: nil
> editHistory: a TextMorphCommandHistory
> editView: a PluggableTextMorphPlus(2866)
> acceptOnCR: false
>
>
> --- The full stack ---
> UndefinedObject(Object)>>doesNotUnderstand: #<
> EncoderForV3PlusClosures(EncoderForV3)>>genPushLiteral:
>
> EncoderForV3PlusClosures(BytecodeEncoder)>>sizeOpcodeSelector:withArguments:
> EncoderForV3PlusClosures(BytecodeEncoder)>>sizePushLiteral:
> LiteralNode>>sizeCodeForValue:
> [] in MessageNode>>sizeCodeForValue:
> Array(SequenceableCollection)>>collect:
> MessageNode>>sizeCodeForValue:
> [] in MessageNode>>sizeCodeForValue:
> OrderedCollection>>collect:
> MessageNode>>sizeCodeForValue:
> MessageNode(ParseNode)>>sizeCodeForEffect:
> MessageNode>>sizeCodeForEffect:
> BlockNode>>sizeCodeExceptLast:
> BlockNode>>sizeCodeForEvaluatedValue:
> BytecodeAgnosticMethodNode>>generate:
> CompiledMethodWithNode class>>generateMethodFromNode:trailer:
> MorphicReplayDemoTest
> class(Behavior)>>compile:classified:notifying:trailer:ifFail:
> MorphicReplayDemoTest
> class(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
> MorphicReplayDemoTest
> class(ClassDescription)>>compile:classified:withStamp:notifying:
> MorphicReplayDemoTest
> class(ClassDescription)>>compile:classified:notifying:
> MorphicReplayDemoTest class(ClassDescription)>>compile:notifying:
> MorphicReplayDemoTest class(Behavior)>>compile:
> ByteString>>DoIt
> Compiler>>evaluate:in:to:notifying:ifFail:logged:
> [] in TextMorphEditor(ParagraphEditor)>>evaluateSelection
> BlockClosure>>on:do:
> TextMorphEditor(ParagraphEditor)>>evaluateSelection
> TextMorphEditor(ParagraphEditor)>>doIt
> [] in TextMorphEditor(ParagraphEditor)>>doIt:
> TextMorphEditor(ParagraphEditor)>>terminateAndInitializeAround:
> TextMorphEditor(ParagraphEditor)>>doIt:
> TextMorphEditor(ParagraphEditor)>>dispatchOnKeyEvent:with:
> TextMorphEditor>>dispatchOnKeyEvent:with:
> TextMorphEditor(ParagraphEditor)>>keystroke:
> TextMorphEditor>>keystroke:
> [] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
> TextMorphForEditView(TextMorph)>>handleInteraction:
> TextMorphForEditView>>handleInteraction:
> - - - - - - - - - - - - - - -
> - - - - - - - - - - - - - - - - - -
> [] in TextMorphForEditView(TextMorph)>>keyStroke:
> ECToolSet class>>codeCompletionAround:textMorph:keyStroke:
> DEVToolSet class>>codeCompletionAround:textMorph:keyStroke:
> ToolSet class>>codeCompletionAround:textMorph:keyStroke:
> TextMorphForEditView(TextMorph)>>keyStroke:
> TextMorphForEditView>>keyStroke:
> TextMorphForEditView(TextMorph)>>handleKeystroke:
> KeyboardEvent>>sentTo:
> TextMorphForEditView(Morph)>>handleEvent:
> TextMorphForEditView(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:clear:
> [] in PasteUpMorph>>becomeActiveDuring:
> BlockClosure>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendKeyboardEvent:
> 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
> -----------------------------------------------------------
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Dec. 20, 2009
Re: [Pharo-project] CompiledMethodTrailers ready for use
by Igor Stasenko
2009/12/20 Henrik Sperre Johansen <henrik.s.johansen(a)veloxit.no>:
> On 20.12.2009 22:07, Igor Stasenko wrote:
>> 2009/12/20 Henrik Sperre Johansen<henrik.s.johansen(a)veloxit.no>:
>>
>>> On 20.12.2009 20:04, Igor Stasenko wrote:
>>>
>>>> Hello,
>>>> i finished this stuff, and its ready for adoption.
>>>>
>>>>
>>> Nice!
>>>
>>>> See http://bugs.squeak.org/view.php?id=7428
>>>>
>>>> Anyone wants to help pushing it into trunk update stream (using MC configs)?
>>>>
>>>> It works fine on recent trunk image,
>>>> on pharo however i had some problems installing changes, because of
>>>> some differencies.
>>>>
>>>> Tried on PharoCore-1.1-11106-ALPHA.image
>>>>
>>>> phase2.1.cs
>>>> - do not filein the TextEditor changes, since pharo-core don't have it.
>>>> - do not filein the last line (reorganizing)..
>>>>
>>>> - tests failing because pharo String class does not implements
>>>> #squeakToUtf8
>>>> nor
>>>> #utf8ToSqueak
>>>>
>>>> Do we having an uniform way how to encode  ANY String ->   ByteString(utf8)
>>>> and back? What ANSI standard saying about it? Maybe i'm using wrong methods?
>>>>
>>>>
>>> "3.4.6.4 - It is erroneous if stringBody contains any characters that
>>> does not exist in the implementation
>>> defined execution character set used in the representation of character
>>> objects."
>>> So, implementation defined.
>>> Every internal String (in Squeak and Pharo) (afaik) should be either
>>> latin1 (ByteStrings) or + utf32 with the high byte used for
>>> differentiation between language of the string.
>>>
>>> To me, sending squeakToUtf8, then using StandardFileStream instead of
>>> FileStream seems safe.
>>> As long as the ByteString's bytes is utf8, utf8ToSqueak works. (And in
>>> most other cases as well)
>>> In fact, it's safer than UTF8Decoder for non-utf8 strings, which does
>>> not perform the validity checks (only reads the total #of bytes) when
>>> encountering bytes> Â 127.
>>> The reason it seems mostly for internal use (to me) is the fact it
>>> silently falls back to assuming string is already in latin1 (ie, the
>>> "valid" ByteString format), instead of raising an error like the stream
>>> decoder does. (Which, by the way, would be much nicer if was a
>>> MalformedUTF8Error or some such...)
>>>
>>> ws := StandardFileStream newFileNamed: 'test.txt'.
>>> "Save as latin1"
>>> ws nextPutAll: 'ååå'.
>>> ws close.
>>>
>>> "Read with UTF8Decoder"
>>> rs := FileStream oldFileNamed: 'test.txt'.
>>> "Print this, gives a ?"
>>> rs contents.
>>> rs close
>>>
>>> "Read with Latin1Decoder"
>>> rs := StandardFileStream oldFileNamed: 'test.txt'.
>>> "Print this, gives ååå. since it's not valid utf8, thus assumes latin1"
>>> rs contents utf8ToSqueak.
>>> rs close
>>>
>>>> Still, i think we need this thing standartized and be common for all
>>>> dialects (not just Pharo/Squeak).
>>>>
>>>>
>>> There's really only one way to store characters in a ByteArray (ie.
>>> ByteString) and call it utf8 encoded.
>>> As far as I can tell, Squeak seems to do the right thing :)
>>> I believe Nicolas pushed for implementation in Pharo some time ago, not
>>> sure what happened to that.
>>>
>>>
>> I seems solved this by using #convertToEncoding: / #convertFromEncoding: .
>> Tests working fine after that. I didn't tried however to use source
>> with other than Latin1 characters yet.
>>
> Converting to utf8 from ByteString/WideString should not be a problem,
> as long as you know the ByteString encoding is latin1. (Which it should
> if created it by any normal means)
> As long as you are SURE the string you are decoding is utf8 (like, when
> you've encoded them all yourself ;) ), convertFromEncoding: shouldn't be
> a problem either. (See previous mail, it's the same as used by
> FileStream, so lacks the validity checks).
>
Ok, thanks for clarification.
I'm also found other places in Pharo where its using a #( 0 0 0 0)
as trailer in
addTraitSelector: aSymbol withMethod: aCompiledMethod
it needs to be fixed (as well as all other places which trying to use
arrays for defining a trailer).
> Cheers,
> Henry
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
--
Best regards,
Igor Stasenko AKA sig.
Dec. 20, 2009
Re: [Pharo-project] CompiledMethodTrailers ready for use
by Henrik Sperre Johansen
On 20.12.2009 22:07, Igor Stasenko wrote:
> 2009/12/20 Henrik Sperre Johansen<henrik.s.johansen(a)veloxit.no>:
>
>> On 20.12.2009 20:04, Igor Stasenko wrote:
>>
>>> Hello,
>>> i finished this stuff, and its ready for adoption.
>>>
>>>
>> Nice!
>>
>>> See http://bugs.squeak.org/view.php?id=7428
>>>
>>> Anyone wants to help pushing it into trunk update stream (using MC configs)?
>>>
>>> It works fine on recent trunk image,
>>> on pharo however i had some problems installing changes, because of
>>> some differencies.
>>>
>>> Tried on PharoCore-1.1-11106-ALPHA.image
>>>
>>> phase2.1.cs
>>> - do not filein the TextEditor changes, since pharo-core don't have it.
>>> - do not filein the last line (reorganizing)..
>>>
>>> - tests failing because pharo String class does not implements
>>> #squeakToUtf8
>>> nor
>>> #utf8ToSqueak
>>>
>>> Do we having an uniform way how to encode ANY String -> ByteString(utf8)
>>> and back? What ANSI standard saying about it? Maybe i'm using wrong methods?
>>>
>>>
>> "3.4.6.4 - It is erroneous if stringBody contains any characters that
>> does not exist in the implementation
>> defined execution character set used in the representation of character
>> objects."
>> So, implementation defined.
>> Every internal String (in Squeak and Pharo) (afaik) should be either
>> latin1 (ByteStrings) or + utf32 with the high byte used for
>> differentiation between language of the string.
>>
>> To me, sending squeakToUtf8, then using StandardFileStream instead of
>> FileStream seems safe.
>> As long as the ByteString's bytes is utf8, utf8ToSqueak works. (And in
>> most other cases as well)
>> In fact, it's safer than UTF8Decoder for non-utf8 strings, which does
>> not perform the validity checks (only reads the total #of bytes) when
>> encountering bytes> 127.
>> The reason it seems mostly for internal use (to me) is the fact it
>> silently falls back to assuming string is already in latin1 (ie, the
>> "valid" ByteString format), instead of raising an error like the stream
>> decoder does. (Which, by the way, would be much nicer if was a
>> MalformedUTF8Error or some such...)
>>
>> ws := StandardFileStream newFileNamed: 'test.txt'.
>> "Save as latin1"
>> ws nextPutAll: 'ååå'.
>> ws close.
>>
>> "Read with UTF8Decoder"
>> rs := FileStream oldFileNamed: 'test.txt'.
>> "Print this, gives a ?"
>> rs contents.
>> rs close
>>
>> "Read with Latin1Decoder"
>> rs := StandardFileStream oldFileNamed: 'test.txt'.
>> "Print this, gives ååå. since it's not valid utf8, thus assumes latin1"
>> rs contents utf8ToSqueak.
>> rs close
>>
>>> Still, i think we need this thing standartized and be common for all
>>> dialects (not just Pharo/Squeak).
>>>
>>>
>> There's really only one way to store characters in a ByteArray (ie.
>> ByteString) and call it utf8 encoded.
>> As far as I can tell, Squeak seems to do the right thing :)
>> I believe Nicolas pushed for implementation in Pharo some time ago, not
>> sure what happened to that.
>>
>>
> I seems solved this by using #convertToEncoding: / #convertFromEncoding: .
> Tests working fine after that. I didn't tried however to use source
> with other than Latin1 characters yet.
>
Converting to utf8 from ByteString/WideString should not be a problem,
as long as you know the ByteString encoding is latin1. (Which it should
if created it by any normal means)
As long as you are SURE the string you are decoding is utf8 (like, when
you've encoded them all yourself ;) ), convertFromEncoding: shouldn't be
a problem either. (See previous mail, it's the same as used by
FileStream, so lacks the validity checks).
Cheers,
Henry
Dec. 20, 2009
Re: [Pharo-project] Long method can not be compiled using #compile: aString
by Marcus Denker
On Dec 20, 2009, at 8:44 PM, Bart Gauquie wrote:
> Dear all,
>
> I'm developing code which generates a method content, compiles it and adds it to an existing class.
> I compile the message using #compile: message:
> for instance:
>
In general, everything is limited to a fairly low quantity: number of temps, number of ivars, number of
literals.
Especially that the literal frame is limted to some small number (255 or something) can be easily be a problem.
(we ran into that already when using bytesurgeon on large existing methods when reifying all sends, for example).
Marcus
Dec. 20, 2009