[Vm-dev] VM Maker: Cog-eem.169.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Jul 20 19:08:02 UTC 2014


Eliot Miranda uploaded a new version of Cog to project VM Maker:
http://source.squeak.org/VMMaker/Cog-eem.169.mcz

==================== Summary ====================

Name: Cog-eem.169
Author: eem
Time: 20 July 2014, 9:07:22.665 am
UUID: d81bd745-87e0-4649-bbc1-af7961f820fa
Ancestors: Cog-eem.168

Implement patchAndUploadNewer to provide an incremental
uploading of updated Spur packages.

Refactor ShootoutTests to allow reporting to stdout with
the comparison to the reference times.

=============== Diff against Cog-eem.168 ===============

Item was changed:
  ----- Method: ShootoutTests class>>runAllToDummyStreamVs: (in category 'benchmark scripts') -----
  runAllToDummyStreamVs: referenceTimes
  	"Transcript clear.
  	 self runAllToDummyStreamVs: self referenceTimesForClosureInterpreter"
  	"Transcript clear.
  	 self runAllToDummyStreamVs: self referenceTimesForSqueakVM"
+ 	^self runAllToDummyStreamVs: referenceTimes reportTo: Transcript!
- 	| times ratios geometricMean |
- 	times := Array new writeStream.
- 	ratios := Array new writeStream.
- 	(self standardSuiteTo: DummyStream basicNew) do:
- 		[:block | | benchmark reference t |
- 		benchmark := (self selectorForSimpleBlock: block) copyUpTo: $:.
- 		reference := referenceTimes at: benchmark asSymbol.
- 		Smalltalk garbageCollect.
- 		times nextPut: (t := Time millisecondsToRun: block).
- 		ratios nextPut: t asFloat / reference.
- 		self report: block decompile printString time: t reference: reference on: Transcript].
- 	geometricMean := (ratios contents inject: 1 into: [:m :n| m * n]) raisedTo: 1 / ratios position.
- 	Transcript
- 		nextPutAll: 'geometric mean '; print: (geometricMean roundTo: 0.001);
- 		nextPutAll: '   average speedup '; print: ((geometricMean - 1 * 100) roundTo: 0.01); nextPut: $%; cr; cr; flush.
- 	^times contents!

Item was added:
+ ----- Method: ShootoutTests class>>runAllToDummyStreamVs:reportTo: (in category 'benchmark scripts') -----
+ runAllToDummyStreamVs: referenceTimes reportTo: aStream
+ 	"Transcript clear.
+ 	 self runAllToDummyStreamVs: self referenceTimesForClosureInterpreter"
+ 	"Transcript clear.
+ 	 self runAllToDummyStreamVs: self referenceTimesForSqueakVM"
+ 	| times ratios geometricMean |
+ 	times := Array new writeStream.
+ 	ratios := Array new writeStream.
+ 	(self standardSuiteTo: DummyStream basicNew) do:
+ 		[:block | | benchmark reference t |
+ 		benchmark := (self selectorForSimpleBlock: block) copyUpTo: $:.
+ 		reference := referenceTimes at: benchmark asSymbol.
+ 		Smalltalk garbageCollect.
+ 		times nextPut: (t := Time millisecondsToRun: block).
+ 		ratios nextPut: t asFloat / reference.
+ 		self report: block decompile printString time: t reference: reference on: aStream].
+ 	geometricMean := (ratios contents inject: 1 into: [:m :n| m * n]) raisedTo: 1 / ratios position.
+ 	aStream
+ 		nextPutAll: 'geometric mean '; print: (geometricMean roundTo: 0.001);
+ 		nextPutAll: '   average speedup '; print: ((geometricMean - 1 * 100) roundTo: 0.01); nextPut: $%; cr; cr; flush.
+ 	^times contents!

Item was changed:
  ----- Method: ShootoutTests class>>stdout (in category 'platform') -----
  stdout
+    ^StandardFileStream stdout!
-    ^StandardFileStream stdOut!

Item was changed:
  Object subclass: #SpurBootstrapMonticelloPackagePatcher
