[Vm-dev] VM Maker: VMMaker.oscog-eem.1400.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Jun 29 21:57:28 UTC 2015


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

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

Name: VMMaker.oscog-eem.1400
Author: eem
Time: 29 June 2015, 2:53:44.273 pm
UUID: 5e8b83f1-809e-46d3-8ab1-38d50fdf3ff4
Ancestors: VMMaker.oscog-cb.1399

Fix block mehtod header printing and scavenge
threshold access in in-image compilation/disassembly.

=============== Diff against VMMaker.oscog-cb.1399 ===============

Item was changed:
  ----- Method: Cogit>>printMethodHeader:on: (in category 'disassembly') -----
  printMethodHeader: cogMethod on: aStream
  	<doNotGenerate>
  	self cCode: ''
  		inSmalltalk:
  			[cogMethod isInteger ifTrue:
  				[^self printMethodHeader: (self cogMethodOrBlockSurrogateAt: cogMethod) on: aStream]].
  	aStream ensureCr.
  	cogMethod asInteger printOn: aStream base: 16.
  	cogMethod cmType = CMMethod ifTrue:
  		[aStream crtab; nextPutAll: 'objhdr: '.
  		cogMethod objectHeader printOn: aStream base: 16].
  	cogMethod cmType = CMBlock ifTrue:
