About 512 MB changes patch

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
28 messages Options
12
Reply | Threaded
Open this post in threaded view
|

About 512 MB changes patch

Philippe Marschall
Hi

Ok, I had an 3.9 7051 image that was very close at 32 MB. I could
either rebuild a new image from scratch or use the patch from Klaus.
Now I knew about the risks (wich are why it's not in 3.9) and that it
has not seen enough testing. But if nobody tests it because it has not
seen enough testing then nobody will test it and it will never see
enogh testing. So it basically boiled down to 'Who if not me? When if
not now?'

So I did

- loaded LargeSourceFilePointers-kwl.0.cs (said Proceed)
- did the doit
- loaded LargeSourceFilePointers-kwl.1.cs
- did the doit

loaded RefactoringEngine
run Lint on a package, did some fixes, commited via Monticello
run Lint on an other package, did some fixes, oops trace below

As you can see a CompiledMethod is in the preamble.
size of changes file:
31377626

From: 2 October 2006 8:36:33 pm

VM: unix - a SmalltalkImage
Image: Squeak3.9alpha [latest update: #7051]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true

CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
        Receiver: a CompiledMethod (614)
        Arguments and temporary variables:
                aMessage: findString: ''methodsFor:'' startingAt: 1
        Receiver''s instance variables:
a CompiledMethod (614)

CompiledMethod>>timeStamp
        Receiver: a CompiledMethod (614)
        Arguments and temporary variables:
                file: MultiByteFileStream:
''/home/upnip/data/uni/masterarbeit/images/7051/Squea...etc...
                preamble: a CompiledMethod (614)
                stamp: ''''
                tokens: nil
                tokenCount: nil
                ex: nil
        Receiver''s instance variables:
a CompiledMethod (614)

MethodReference>>timeStamp
        Receiver: a MethodReference PKBarLayout >> initialize
        Arguments and temporary variables:

        Receiver''s instance variables:
                classSymbol: #PKBarLayout
                classIsMeta: false
                methodSymbol: #initialize
                stringVersion: ''PKBarLayout initialize''

MCMethodDefinition class>>forMethodReference:
        Receiver: MCMethodDefinition
        Arguments and temporary variables:
                aMethodReference: a MethodReference PKBarLayout >> initialize
                definition: nil
        Receiver''s instance variables:
                superclass: MCDefinition
                methodDict: a MethodDictionary(#=->a CompiledMethod (643)
#accept:->a CompiledM...etc...
                format: 142
                instanceVariables: #(''classIsMeta'' ''source'' ''category''
''selector'' ''className'' ''...etc...
                organization: (''accessing'' actualClass category classIsMeta
className fullTimeS...etc...
                subclasses: nil
                name: #MCMethodDefinition
                classPool: a Dictionary(#Definitions->a WeakIdentityKeyDictionary(size 239) )
                sharedPools: nil
                environment: a SystemDictionary(lots of globals)
                category: #''Monticello-Modeling''
                traitComposition: nil
                localSelectors: nil


--- The full stack ---
CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
CompiledMethod>>timeStamp
MethodReference>>timeStamp
MCMethodDefinition class>>forMethodReference:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MethodReference>>asMethodDefinition
[] in MCPackage>>snapshot {[:ea | definitions add: ea asMethodDefinition]}
[] in Array(SequenceableCollection)>>do:displayingProgress: {[:each :i
|  bar value: i.  aBlock value: each]}
Array(SequenceableCollection)>>withIndexDo:
[] in Array(SequenceableCollection)>>do:displayingProgress: {[:bar |
self   withIndexDo: [:each :i |     bar value: i.    aBlock value:
e...]}
[] in ProgressInitiationException>>defaultMorphicAction {[result :=
workBlock value: progress]}
BlockContext>>ensure:
ProgressInitiationException>>defaultMorphicAction
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
ProgressInitiationException(Exception)>>signal
ProgressInitiationException>>display:at:from:to:during:
ProgressInitiationException class>>display:at:from:to:during:
ByteString(String)>>displayProgressAt:from:to:during:
Array(SequenceableCollection)>>do:displayingProgress:
MCPackage>>snapshot
MCWorkingCopy>>changesRelativeToRepository:
MCWorkingCopyBrowser>>viewChanges
PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
PluggableButtonMorphPlus>>performAction
[] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m |
(m containsPoint: evt cursorPoint)   ifTrue: [m performAction]]}
Array(SequenceableCollection)>>do:
PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
PluggableButtonMorphPlus>>mouseUp:
PluggableButtonMorphPlus(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
PluggableButtonMorphPlus(Morph)>>handleEvent:
PluggableButtonMorphPlus(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
ActiveEvent := anEvent.  result := focusHolder     han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
processEvents.  capturingGesture := capturingGest...]}
...etc...

Cheers
Philippe

Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

stephane ducasse-2
> Hi
>
> Ok, I had an 3.9 7051 image that was very close at 32 MB. I could
> either rebuild a new image from scratch or use the patch from Klaus.
> Now I knew about the risks (wich are why it's not in 3.9) and that it
> has not seen enough testing. But if nobody tests it because it has not
> seen enough testing then nobody will test it and it will never see
> enogh testing. So it basically boiled down to 'Who if not me? When if
> not now?'

Good! I like that kind of behavior, fool but bold :)

> So I did
>
> - loaded LargeSourceFilePointers-kwl.0.cs (said Proceed)
> - did the doit
> - loaded LargeSourceFilePointers-kwl.1.cs
> - did the doit
>
> loaded RefactoringEngine
> run Lint on a package, did some fixes, commited via Monticello
> run Lint on an other package, did some fixes, oops trace below
>
> As you can see a CompiledMethod is in the preamble.
> size of changes file:
> 31377626
>
> From: 2 October 2006 8:36:33 pm
>
> VM: unix - a SmalltalkImage
> Image: Squeak3.9alpha [latest update: #7051]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
>
> CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
> Receiver: a CompiledMethod (614)
> Arguments and temporary variables:
> aMessage: findString: ''methodsFor:'' startingAt: 1
> Receiver''s instance variables:
> a CompiledMethod (614)
>
> CompiledMethod>>timeStamp
> Receiver: a CompiledMethod (614)
> Arguments and temporary variables:
> file: MultiByteFileStream:
> ''/home/upnip/data/uni/masterarbeit/images/7051/Squea...etc...
> preamble: a CompiledMethod (614)
> stamp: ''''
> tokens: nil
> tokenCount: nil
> ex: nil
> Receiver''s instance variables:
> a CompiledMethod (614)
>
> MethodReference>>timeStamp
> Receiver: a MethodReference PKBarLayout >> initialize
> Arguments and temporary variables:
>
> Receiver''s instance variables:
> classSymbol: #PKBarLayout
> classIsMeta: false
> methodSymbol: #initialize
> stringVersion: ''PKBarLayout initialize''
>
> MCMethodDefinition class>>forMethodReference:
> Receiver: MCMethodDefinition
> Arguments and temporary variables:
> aMethodReference: a MethodReference PKBarLayout >> initialize
> definition: nil
> Receiver''s instance variables:
> superclass: MCDefinition
> methodDict: a MethodDictionary(#=->a CompiledMethod (643)
> #accept:->a CompiledM...etc...
> format: 142
> instanceVariables: #(''classIsMeta'' ''source'' ''category''
> ''selector'' ''className'' ''...etc...
> organization: (''accessing'' actualClass category classIsMeta
> className fullTimeS...etc...
> subclasses: nil
> name: #MCMethodDefinition
> classPool: a Dictionary(#Definitions->a WeakIdentityKeyDictionary
> (size 239) )
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #''Monticello-Modeling''
> traitComposition: nil
> localSelectors: nil
>
>
> --- The full stack ---
> CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
> CompiledMethod>>timeStamp
> MethodReference>>timeStamp
> MCMethodDefinition class>>forMethodReference:
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> MethodReference>>asMethodDefinition
> [] in MCPackage>>snapshot {[:ea | definitions add: ea  
> asMethodDefinition]}
> [] in Array(SequenceableCollection)>>do:displayingProgress: {[:each :i
> |  bar value: i.  aBlock value: each]}
> Array(SequenceableCollection)>>withIndexDo:
> [] in Array(SequenceableCollection)>>do:displayingProgress: {[:bar |
> self   withIndexDo: [:each :i |     bar value: i.    aBlock value:
> e...]}
> [] in ProgressInitiationException>>defaultMorphicAction {[result :=
> workBlock value: progress]}
> BlockContext>>ensure:
> ProgressInitiationException>>defaultMorphicAction
> ProgressInitiationException>>defaultAction
> UndefinedObject>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> ProgressInitiationException(Exception)>>signal
> ProgressInitiationException>>display:at:from:to:during:
> ProgressInitiationException class>>display:at:from:to:during:
> ByteString(String)>>displayProgressAt:from:to:during:
> Array(SequenceableCollection)>>do:displayingProgress:
> MCPackage>>snapshot
> MCWorkingCopy>>changesRelativeToRepository:
> MCWorkingCopyBrowser>>viewChanges
> PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
> PluggableButtonMorphPlus>>performAction
> [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m |
> (m containsPoint: evt cursorPoint)   ifTrue: [m performAction]]}
> Array(SequenceableCollection)>>do:
> PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
> PluggableButtonMorphPlus>>mouseUp:
> PluggableButtonMorphPlus(Morph)>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> PluggableButtonMorphPlus(Morph)>>handleEvent:
> PluggableButtonMorphPlus(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
> ActiveEvent := anEvent.  result := focusHolder     han...]}
> [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
> BlockContext>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
> processEvents.  capturingGesture := capturingGest...]}
> ...etc...
>
> Cheers
> Philippe
>


Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Klaus D. Witzel
In reply to this post by Philippe Marschall
Thank you Phillipe for letting me know.

But this is work in progress, see "as yet not 100% complete, still need to  
address prior: pointing backwards with old pointer format" in

-  
http://lists.squeakfoundation.org/pipermail/squeak-dev/2006-July/106542.html

And while we are here: I do not expect such problems when .source and  
.changes are *both* produced in the 512 MB format (versus: as a mixture of  
the old and the new format).

FWIW: now that Squeak-dev image is available (thanks again to Damien and  
contributors) I could use the Squeak-dev image tool mix for testing a  
reasonable set of clients ...

If the 512 MB changes patch is planned for 3.10: I'm ready to completing  
the patch and tests (except during the 2nd half of November).

/Klaus

On Mon, 02 Oct 2006 20:41:55 +0200, Philippe Marschall wrote:

> Hi
>
> Ok, I had an 3.9 7051 image that was very close at 32 MB. I could
> either rebuild a new image from scratch or use the patch from Klaus.
> Now I knew about the risks (wich are why it's not in 3.9) and that it
> has not seen enough testing. But if nobody tests it because it has not
> seen enough testing then nobody will test it and it will never see
> enogh testing. So it basically boiled down to 'Who if not me? When if
> not now?'
>
> So I did
>
> - loaded LargeSourceFilePointers-kwl.0.cs (said Proceed)
> - did the doit
> - loaded LargeSourceFilePointers-kwl.1.cs
> - did the doit
>
> loaded RefactoringEngine
> run Lint on a package, did some fixes, commited via Monticello
> run Lint on an other package, did some fixes, oops trace below
>
> As you can see a CompiledMethod is in the preamble.
> size of changes file:
> 31377626
>
> From: 2 October 2006 8:36:33 pm
>
> VM: unix - a SmalltalkImage
> Image: Squeak3.9alpha [latest update: #7051]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
>
> CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
> Receiver: a CompiledMethod (614)
> Arguments and temporary variables:
> aMessage: findString: ''methodsFor:'' startingAt: 1
> Receiver''s instance variables:
> a CompiledMethod (614)
>
> CompiledMethod>>timeStamp
> Receiver: a CompiledMethod (614)
> Arguments and temporary variables:
> file: MultiByteFileStream:
> ''/home/upnip/data/uni/masterarbeit/images/7051/Squea...etc...
> preamble: a CompiledMethod (614)
> stamp: ''''
> tokens: nil
> tokenCount: nil
> ex: nil
> Receiver''s instance variables:
> a CompiledMethod (614)
>
> MethodReference>>timeStamp
> Receiver: a MethodReference PKBarLayout >> initialize
> Arguments and temporary variables:
>
> Receiver''s instance variables:
> classSymbol: #PKBarLayout
> classIsMeta: false
> methodSymbol: #initialize
> stringVersion: ''PKBarLayout initialize''
>
> MCMethodDefinition class>>forMethodReference:
> Receiver: MCMethodDefinition
> Arguments and temporary variables:
> aMethodReference: a MethodReference PKBarLayout >> initialize
> definition: nil
> Receiver''s instance variables:
> superclass: MCDefinition
> methodDict: a MethodDictionary(#=->a CompiledMethod (643)
> #accept:->a CompiledM...etc...
> format: 142
> instanceVariables: #(''classIsMeta'' ''source'' ''category''
> ''selector'' ''className'' ''...etc...
> organization: (''accessing'' actualClass category classIsMeta
> className fullTimeS...etc...
> subclasses: nil
> name: #MCMethodDefinition
> classPool: a Dictionary(#Definitions->a  
> WeakIdentityKeyDictionary(size 239) )
> sharedPools: nil
> environment: a SystemDictionary(lots of globals)
> category: #''Monticello-Modeling''
> traitComposition: nil
> localSelectors: nil
>
>
> --- The full stack ---
> CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
> CompiledMethod>>timeStamp
> MethodReference>>timeStamp
> MCMethodDefinition class>>forMethodReference:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> MethodReference>>asMethodDefinition
> [] in MCPackage>>snapshot {[:ea | definitions add: ea  
> asMethodDefinition]}
> [] in Array(SequenceableCollection)>>do:displayingProgress: {[:each :i
> |  bar value: i.  aBlock value: each]}
> Array(SequenceableCollection)>>withIndexDo:
> [] in Array(SequenceableCollection)>>do:displayingProgress: {[:bar |
> self   withIndexDo: [:each :i |     bar value: i.    aBlock value:
> e...]}
> [] in ProgressInitiationException>>defaultMorphicAction {[result :=
> workBlock value: progress]}
> BlockContext>>ensure:
> ProgressInitiationException>>defaultMorphicAction
> ProgressInitiationException>>defaultAction
> UndefinedObject>>handleSignal:
> MethodContext(ContextPart)>>handleSignal:
> ProgressInitiationException(Exception)>>signal
> ProgressInitiationException>>display:at:from:to:during:
> ProgressInitiationException class>>display:at:from:to:during:
> ByteString(String)>>displayProgressAt:from:to:during:
> Array(SequenceableCollection)>>do:displayingProgress:
> MCPackage>>snapshot
> MCWorkingCopy>>changesRelativeToRepository:
> MCWorkingCopyBrowser>>viewChanges
> PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
> PluggableButtonMorphPlus>>performAction
> [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m |
> (m containsPoint: evt cursorPoint)   ifTrue: [m performAction]]}
> Array(SequenceableCollection)>>do:
> PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
> PluggableButtonMorphPlus>>mouseUp:
> PluggableButtonMorphPlus(Morph)>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> PluggableButtonMorphPlus(Morph)>>handleEvent:
> PluggableButtonMorphPlus(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
> ActiveEvent := anEvent.  result := focusHolder     han...]}
> [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
> BlockContext>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
> processEvents.  capturingGesture := capturingGest..]}
> ...etc...
>
> Cheers
> Philippe
>
>



Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Philippe Marschall
2006/10/2, Klaus D. Witzel <[hidden email]>:
> Thank you Phillipe for letting me know.
>
> But this is work in progress, see "as yet not 100% complete, still need to
> address prior: pointing backwards with old pointer format" in

So if I load the patch before I load the packages I want to change and
commit with Monticello it should work?

Philippe

> -
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2006-July/106542.html
>
> And while we are here: I do not expect such problems when .source and
> .changes are *both* produced in the 512 MB format (versus: as a mixture of
> the old and the new format).
>
> FWIW: now that Squeak-dev image is available (thanks again to Damien and
> contributors) I could use the Squeak-dev image tool mix for testing a
> reasonable set of clients ...
>
> If the 512 MB changes patch is planned for 3.10: I'm ready to completing
> the patch and tests (except during the 2nd half of November).
>
> /Klaus
>
> On Mon, 02 Oct 2006 20:41:55 +0200, Philippe Marschall wrote:
>
> > Hi
> >
> > Ok, I had an 3.9 7051 image that was very close at 32 MB. I could
> > either rebuild a new image from scratch or use the patch from Klaus.
> > Now I knew about the risks (wich are why it's not in 3.9) and that it
> > has not seen enough testing. But if nobody tests it because it has not
> > seen enough testing then nobody will test it and it will never see
> > enogh testing. So it basically boiled down to 'Who if not me? When if
> > not now?'
> >
> > So I did
> >
> > - loaded LargeSourceFilePointers-kwl.0.cs (said Proceed)
> > - did the doit
> > - loaded LargeSourceFilePointers-kwl.1.cs
> > - did the doit
> >
> > loaded RefactoringEngine
> > run Lint on a package, did some fixes, commited via Monticello
> > run Lint on an other package, did some fixes, oops trace below
> >
> > As you can see a CompiledMethod is in the preamble.
> > size of changes file:
> > 31377626
> >
> > From: 2 October 2006 8:36:33 pm
> >
> > VM: unix - a SmalltalkImage
> > Image: Squeak3.9alpha [latest update: #7051]
> >
> > SecurityManager state:
> > Restricted: false
> > FileAccess: true
> > SocketAccess: true
> >
> > CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
> >       Receiver: a CompiledMethod (614)
> >       Arguments and temporary variables:
> >               aMessage:       findString: ''methodsFor:'' startingAt: 1
> >       Receiver''s instance variables:
> > a CompiledMethod (614)
> >
> > CompiledMethod>>timeStamp
> >       Receiver: a CompiledMethod (614)
> >       Arguments and temporary variables:
> >               file:   MultiByteFileStream:
> > ''/home/upnip/data/uni/masterarbeit/images/7051/Squea...etc...
> >               preamble:       a CompiledMethod (614)
> >               stamp:  ''''
> >               tokens:         nil
> >               tokenCount:     nil
> >               ex:     nil
> >       Receiver''s instance variables:
> > a CompiledMethod (614)
> >
> > MethodReference>>timeStamp
> >       Receiver: a MethodReference PKBarLayout >> initialize
> >       Arguments and temporary variables:
> >
> >       Receiver''s instance variables:
> >               classSymbol:    #PKBarLayout
> >               classIsMeta:    false
> >               methodSymbol:   #initialize
> >               stringVersion:  ''PKBarLayout initialize''
> >
> > MCMethodDefinition class>>forMethodReference:
> >       Receiver: MCMethodDefinition
> >       Arguments and temporary variables:
> >               aMethodReference:       a MethodReference PKBarLayout >> initialize
> >               definition:     nil
> >       Receiver''s instance variables:
> >               superclass:     MCDefinition
> >               methodDict:     a MethodDictionary(#=->a CompiledMethod (643)
> > #accept:->a CompiledM...etc...
> >               format:         142
> >               instanceVariables:      #(''classIsMeta'' ''source'' ''category''
> > ''selector'' ''className'' ''...etc...
> >               organization:   (''accessing'' actualClass category classIsMeta
> > className fullTimeS...etc...
> >               subclasses:     nil
> >               name:   #MCMethodDefinition
> >               classPool:      a Dictionary(#Definitions->a
> > WeakIdentityKeyDictionary(size 239) )
> >               sharedPools:    nil
> >               environment:    a SystemDictionary(lots of globals)
> >               category:       #''Monticello-Modeling''
> >               traitComposition:       nil
> >               localSelectors:         nil
> >
> >
> > --- The full stack ---
> > CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
> > CompiledMethod>>timeStamp
> > MethodReference>>timeStamp
> > MCMethodDefinition class>>forMethodReference:
> >  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> > MethodReference>>asMethodDefinition
> > [] in MCPackage>>snapshot {[:ea | definitions add: ea
> > asMethodDefinition]}
> > [] in Array(SequenceableCollection)>>do:displayingProgress: {[:each :i
> > |  bar value: i.  aBlock value: each]}
> > Array(SequenceableCollection)>>withIndexDo:
> > [] in Array(SequenceableCollection)>>do:displayingProgress: {[:bar |
> > self   withIndexDo: [:each :i |     bar value: i.    aBlock value:
> > e...]}
> > [] in ProgressInitiationException>>defaultMorphicAction {[result :=
> > workBlock value: progress]}
> > BlockContext>>ensure:
> > ProgressInitiationException>>defaultMorphicAction
> > ProgressInitiationException>>defaultAction
> > UndefinedObject>>handleSignal:
> > MethodContext(ContextPart)>>handleSignal:
> > ProgressInitiationException(Exception)>>signal
> > ProgressInitiationException>>display:at:from:to:during:
> > ProgressInitiationException class>>display:at:from:to:during:
> > ByteString(String)>>displayProgressAt:from:to:during:
> > Array(SequenceableCollection)>>do:displayingProgress:
> > MCPackage>>snapshot
> > MCWorkingCopy>>changesRelativeToRepository:
> > MCWorkingCopyBrowser>>viewChanges
> > PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
> > PluggableButtonMorphPlus>>performAction
> > [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m |
> > (m containsPoint: evt cursorPoint)   ifTrue: [m performAction]]}
> > Array(SequenceableCollection)>>do:
> > PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
> > PluggableButtonMorphPlus>>mouseUp:
> > PluggableButtonMorphPlus(Morph)>>handleMouseUp:
> > MouseButtonEvent>>sentTo:
> > PluggableButtonMorphPlus(Morph)>>handleEvent:
> > PluggableButtonMorphPlus(Morph)>>handleFocusEvent:
> > [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
> > ActiveEvent := anEvent.  result := focusHolder     han...]}
> > [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
> > BlockContext>>on:do:
> > PasteUpMorph>>becomeActiveDuring:
> > HandMorph>>sendFocusEvent:to:clear:
> > HandMorph>>sendEvent:focus:clear:
> > HandMorph>>sendMouseEvent:
> > HandMorph>>handleEvent:
> > HandMorph>>processEvents
> > [] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
> > processEvents.  capturingGesture := capturingGest..]}
> > ...etc...
> >
> > Cheers
> > Philippe
> >
> >
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Klaus D. Witzel
Hi Philippe,

on Mon, 02 Oct 2006 22:06:21 +0200, you wrote:

> 2006/10/2, Klaus D. Witzel <[hidden email]>:
>> Thank you Phillipe for letting me know.
>>
>> But this is work in progress, see "as yet not 100% complete, still need  
>> to
>> address prior: pointing backwards with old pointer format" in
>
> So if I load the patch before I load the packages I want to change and
> commit with Monticello it should work?

Yes, that should work. But how'd you know that an "old prior:" is not  
accessed, somehow, (un)intentionally. It manifests here as incomplete  
version lists.

Will ask Marcus tomorrow at the Bern Squeak Stammtisch for his  
recommendation on completing the migration.

Of course I'd appreciate that you give it a try and feedback. Apologies in  
advance ;-) Seriously, I have checked the *new* pointers back and forth.

/Klaus

> Philippe
>
>> -
>> http://lists.squeakfoundation.org/pipermail/squeak-dev/2006-July/106542.html
>>
>> And while we are here: I do not expect such problems when .source and
>> .changes are *both* produced in the 512 MB format (versus: as a mixture  
>> of
>> the old and the new format).
>>
>> FWIW: now that Squeak-dev image is available (thanks again to Damien and
>> contributors) I could use the Squeak-dev image tool mix for testing a
>> reasonable set of clients ...
>>
>> If the 512 MB changes patch is planned for 3.10: I'm ready to completing
>> the patch and tests (except during the 2nd half of November).
>>
>> /Klaus
>>
>> On Mon, 02 Oct 2006 20:41:55 +0200, Philippe Marschall wrote:
>>
>> > Hi
>> >
>> > Ok, I had an 3.9 7051 image that was very close at 32 MB. I could
>> > either rebuild a new image from scratch or use the patch from Klaus.
>> > Now I knew about the risks (wich are why it's not in 3.9) and that it
>> > has not seen enough testing. But if nobody tests it because it has not
>> > seen enough testing then nobody will test it and it will never see
>> > enogh testing. So it basically boiled down to 'Who if not me? When if
>> > not now?'
>> >
>> > So I did
>> >
>> > - loaded LargeSourceFilePointers-kwl.0.cs (said Proceed)
>> > - did the doit
>> > - loaded LargeSourceFilePointers-kwl.1.cs
>> > - did the doit
>> >
>> > loaded RefactoringEngine
>> > run Lint on a package, did some fixes, commited via Monticello
>> > run Lint on an other package, did some fixes, oops trace below
>> >
>> > As you can see a CompiledMethod is in the preamble.
>> > size of changes file:
>> > 31377626
>> >
>> > From: 2 October 2006 8:36:33 pm
>> >
>> > VM: unix - a SmalltalkImage
>> > Image: Squeak3.9alpha [latest update: #7051]
>> >
>> > SecurityManager state:
>> > Restricted: false
>> > FileAccess: true
>> > SocketAccess: true
>> >
>> > CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
>> >       Receiver: a CompiledMethod (614)
>> >       Arguments and temporary variables:
>> >               aMessage:       findString: ''methodsFor:'' startingAt:  
>> 1
>> >       Receiver''s instance variables:
>> > a CompiledMethod (614)
>> >
>> > CompiledMethod>>timeStamp
>> >       Receiver: a CompiledMethod (614)
>> >       Arguments and temporary variables:
>> >               file:   MultiByteFileStream:
>> > ''/home/upnip/data/uni/masterarbeit/images/7051/Squea...etc...
>> >               preamble:       a CompiledMethod (614)
>> >               stamp:  ''''
>> >               tokens:         nil
>> >               tokenCount:     nil
>> >               ex:     nil
>> >       Receiver''s instance variables:
>> > a CompiledMethod (614)
>> >
>> > MethodReference>>timeStamp
>> >       Receiver: a MethodReference PKBarLayout >> initialize
>> >       Arguments and temporary variables:
>> >
>> >       Receiver''s instance variables:
>> >               classSymbol:    #PKBarLayout
>> >               classIsMeta:    false
>> >               methodSymbol:   #initialize
>> >               stringVersion:  ''PKBarLayout initialize''
>> >
>> > MCMethodDefinition class>>forMethodReference:
>> >       Receiver: MCMethodDefinition
>> >       Arguments and temporary variables:
>> >               aMethodReference:       a MethodReference PKBarLayout  
>> >> initialize
>> >               definition:     nil
>> >       Receiver''s instance variables:
>> >               superclass:     MCDefinition
>> >               methodDict:     a MethodDictionary(#=->a CompiledMethod  
>> (643)
>> > #accept:->a CompiledM...etc...
>> >               format:         142
>> >               instanceVariables:      #(''classIsMeta'' ''source''  
>> ''category''
>> > ''selector'' ''className'' ''...etc...
>> >               organization:   (''accessing'' actualClass category  
>> classIsMeta
>> > className fullTimeS...etc...
>> >               subclasses:     nil
>> >               name:   #MCMethodDefinition
>> >               classPool:      a Dictionary(#Definitions->a
>> > WeakIdentityKeyDictionary(size 239) )
>> >               sharedPools:    nil
>> >               environment:    a SystemDictionary(lots of globals)
>> >               category:       #''Monticello-Modeling''
>> >               traitComposition:       nil
>> >               localSelectors:         nil
>> >
>> >
>> > --- The full stack ---
>> > CompiledMethod(Object)>>doesNotUnderstand: #findString:startingAt:
>> > CompiledMethod>>timeStamp
>> > MethodReference>>timeStamp
>> > MCMethodDefinition class>>forMethodReference:
>> >  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>> > MethodReference>>asMethodDefinition
>> > [] in MCPackage>>snapshot {[:ea | definitions add: ea
>> > asMethodDefinition]}
>> > [] in Array(SequenceableCollection)>>do:displayingProgress: {[:each :i
>> > |  bar value: i.  aBlock value: each]}
>> > Array(SequenceableCollection)>>withIndexDo:
>> > [] in Array(SequenceableCollection)>>do:displayingProgress: {[:bar |
>> > self   withIndexDo: [:each :i |     bar value: i.    aBlock value:
>> > e...]}
>> > [] in ProgressInitiationException>>defaultMorphicAction {[result :=
>> > workBlock value: progress]}
>> > BlockContext>>ensure:
>> > ProgressInitiationException>>defaultMorphicAction
>> > ProgressInitiationException>>defaultAction
>> > UndefinedObject>>handleSignal:
>> > MethodContext(ContextPart)>>handleSignal:
>> > ProgressInitiationException(Exception)>>signal
>> > ProgressInitiationException>>display:at:from:to:during:
>> > ProgressInitiationException class>>display:at:from:to:during:
>> > ByteString(String)>>displayProgressAt:from:to:during:
>> > Array(SequenceableCollection)>>do:displayingProgress:
>> > MCPackage>>snapshot
>> > MCWorkingCopy>>changesRelativeToRepository:
>> > MCWorkingCopyBrowser>>viewChanges
>> > PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
>> > PluggableButtonMorphPlus>>performAction
>> > [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp: {[:m |
>> > (m containsPoint: evt cursorPoint)   ifTrue: [m performAction]]}
>> > Array(SequenceableCollection)>>do:
>> > PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
>> > PluggableButtonMorphPlus>>mouseUp:
>> > PluggableButtonMorphPlus(Morph)>>handleMouseUp:
>> > MouseButtonEvent>>sentTo:
>> > PluggableButtonMorphPlus(Morph)>>handleEvent:
>> > PluggableButtonMorphPlus(Morph)>>handleFocusEvent:
>> > [] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
>> > ActiveEvent := anEvent.  result := focusHolder     han...]}
>> > [] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
>> > BlockContext>>on:do:
>> > PasteUpMorph>>becomeActiveDuring:
>> > HandMorph>>sendFocusEvent:to:clear:
>> > HandMorph>>sendEvent:focus:clear:
>> > HandMorph>>sendMouseEvent:
>> > HandMorph>>handleEvent:
>> > HandMorph>>processEvents
>> > [] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h
>> > processEvents.  capturingGesture := capturingGest..]}
>> > ...etc...
>> >
>> > Cheers
>> > Philippe
>> >
>> >
>>
>>
>>
>>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

timrowledge
I've been looking at this code a while and whilst I congratulate  
Klaus on his valiant attempt to solve the file size problem I think  
we need to take a step back and try to clean things up a bit more.

The problem here is that we have an extraordinary mess in our source  
pointer methods. It mostly stems from 'temporary' attempts to survive  
the problems of having source pointed to by four bytes stuck to the  
end of a nasty design of a hybrid object type that ought to have  
disappeared in 1998 after I first wrote the code to convert them to  
proper objects. If we stick any more patches on top of this nonsense  
we are in danger of looking like a part decomposed ancient egyptian  
mummy.

Let's spend a little time and effort working out what we would like  
to end up with and then a way to get there from here.

I would like to propose a fairly complete overhaul of CompiledMethod  
and its friends. Get rid of the hybrid object format (which would  
simplify the gc code a little too) and define CMs as
bytecodes
literals
sourceaccess
methodClass
...whatever other properties are needed...

ie a plain object with named instance variables. A slight alternative  
that might be considered is for the literals to be indexed vars  
following the named ones (think OrderedCollection if this is not  
familiar to you).

We would lose the algorithmic gymnastics about last literal is the  
class, second to last is the properties, first is the recipe for  
today's soup dish, etc.

The source code access would be through any object understanding a  
small protocol along the lines of 'get source', 'setSourceTo:'  
and .... err, I think that's it. Again, back in '98 I demonstrated a  
system that used this and had example accessors that used a file, an  
encoded file, a plain string, a compressed string and a damp string.  
Using a database or a networked method source server or a connection  
to another image which held the source in some other way would all be  
possible.

The cost is a loss of backwards compatibility for the image. Maybe it  
would be possible to make a vm that would run old images as well as  
new ones but I suspect it would cost some performance and I'm sure it  
would cost some tedious maintenance tax. You may not care about that  
but *I* sure do! Maybe it would be better to just abandon the current  
image lineage and jump ship to build this purely on top of Spoon?  
Maybe nobody cares?

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: SEXI: Sign EXtend Integer



Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Jecel Assumpcao Jr
Tim Rowledge wrote:

> I would like to propose a fairly complete overhaul of CompiledMethod  
> and its friends. Get rid of the hybrid object format (which would  
> simplify the gc code a little too) and define CMs as
> bytecodes
> literals
> sourceaccess
> methodClass
> ...whatever other properties are needed...

Self has been exactly like this since 1990 and it works great! Makes
more sense for people learning it too.

Since I am currently working on a 16 bit Smalltalk I can tell you that
ugly hacks like the current CompiledMethod format are absolutely
necessary when you are limited to 32K objects. I am doing things that
are far worse. But on a 32 bit system there is zero excuse for this kind
of thing (there are small performance losses here and there in the VM
but the overall results is an actual speed up) and it is a pity that the
16 bit b/w ==> 32 bit color transition wasn't used to clean things up
(though understandable given the requirement of the smallest possible
footprint).

-- Jecel

Reply | Threaded
Open this post in threaded view
|

re: About 512 MB changes patch

ccrraaiigg
In reply to this post by timrowledge

> Maybe it would be better to just abandon the current image
> lineage and jump ship to build this purely on top of Spoon?

     Yeah, let's do that one. :)


-C

--
Craig Latta
http://netjam.org/resume



Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Andreas.Raab
In reply to this post by timrowledge
Hi Tim -

As much as I agree with the idea of reworking CompiledMethod in general,
it seems to me we shouldn't mix up two otherwise unrelated issues. One
issue is that of changing the source code representation from being four
bytes in the compiled method to being a real object. The other one is to
change CompiledMethod itself. The two are completely unrelated in my
understanding - we could well have a better factored class
CompiledMethod that uses four bytes at the end of the bytecodes to
encode the source pointer and we can equally have a source object
representation within the current CompiledMethods.

Mixing up these two just doesn't seem helpful to make in terms of being
able to make progress. We now have a proposed solution for dealing with
the source representation, I don't think there is any need to make this
dependent on a complete overhaul of compiled method itself (in
particular considering that there are some unanswered questions about
speed/space tradeoffs in this area). And contrary, if someone would make
the concrete proposal for a rework of CompiledMethod I would say let's
not make this dependent on agreeing on a particular source code
representation. In either case, both are valuable, yet independent
problems to be solved. Mixing them up doesn't seem to add much value to
the (already complicated) process of getting them adopted.

Cheers,
   - Andreas

tim Rowledge wrote:

> I've been looking at this code a while and whilst I congratulate Klaus
> on his valiant attempt to solve the file size problem I think we need to
> take a step back and try to clean things up a bit more.
>
> The problem here is that we have an extraordinary mess in our source
> pointer methods. It mostly stems from 'temporary' attempts to survive
> the problems of having source pointed to by four bytes stuck to the end
> of a nasty design of a hybrid object type that ought to have disappeared
> in 1998 after I first wrote the code to convert them to proper objects.
> If we stick any more patches on top of this nonsense we are in danger of
> looking like a part decomposed ancient egyptian mummy.
>
> Let's spend a little time and effort working out what we would like to
> end up with and then a way to get there from here.
>
> I would like to propose a fairly complete overhaul of CompiledMethod and
> its friends. Get rid of the hybrid object format (which would simplify
> the gc code a little too) and define CMs as
> bytecodes
> literals
> sourceaccess
> methodClass
> ...whatever other properties are needed...
>
> ie a plain object with named instance variables. A slight alternative
> that might be considered is for the literals to be indexed vars
> following the named ones (think OrderedCollection if this is not
> familiar to you).
>
> We would lose the algorithmic gymnastics about last literal is the
> class, second to last is the properties, first is the recipe for today's
> soup dish, etc.
>
> The source code access would be through any object understanding a small
> protocol along the lines of 'get source', 'setSourceTo:' and .... err, I
> think that's it. Again, back in '98 I demonstrated a system that used
> this and had example accessors that used a file, an encoded file, a
> plain string, a compressed string and a damp string. Using a database or
> a networked method source server or a connection to another image which
> held the source in some other way would all be possible.
>
> The cost is a loss of backwards compatibility for the image. Maybe it
> would be possible to make a vm that would run old images as well as new
> ones but I suspect it would cost some performance and I'm sure it would
> cost some tedious maintenance tax. You may not care about that but *I*
> sure do! Maybe it would be better to just abandon the current image
> lineage and jump ship to build this purely on top of Spoon? Maybe nobody
> cares?
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Strange OpCodes: SEXI: Sign EXtend Integer
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

timrowledge

On 2-Oct-06, at 5:54 PM, Andreas Raab wrote:

> Hi Tim -
>
> As much as I agree with the idea of reworking CompiledMethod in  
> general, it seems to me we shouldn't mix up two otherwise unrelated  
> issues.
[snip]
Yes, that is plausible and reasonable; except that I *do* think it is  
way past time to do the CM rework and since to makes it trivial to  
also clean up the source code representation I consider it a nice  
synergy. Sure, we can improve the source code situation by putting a  
normal oop in the properties. That would certainly be better.

As I said, Klaus is to be congratulated for coming up with a concrete  
proposal. I don't think it cleans up anywhere near enough of the  
mess, but that could be worked on. For example, it appears to me to  
leave far too much in the way of assumptions about the source pointer  
being an encrypted integer for real comfort. I made a technically  
simple but organisationally more complex proposal. It is what it is.  
If people don't like it, they don't like it.

Perhaps it is not yet time to change the image format and break  
backward compatability; then again, the 64bit images are not backward  
compatible, the proposed 3.9 release requires a condensed changes and  
new sources file (perhaps not if we adopt a source pointer cleanup?)  
and frankly the place is in a mess that needs cleaning. I'm fairly  
amazed you haven't been clamouring for such a cleanup for the OLPC work.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: IPL: Invent Program Lines



Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Andreas.Raab
Hi Tim -

>> As much as I agree with the idea of reworking CompiledMethod in
>> general, it seems to me we shouldn't mix up two otherwise unrelated
>> issues.
> [snip]
> Yes, that is plausible and reasonable; except that I *do* think it is
> way past time to do the CM rework and since to makes it trivial to also
> clean up the source code representation I consider it a nice synergy.

And it is. However, I question whether to put the two into the same bag.
I think we can agree that whatever a new compiled method format will be
like, it'll have a variable representing the source code reference. If
we know that, then we can discuss what the source reference should
represent. And that's really all that this discussion should be about.

Having said that, I don't claim that Klaus' proposal is the one that
necessarily should be adopted - I like it because it's the simplest
thing I could imagine for starters and it's not so alien that all of the
client code needs to be changed. That said, there *is* room for
discussing the alternatives, and if you're unhappy with Klaus' proposal,
by all means, propose some alternative. All I'm asking for is that we
don't mix it with the CompiledMethod discussion.

> As I said, Klaus is to be congratulated for coming up with a concrete
> proposal. I don't think it cleans up anywhere near enough of the mess,
> but that could be worked on. For example, it appears to me to leave far
> too much in the way of assumptions about the source pointer being an
> encrypted integer for real comfort. I made a technically simple but
> organisationally more complex proposal. It is what it is. If people
> don't like it, they don't like it.

Well, in that case all I can say is: "Code speaks" ;-) If you still have
that code from '98 and can update it to work with method properties I'd
like to see it and I'd like us to have the discussion about which
approach people like more.

> Perhaps it is not yet time to change the image format and break backward
> compatability; then again, the 64bit images are not backward compatible,
> the proposed 3.9 release requires a condensed changes and new sources
> file (perhaps not if we adopt a source pointer cleanup?) and frankly the
> place is in a mess that needs cleaning. I'm fairly amazed you haven't
> been clamouring for such a cleanup for the OLPC work.

We're steering a deliberately conservative course on OLPC. Right now our
(effectively only) priority is to make sure that eToys work well and
that we're on track for the first batch of machines. Because of that,
concerns regarding the representation of source pointers get little
attention and unless there is some major, major speedup I would veto any
changes to CompiledMethod for OLPC simply on general principles. We have
enough issues to deal with as things stand, there is no reason to create
a bunch of new ones. That's not to say that we shouldn't do the work,
but OLPC is simply not the place to debug the issues surrounding it.

Cheers,
   - Andreas

Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Klaus D. Witzel
In reply to this post by timrowledge
On Tue, 03 Oct 2006 04:18:48 +0200, tim Rowledge wrote:
> On 2-Oct-06, at 5:54 PM, Andreas Raab wrote:
>
>> Hi Tim -
>>
>> As much as I agree with the idea of reworking CompiledMethod in  
>> general, it seems to me we shouldn't mix up two otherwise unrelated  
>> issues.

+ 1

> [snip]
> Yes, that is plausible and reasonable; except that I *do* think it is  
> way past time to do the CM rework and since to makes it trivial to also  
> clean up the source code representation I consider it a nice synergy.  
> Sure, we can improve the source code situation by putting a normal oop  
> in the properties. That would certainly be better.
>
> As I said, Klaus is to be congratulated for coming up with a concrete  
> proposal. I don't think it cleans up anywhere near enough of the mess,  
> but that could be worked on. For example, it appears to me to leave far  
> too much in the way of assumptions about the source pointer being an  
> encrypted integer for real comfort.

There was only one reason for keeping this intact: the possible clients of  
the current source file & pointer machinery. One could get rid of the  
latter if all clients where known (and maintainable) by providing a new  
interface.

FWIW, the situation would be the same if we'd just add one more byte to  
the current source pointer "object" in CompiledMethod, except that  
migration would be a noop.

> I made a technically simple but organisationally more complex proposal.

Of which I am a strong supporter.

> It is what it is. If people don't like it, they don't like it.

/Klaus


Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

Tony Garnock-Jones-2
In reply to this post by Andreas.Raab
Andreas Raab wrote:
> Well, in that case all I can say is: "Code speaks" ;-) If you still have
> that code from '98 and can update it to work with method properties I'd
> like to see it and I'd like us to have the discussion about which
> approach people like more.

I'd very much like to see the code from 98 as it stands, without any
changes, to get some feel for the scale of the change as proposed.

Regards,
  Tony


Reply | Threaded
Open this post in threaded view
|

JUMP SHIP (Re: About 512 MB changes patch)

SmallSqueak
In reply to this post by ccrraaiigg
Hi Craig,

    Tim wrote:

>
> > Maybe it would be better to just abandon the current image
> > lineage and jump ship to build this purely on top of Spoon?
>

    and you responded:

>      Yeah, let's do that one. :)
>

    I know you are seriuosly smiling here.

    Yeah, let's do that one !!!
   
    I don't know if you are serious enough to use your Spoon
    to scoop out from the release Squeak 3.9 the KernelImage
    pioneered by Pavel and post the system and instructions
    for reproducing it on http://netjam.org/ (or better yet,
    on SqueakFoundation servers. I am sure The Board would
    have no problems approving that).

    Cheers,

    SmallSqueak.




   

Reply | Threaded
Open this post in threaded view
|

Re: About 512 MB changes patch

timrowledge
In reply to this post by Tony Garnock-Jones-2

On 3-Oct-06, at 3:02 AM, Tony Garnock-Jones wrote:

> Andreas Raab wrote:
>> Well, in that case all I can say is: "Code speaks" ;-) If you  
>> still have
>> that code from '98 and can update it to work with method  
>> properties I'd
>> like to see it and I'd like us to have the discussion about which
>> approach people like more.
>
> I'd very much like to see the code from 98 as it stands, without any
> changes, to get some feel for the scale of the change as proposed.

See

http://www.rowledge.org/tim/squeak/SqFiles/packages/NewCompiledMethod- 
Archive.zip

for the original released files. The new CM class is very simple and  
it is the cloner changes that were the really tricky part - the  
earlier cloner was very limited and need quite a bit of sneaky work  
to make it possible to do the needed transmutations.

Note that this bunch of files don't have anything much by way of  
clever tricks for handling source; I can't find anything on my system  
from the experiements I did at Interval.
Also note that the chances of being able to filein this code to any  
recent image is essentially zero. Don't waste your time!

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Useful Latin Phrases:- Gramen artificiosum odi = I hate Astroturf.



Reply | Threaded
Open this post in threaded view
|

re: JUMP SHIP

ccrraaiigg
In reply to this post by SmallSqueak

Hi PhiHo--

> Tim wrote:
>
> > > Maybe it would be better to just abandon the current image lineage
> > > and jump ship to build this purely on top of Spoon?
>
> and you responded:
>
> > Yeah, let's do that one. :)
>
> I know you are seriously smiling here.
>
> Yeah, let's do that one !!!
>
> I don't know if you are serious enough to use your Spoon to scoop out
> from the release Squeak 3.9 the KernelImage pioneered by Pavel and
> post the system and instructions for reproducing it...

     Yes, I'm completely serious; but, unlike what I'm making, I don't
think Pavel's image is really a kernel (it's not minimal). I think it's
great if his work shows a way to delineate particular subsystems, though.

     In general, I think "stripping" is a losing strategy. There's only
one strip that matters for making a basis artifact, and that's the one
that gets to an absolutely minimal core. I hope no one has to do it
again after I'm done. From then on, the system should be composed of
modules which can just be told to unload. The modules should worry about
handling the ramifications of their dependencies (asking for human
intervention only when absolutely necessary). It should be possible to
compose any desired system by loading modules into the minimal core.

     As for the 3.9 image, that's just one of several sources of
behavior that I plan to imprint onto the Spoon object memory. I plan to
release Naiad for each one, so that people can imprint from them.


-C

p.s.

     I'm on the verge of another milestone: I have successfully removed
all references to SystemDictionary and its sole instance from the
minimal object memory, and my remote browsing tools work without
referring to them as well. I'm about to remove them.

--
Craig Latta
http://netjam.org/resume



Reply | Threaded
Open this post in threaded view
|

CompiledMethod/4.0 [was: About 512 MB changes patch]

Klaus D. Witzel
In reply to this post by timrowledge
Stef & maintainers,

I think that the below must be considered for inclusion into 4.0.

/Klaus

On Tue, 03 Oct 2006 21:22:38 +0200, tim Rowledge wrote:

> On 3-Oct-06, at 3:02 AM, Tony Garnock-Jones wrote:
>> Andreas Raab wrote:
>>> Well, in that case all I can say is: "Code speaks" ;-) If you still  
>>> have
>>> that code from '98 and can update it to work with method properties I'd
>>> like to see it and I'd like us to have the discussion about which
>>> approach people like more.
>>
>> I'd very much like to see the code from 98 as it stands, without any
>> changes, to get some feel for the scale of the change as proposed.
>
> See
>
> http://www.rowledge.org/tim/squeak/SqFiles/packages/NewCompiledMethod- 
> Archive.zip
>
> for the original released files. The new CM class is very simple and it  
> is the cloner changes that were the really tricky part - the earlier  
> cloner was very limited and need quite a bit of sneaky work to make it  
> possible to do the needed transmutations.
>
> Note that this bunch of files don't have anything much by way of clever  
> tricks for handling source; I can't find anything on my system from the  
> experiements I did at Interval.
> Also note that the chances of being able to filein this code to any  
> recent image is essentially zero. Don't waste your time!
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Useful Latin Phrases:- Gramen artificiosum odi = I hate Astroturf.
>
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: CompiledMethod/4.0 [was: About 512 MB changes patch]

Andreas.Raab
Klaus D. Witzel wrote:
> I think that the below must be considered for inclusion into 4.0.

I think first we need a working implementation again, then we need to do
some measures about speed and space and then we can start thinking about
adoption. It's a long way to adopt such fundamental changes.

Cheers,
   - Andreas


>
> /Klaus
>
> On Tue, 03 Oct 2006 21:22:38 +0200, tim Rowledge wrote:
>> On 3-Oct-06, at 3:02 AM, Tony Garnock-Jones wrote:
>>> Andreas Raab wrote:
>>>> Well, in that case all I can say is: "Code speaks" ;-) If you still
>>>> have
>>>> that code from '98 and can update it to work with method properties I'd
>>>> like to see it and I'd like us to have the discussion about which
>>>> approach people like more.
>>>
>>> I'd very much like to see the code from 98 as it stands, without any
>>> changes, to get some feel for the scale of the change as proposed.
>>
>> See
>>
>> http://www.rowledge.org/tim/squeak/SqFiles/packages/NewCompiledMethod-Archive.zip 
>>
>>
>> for the original released files. The new CM class is very simple and
>> it is the cloner changes that were the really tricky part - the
>> earlier cloner was very limited and need quite a bit of sneaky work to
>> make it possible to do the needed transmutations.
>>
>> Note that this bunch of files don't have anything much by way of
>> clever tricks for handling source; I can't find anything on my system
>> from the experiements I did at Interval.
>> Also note that the chances of being able to filein this code to any
>> recent image is essentially zero. Don't waste your time!
>>
>> tim
>> --
>> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
>> Useful Latin Phrases:- Gramen artificiosum odi = I hate Astroturf.
>>
>>
>>
>>
>
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: CompiledMethod/4.0 [was: About 512 MB changes patch]

stephane ducasse-2
+ 1 :)
so I'm waiting for benchs
(and I'm really looking for a way to find time :( for real fun stuff  
like that )
>> I think that the below must be considered for inclusion into 4.0.
>
> I think first we need a working implementation again, then we need  
> to do some measures about speed and space and then we can start  
> thinking about adoption. It's a long way to adopt such fundamental  
> changes.
>
> Cheers,
>   - Andreas


Reply | Threaded
Open this post in threaded view
|

YARAD (Re: About 512 MB changes patch)

SmallSqueak
In reply to this post by Andreas.Raab
----- Original Message -----
From: "Andreas Raab" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Monday, October 02, 2006 11:18 PM
Subject: Re: About 512 MB changes patch


> Hi Tim -
>
> >> As much as I agree with the idea of reworking CompiledMethod in
> >> general, it seems to me we shouldn't mix up two otherwise unrelated
> >> issues.
> > [snip]
> > Yes, that is plausible and reasonable; except that I *do* think it is
> > way past time to do the CM rework and since to makes it trivial to also
> > clean up the source code representation I consider it a nice synergy.
>
> And it is. However, I question whether to put the two into the same bag.
> I think we can agree that whatever a new compiled method format will be
> like, it'll have a variable representing the source code reference. If
> we know that, then we can discuss what the source reference should
> represent. And that's really all that this discussion should be about.
>
> Having said that, I don't claim that Klaus' proposal is the one that
> necessarily should be adopted - I like it because it's the simplest
> thing I could imagine for starters and it's not so alien that all of the
> client code needs to be changed. That said, there *is* room for
> discussing the alternatives, and if you're unhappy with Klaus' proposal,
> by all means, propose some alternative. All I'm asking for is that we
> don't mix it with the CompiledMethod discussion.
>
> > As I said, Klaus is to be congratulated for coming up with a concrete
> > proposal. I don't think it cleans up anywhere near enough of the mess,
> > but that could be worked on. For example, it appears to me to leave far
> > too much in the way of assumptions about the source pointer being an
> > encrypted integer for real comfort. I made a technically simple but
> > organisationally more complex proposal. It is what it is. If people
> > don't like it, they don't like it.
>
> Well, in that case all I can say is: "Code speaks" ;-) If you still have
> that code from '98 and can update it to work with method properties I'd
> like to see it and I'd like us to have the discussion about which
> approach people like more.
>
> > Perhaps it is not yet time to change the image format and break backward
> > compatability; then again, the 64bit images are not backward compatible,
> > the proposed 3.9 release requires a condensed changes and new sources
> > file (perhaps not if we adopt a source pointer cleanup?) and frankly the
> > place is in a mess that needs cleaning. I'm fairly amazed you haven't
> > been clamouring for such a cleanup for the OLPC work.
>
> We're steering a deliberately conservative course on OLPC. Right now our
> (effectively only) priority is to make sure that eToys work well and
> that we're on track for the first batch of machines.

    In other words, Yet Another Race Against Deadline ?

    What if the first batch of machines won't be ready until Squeak is
    really mature (on its 21st birthday), for that matter, what if there
were
    NO OLPC, what would you guys in the OLPC team do for Squeak ?

> Because of that,
> concerns regarding the representation of source pointers get little
> attention and unless there is some major, major speedup I would veto any


    BURP (Boy, You Are Powerful ;-)

> changes to CompiledMethod for OLPC simply on general principles. We have
> enough issues to deal with as things stand, there is no reason to create
> a bunch of new ones. That's not to say that we shouldn't do the work,
> but OLPC is simply not the place to debug the issues surrounding it.
>

    True!!!

    It's just the place to dump all the garbages hidden underneath eToys???


    Cheers,

    SmallSqueak


    P.S: BTW, does this OLPC eToys use Tweak?


12