+ 	instanceVariableNames: 'sourceDir destDir packagesAndPatches'
- 	instanceVariableNames: 'sourceDir destDir'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Cog-Bootstrapping'!
  
  !SpurBootstrapMonticelloPackagePatcher commentStamp: 'eem 1/15/2014 17:59' prior: 0!
  A SpurBootstrapMonticelloPackagePatcher is used to construct a new set of patched Monticello packages for Spur.  The use case is some bootstrap process loads a set of Monticello packages.  To repeat the bootstrap with a Spur image the bootstrap must use suitably patched Monticello packages containing the new method versions on the class side of SpurBootstrap.
  
  Instance Variables
  	destDir:			<FileDirectory>
  	sourceDir:		<FileDirectory>
  
  destDir
  	- directory to which patched packages are to be written
  
  sourceDir
  	- directory from which packages to be patched are to be read!

Item was changed:
  ----- Method: SpurBootstrapMonticelloPackagePatcher>>packagesAndPatches (in category 'private-accessing') -----
  packagesAndPatches
  	"SpurBootstrapMonticelloPackagePatcher new packagesAndPatches"
+ 	packagesAndPatches ifNotNil:
+ 		[^packagesAndPatches].
- 	| packagesAndPatches |
  	packagesAndPatches := Dictionary new.
  	SpurBootstrap new prototypeClassNameMetaSelectorMethodDo:
  		[:className :isMeta :selector :method| | class methodReference source |
  		 class := Smalltalk classNamed: className.
  		 isMeta ifTrue:
  			[class := class class].
  		 methodReference := (class includesSelector: selector) ifTrue:
  								[(class >> selector) methodReference].
  		 source := method getSourceFromFile asString allButFirst: method selector size - selector size.
  		 source first ~= selector first ifTrue:
  			[source replaceFrom: 1 to: selector size with: selector startingAt: 1].
  		 (packagesAndPatches
  				at: (methodReference
  						ifNotNil: [PackageOrganizer default packageOfMethod: methodReference]
  						ifNil: [PackageOrganizer default  packageOfClass: class])
  				ifAbsentPut: [OrderedCollection new])
  			add: (MCAddition of: (MCMethodDefinition
  									className: className
  									classIsMeta: isMeta
  									selector: selector
  									category: (methodReference
  												ifNotNil: [methodReference category]
  												ifNil: [Categorizer default])
  									timeStamp: method timeStamp
  									source: source))].
  	^packagesAndPatches!

Item was added:
+ ----- Method: SpurBootstrapMonticelloPackagePatcher>>patchAndUploadNewer (in category 'patching') -----
+ patchAndUploadNewer
+ 	"Look for unbranched versions on the default repository that are newer than the
+ 	 image''s versions. Download and patch them and upload the patched versions."
+ 	"(SpurBootstrapMonticelloPackagePatcher new
+ 		from: 'spurpackages'
+ 		to: 'trunkpackages')
+ 			patchAndUploadNewer"
+ 	| repo sourceRepo |
+ 	sourceDir deleteLocalFiles.
+ 	destDir deleteLocalFiles.
+ 	repo := self repositoryForUrl: MCMcmUpdater defaultUpdateURL.
+ 	sourceRepo := MCDirectoryRepository directory: sourceDir.
+ 	repo cacheAllFileNamesDuring:
+ 		[self packagesAndPatches keys do:
+ 			[:package| | workingCopy |
+ 			workingCopy := MCWorkingCopy allManagers detect: [:pkg| pkg packageName = package packageName].
+ 			(workingCopy possiblyNewerVersionsIn: repo) do:
+ 				[:newerVersion | 
+ 				(sourceRepo includesVersionNamed: newerVersion) ifFalse:
+ 					[sourceRepo storeVersion: (repo versionNamed: newerVersion)]]].
+ 		 self patchAsNeeded.
+ 		 self uploadFrom: (MCDirectoryRepository directory: destDir) to: self trunk]!

Item was added:
+ ----- Method: SpurBootstrapMonticelloPackagePatcher>>repositoryForUrl: (in category 'repository population') -----
+ repositoryForUrl: url
+ 	^MCRepositoryGroup default repositories 
+ 		detect: [:r| r description = url]
+ 		ifNone: [MCHttpRepository
+ 					location: url
+ 					user: 'squeak'
+ 					password: 'squeak']!

Item was changed:
  ----- Method: SpurBootstrapMonticelloPackagePatcher>>trunk (in category 'repository population') -----
  trunk
+ 	^self repositoryForUrl: 'http://source.squeak.org/trunk'!
- 	| url |
- 	url := 'http://source.squeak.org/trunk'.
- 	^MCRepositoryGroup default repositories 
- 		detect: [:r| r description = url]
- 		ifNone: [MCHttpRepository
- 					location: url
- 					user: 'squeak'
- 					password: 'squeak']!



More information about the Vm-dev mailing list