[squeak-dev] The Trunk: Monticello-cmm.560.mcz
Chris Muller
asqueaker at gmail.com
Thu Aug 15 21:10:02 UTC 2013
I hope I got it right. Someone please check me. The test passes. If
there are any other issues, I'm sure we can address it.
On Thu, Aug 15, 2013 at 4:07 PM, <commits at source.squeak.org> wrote:
> Chris Muller uploaded a new version of Monticello to project The Trunk:
> http://source.squeak.org/trunk/Monticello-cmm.560.mcz
>
> ==================== Summary ====================
>
> Name: Monticello-cmm.560
> Author: cmm
> Time: 15 August 2013, 4:06:17.456 pm
> UUID: 10b8124c-656a-43a2-8e7f-d5367bba04f1
> Ancestors: Monticello-cmm.559
>
> - The ancestry can be restored from the MCVersion's Info that's loaded in the image, it isn't necessary to restore it from an older file. This means not finding a version to recover ancestry is much less likely to happen.
> - If it does happen, the user is now given a chance to copy the file back to where it was loaded from and simply Proceed, rather than requiring them to close the debugger and "try again".
> - Stub the stepChildren too.
>
> =============== Diff against Monticello-cmm.559 ===============
>
> Item was added:
> + ----- Method: MCAncestry>>stubAncestryFor:using: (in category 'initialize-release') -----
> + stubAncestryFor: childInfo using: aMCRepository
> + "childInfo was retrieved from aMCRepository. Replace my ancestry with a Proxy that can retrieve the full tree from these two elements."
> + ancestors := ancestors collect:
> + [ : each | MCInfoProxy
> + info: each copyWithTrimmedAncestry
> + child: childInfo
> + repository: aMCRepository ].
> + stepChildren := stepChildren collect:
> + [ : each | MCInfoProxy
> + info: each copyWithTrimmedAncestry
> + child: childInfo
> + repository: aMCRepository ].!
>
> Item was removed:
> - ----- Method: MCAncestry>>stubAncestryUsing: (in category 'initialize-release') -----
> - stubAncestryUsing: aMCRepository
> - ancestors := ancestors collect:
> - [ : each | MCInfoProxy
> - info: each copyWithTrimmedAncestry
> - repository: aMCRepository ]!
>
> Item was changed:
> ProtoObject subclass: #MCInfoProxy
> + instanceVariableNames: 'info repository childInfo'
> - instanceVariableNames: 'info repository'
> classVariableNames: ''
> poolDictionaries: ''
> category: 'Monticello-Repositories'!
>
> !MCInfoProxy commentStamp: 'cmm 8/12/2013 21:51' prior: 0!
> A MCInfoProxy takes the place of a MCVersionInfo with a large tree of ancestors that consume memory in the image, but are almost never accessed. If they are, however, I will dynamically retrieve and become the Info from the original MC repository which includes the full ancestry tree.!
>
> Item was added:
> + ----- Method: MCInfoProxy class>>info:child:repository: (in category 'create') -----
> + info: aMCVersionInfo child: childInfo repository: aMCRepository
> + ^ self new
> +
> + setInfo: aMCVersionInfo
> + childInfo: childInfo
> + repository: aMCRepository!
>
> Item was changed:
> ----- Method: MCInfoProxy>>materializeInfo (in category 'private') -----
> materializeInfo
> + | persistentVersion |
> + [ (persistentVersion := repository versionWithInfo: childInfo) isNil ] whileTrue: [ Warning signal: 'Please copy ' , childInfo name , 'with id ' , childInfo id asString , ' back to ' , repository asString , ' and try again.' ].
> + persistentVersion info allAncestorsDo:
> + [ : each | each = info ifTrue: [ ^ each ] ].
> + nil error: 'Expected ' , info asString , ' to be an ancestor of ' , childInfo asString!
> - ^ (repository versionWithInfo: info)
> - ifNil:
> - [ (MCRepositoryGroup default versionWithInfo: info)
> - ifNil: [ nil error: 'Please copy ' , info name , 'with id ' , info id asString , ' to ' , repository asString , ' and try again.' ]
> - ifNotNil:
> - [ : foundVersion | repository storeVersion: foundVersion.
> - foundVersion info ] ]
> - ifNotNil:
> - [ : version | version info ]!
>
> Item was added:
> + ----- Method: MCInfoProxy>>setInfo:childInfo:repository: (in category 'initialize-release') -----
> + setInfo: aMCVersionInfo childInfo: childMCVersionInfo repository: aMCRepository
> + info := aMCVersionInfo.
> + childInfo := childMCVersionInfo.
> + repository := aMCRepository!
>
> Item was removed:
> - ----- Method: MCInfoProxy>>setInfo:repository: (in category 'initialize-release') -----
> - setInfo: aMCVersionInfo repository: aMCRepository
> - info := aMCVersionInfo.
> - repository := aMCRepository!
>
> Item was changed:
> ----- Method: MCWorkingCopy>>stubAncestry (in category 'operations') -----
> stubAncestry
> "Stub all but the most recent 10 of my ancestry tree to save memory with a proxy which can be transparently accessed later, if necessary."
> + self ancestors ifEmpty: [ ^ self ].
> repositoryGroup ifNotNil:
> [ | tenAgo count |
> count := 0.
> ancestry ancestorsDoWhileTrue:
> [ : each | tenAgo := each.
> (count := count + 1) < 10 ].
> + tenAgo
> + stubAncestryFor: self ancestors anyOne
> + using: repositoryGroup ]!
> - tenAgo stubAncestryUsing: repositoryGroup ]!
>
>
More information about the Squeak-dev
mailing list
|