+ 		[aStream crtab; nextPutAll: 'homemth: '.
- 		[aStream nextPutAll: 'homemth: '.
  		cogMethod cmHomeMethod asUnsignedInteger printOn: aStream base: 16.
  		aStream crtab; nextPutAll: 'startpc: '; print: cogMethod startpc].
  	aStream
  		crtab; nextPutAll: 'nArgs: ';	print: cogMethod cmNumArgs;
  		tab;    nextPutAll: 'type: ';	print: cogMethod cmType.
  	(cogMethod cmType ~= 0 and: [cogMethod cmType ~= CMBlock]) ifTrue:
  		[aStream crtab; nextPutAll: 'blksiz: '.
  		cogMethod blockSize printOn: aStream base: 16.
  		cogMethod cmType = CMMethod ifTrue:
  			[aStream crtab; nextPutAll: 'method: '.
  			 cogMethod methodObject printOn: aStream base: 16.
  			 aStream crtab; nextPutAll: 'mthhdr: '.
  			 cogMethod methodHeader printOn: aStream base: 16].
  		aStream crtab; nextPutAll: 'selctr: '.
  		cogMethod selector printOn: aStream base: 16.
  		(coInterpreter lookupAddress: cogMethod selector) ifNotNil:
  			[:string| aStream nextPut: $=; nextPutAll: string].
  		cogMethod cmType = CMMethod ifTrue:
  			[aStream crtab; nextPutAll: 'blkentry: '.
  			 cogMethod blockEntryOffset printOn: aStream base: 16.
  			 cogMethod blockEntryOffset ~= 0 ifTrue:
  				[aStream nextPutAll: ' => '.
  				 cogMethod asInteger + cogMethod blockEntryOffset printOn: aStream base: 16]]].
  	cogMethod cmType = CMClosedPIC
  		ifTrue:
  			[aStream crtab; nextPutAll: 'cPICNumCases: '.
  			 cogMethod cPICNumCases printOn: aStream base: 16.]
  		ifFalse:
  			[aStream crtab; nextPutAll: 'stackCheckOffset: '.
  			 cogMethod stackCheckOffset printOn: aStream base: 16.
  			 cogMethod stackCheckOffset > 0 ifTrue:
  				[aStream nextPut: $/.
  				 cogMethod asInteger + cogMethod stackCheckOffset printOn: aStream base: 16].
  			cogMethod cmType = CMBlock
  				ifTrue:
  					[aStream
  						crtab;
  						nextPutAll: 'cbUsesInstVars ';
  						nextPutAll: (cogMethod cbUsesInstVars ifTrue: ['yes'] ifFalse: ['no'])]
  				ifFalse:
  					[aStream
  						crtab;
  						nextPutAll: 'cmRefersToYoung: ';
  						nextPutAll: (cogMethod cmRefersToYoung ifTrue: ['yes'] ifFalse: ['no'])].
  			cogMethod cmType = CMMethod ifTrue:
  				[([cogMethod nextMethodOrIRCs] on: MessageNotUnderstood do: [:ex| nil]) ifNotNil:
  					[:nmoircs| aStream crtab; nextPutAll: 'nextMethodOrIRCs: '.
  						nmoircs = 0 ifTrue: [aStream print: nmoircs] ifFalse: [coInterpreter printHex: nmoircs]].
  				 ([cogMethod counters] on: MessageNotUnderstood do: [:ex| nil]) ifNotNil:
  					[:cntrs| aStream crtab; nextPutAll: 'counters: '.
  						cntrs = 0 ifTrue: [aStream print: cntrs] ifFalse: [coInterpreter printHex: cntrs]]]].
  	aStream cr; flush!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacadeForSpurObjectRepresentation>>getScavengeThreshold (in category 'accessing') -----
  getScavengeThreshold
+ 	^variables
+ 		at: 'scavengeThreshold'
+ 		ifAbsentPut: [objectMemory getScavengeThreshold ifNil: [16r24680]]!
- 	^objectMemory getScavengeThreshold ifNil: [16r24680]!

Item was changed:
  ----- Method: Spur32BitCoMemoryManager>>initializeFreeSpaceForFacadeFrom:to: (in category 'simulation only') -----
  initializeFreeSpaceForFacadeFrom: base to: limit
  	"c.f. initializeFreeSpacePostLoad: freeListObj."
  	| freeListObj freeBytes |
  	newSpaceLimit := oldSpaceStart := freeStart := base.
+ 	endOfMemory := limit.
+ 	scavengeThreshold := limit * 3 // 4.
- 	endOfMemory := scavengeThreshold := limit.
  	segmentManager initSegmentForInImageCompilationFrom: base to: limit.
  	freeListObj := self allocateSlots: self numFreeLists
  						format: self wordIndexableFormat
  						classIndex: self wordSizeClassIndexPun.
  	freeLists := self firstIndexableField: freeListObj.
  	freeListsMask := 0.
  	0 to: self numFreeLists - 1 do:
  		[:i|
  		(freeLists at: i) ~= 0 ifTrue:
  			[freeListsMask := freeListsMask bitOr: (1 << i).
  			 freeLists at: i put: (segmentManager swizzleObj: (freeLists at: i))]].
  	freeBytes := segmentManager lastSegment segLimit - self bridgeSize - freeStart.
  	freeLists at: 0 put: (self initFreeChunkWithBytes: freeBytes at: freeStart).
  	totalFreeOldSpace := freeBytes!

Item was changed:
  ----- Method: Spur64BitCoMemoryManager>>initializeFreeSpaceForFacadeFrom:to: (in category 'simulation only') -----
  initializeFreeSpaceForFacadeFrom: base to: limit
  	"c.f. initializeFreeSpacePostLoad: freeListObj."
  	| freeListObj freeBytes |
  	newSpaceLimit := oldSpaceStart := freeStart := base.
+ 	endOfMemory := limit.
+ 	scavengeThreshold := limit * 3 // 4.
- 	endOfMemory := scavengeThreshold := limit.
  	segmentManager initSegmentForInImageCompilationFrom: base to: limit.
  	freeListObj := self allocateSlots: self numFreeLists
  						format: self wordIndexableFormat
  						classIndex: self wordSizeClassIndexPun.
  	freeLists := self firstIndexableField: freeListObj.
  	freeListsMask := 0.
  	0 to: self numFreeLists - 1 do:
  		[:i|
  		(freeLists at: i) ~= 0 ifTrue:
  			[freeListsMask := freeListsMask bitOr: (1 << i).
  			 freeLists at: i put: (segmentManager swizzleObj: (freeLists at: i))]].
  	freeBytes := segmentManager lastSegment segLimit - self bridgeSize - freeStart.
  	freeLists at: 0 put: (self initFreeChunkWithBytes: freeBytes at: freeStart).
  	totalFreeOldSpace := freeBytes!



More information about the Vm-dev mailing list