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

commits at source.squeak.org commits at source.squeak.org
Tue Jan 10 21:05:50 UTC 2017


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

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

Name: Cog-eem.335
Author: eem
Time: 10 January 2017, 1:05:39.016065 pm
UUID: b001d418-6353-4851-8ea9-cb6184e13b54
Ancestors: Cog-nice.334

Extend Spur32BitPreen to allow resetting header values to their defaults, and to not raise an error if there is no changes file (for the Pharo bootstrap).

=============== Diff against Cog-nice.334 ===============

Item was changed:
  SimulatorHarness subclass: #Spur32BitPreen
+ 	instanceVariableNames: 'oldHeap newHeap map reverseMap oldInterpreter newInterpreter imageHeaderFlags savedWindowSize writeDefaultHeader'
- 	instanceVariableNames: 'oldHeap newHeap map reverseMap oldInterpreter newInterpreter imageHeaderFlags savedWindowSize'
  	classVariableNames: ''
  	poolDictionaries: 'VMObjectIndices'
  	category: 'Cog-Bootstrapping'!
  
  !Spur32BitPreen commentStamp: 'eem 8/15/2016 19:49' prior: 0!
  A Spur32BitPreen is a simple image rewriter for 32-bit Spru images that eliminates free space and hence shrinks the preened image.  Use via
  	Spur32BitPreen new preenImage: 'spur'
  which will produce spur-preen.image and spur-preen.changes from spur.image and spur.changes.
  
  Instance Variables
  	imageHeaderFlags:		<Integer>
  	map:					<Dictionary>
  	newHeap:				<Spur32BitMMLESimulator>
  	newInterpreter:			<StackInterpreterSimulatorLSB>
  	oldHeap:				<Spur32BitMMLESimulator>
  	oldInterpreter:			<StackInterpreterSimulatorLSB>
  	reverseMap:			<Dictionary>
  	savedWindowSize:		<Integer>
  
  imageHeaderFlags
  	- flags word in image header
  
  map
  	- map from oops in old image to oops in new image
  
  newHeap
  	- the preened heap
  
  newInterpreter
  	- the interpreter wrapping the preened heap
  
  oldHeap
  	- the heap to be preened
  
  oldInterpreter
  	- the interpreter wrapping the heap to be preened
  
  reverseMap
  	- map from oops in new image to oops in old image
  
  savedWindowSize
  	- screen size word in mage header
  !

Item was changed:
  ----- Method: Spur32BitPreen>>on: (in category 'public access') -----
  on: imageName
  	(oldInterpreter := StackInterpreterSimulator newWithOptions: #(ObjectMemory Spur32BitMemoryManager))
  		openOn: imageName extraMemory: 0.
  	oldHeap := oldInterpreter objectMemory.
  	imageHeaderFlags := oldInterpreter getImageHeaderFlags.
+ 	savedWindowSize ifNil: [savedWindowSize := oldInterpreter savedWindowSize].
- 	savedWindowSize := oldInterpreter savedWindowSize.
  	newInterpreter := StackInterpreterSimulator newWithOptions: #(ObjectMemory Spur32BitMemoryManager).
  	newHeap := newInterpreter objectMemory.
  	newHeap
  		allocateMemoryOfSize: oldHeap oldSpaceSize
  		newSpaceSize: 8 * 1024 * 1024
  		stackSize: 16 * 1024
  		codeSize: 0.
  	newHeap bootstrapping: true.
  	self initMaps!

Item was changed:
  ----- Method: Spur32BitPreen>>preenImageUsingFileDirectory: (in category 'public access') -----
  preenImageUsingFileDirectory: imageName
  	| dirName baseName dir |
  	dirName := FileDirectory dirPathFor: imageName.
  	baseName := (imageName endsWith: '.image')
  					ifTrue: [FileDirectory baseNameFor: imageName]
  					ifFalse: [FileDirectory localNameFor: imageName].
  	dir := dirName isEmpty ifTrue: [FileDirectory default] ifFalse: [FileDirectory default on: dirName].
  	self on: (dir fullNameFor: baseName, '.image').
  	[self preenImage]
  		on: Halt
  		do: [:ex|
  			"suppress halts from the usual suspects (development time halts)"
  			(#(fullGC compactImage) includes: ex signalerContext sender selector)
  				ifTrue: [ex resume]
  				ifFalse: [ex pass]].
  	self writeSnapshot: (dir fullNameFor: baseName, '-preen.image')
  		headerFlags: imageHeaderFlags
  		screenSize: savedWindowSize.
+ 	(dir fileExists: baseName, '.changes')
+ 		ifTrue:
+ 			[dir deleteFileNamed: baseName, '-preen.changes';
+ 				copyFileNamed: baseName, '.changes' toFileNamed: baseName, '-preen.changes']
+ 		ifFalse:
+ 			[Transcript cr; show: 'could not find ', baseName, '.changes']!
- 	dir deleteFileNamed: baseName, '-preen.changes';
- 		copyFileNamed: baseName, '.changes' toFileNamed: baseName, '-preen.changes'!

Item was added:
+ ----- Method: Spur32BitPreen>>savedWindowSize: (in category 'public access') -----
+ savedWindowSize: aPointOrInteger
+ 	savedWindowSize := aPointOrInteger isInteger
+ 							ifTrue: [aPointOrInteger]
+ 							ifFalse: [(aPointOrInteger x min: 65535) << 16 + (aPointOrInteger y min: 65535)]!

Item was added:
+ ----- Method: Spur32BitPreen>>writeDefaultHeader: (in category 'public access') -----
+ writeDefaultHeader: aBoolean
+ 	writeDefaultHeader := aBoolean!

Item was changed:
  ----- Method: Spur32BitPreen>>writeSnapshot:headerFlags:screenSize: (in category 'snapshot') -----
  writeSnapshot: imageFileName headerFlags: headerFlags screenSize: screenSizeInteger
  	newHeap
  		checkFreeSpace;
  		runLeakCheckerForFullGC.
+ 	writeDefaultHeader == true ifTrue:
+ 		[newInterpreter
+ 			desiredEdenBytes: 0;
+ 			desiredNumStackPages: 0;
+ 			setDesiredCogCodeSize: 0;
+ 			setMaxExtSemSizeTo: 0].
  	newInterpreter
  		setImageHeaderFlagsFrom: headerFlags;
  		setDisplayForm: nil;
  		setSavedWindowSize: savedWindowSize;
  		imageName: imageFileName;
  		writeImageFileIO.
  	Transcript cr; show: 'Done!!'!



More information about the Vm-dev mailing list