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

commits at source.squeak.org commits at source.squeak.org
Tue Jun 24 17:23:41 UTC 2014


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

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

Name: VMMaker.oscog-eem.779
Author: eem
Time: 23 June 2014, 7:07:37.544 pm
UUID: 5ba1d239-a296-47c9-83ad-6d0e0bcabcb4
Ancestors: VMMaker.oscog-eem.778

Fix some sign issues with free space tallying to allow Spur to
shrink memory and answer via primitiveVMParameter heap
sizes above 2Gb.

Add longPrintInstancesOf:/longPrintInstancesWithClassIndex:
for debugging.

Fix in-image compilation given the checkAllocFiller putch.

=============== Diff against VMMaker.oscog-eem.778 ===============

Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>getCheckAllocFiller (in category 'cog jit support') -----
+ getCheckAllocFiller
+ 	^coInterpreter getCheckAllocFiller ifNil: [false]!

Item was added:
+ ----- Method: ObjectMemory>>longPrintInstancesOf: (in category 'debug printing') -----
+ longPrintInstancesOf: aClassOop
+ 	"Scan the heap printing the oops of any and all objects that are instances of aClassOop"
+ 	| oop |
+ 	<api>
+ 	oop := self firstAccessibleObject.
+ 	[oop = nil] whileFalse:
+ 		[(self fetchClassOfNonImm: oop) = aClassOop ifTrue:
+ 			[self longPrintOop: oop; cr].
+ 		 oop := self accessibleObjectAfter: oop]!

Item was changed:
  ----- Method: SpurGenerationScavenger>>newSpaceCapacity (in category 'accessing') -----
  newSpaceCapacity
+ 	<inline: false>
+ 	<returnTypeC: #usqInt>
  	^eden limit - (futureSpace start min: pastSpace start)!

Item was changed:
  ----- Method: SpurMemoryManager class>>declareCVarsIn: (in category 'translation') -----
  declareCVarsIn: aCCodeGenerator
  	self declareCAsOop: #(	memory freeStart scavengeThreshold newSpaceStart newSpaceLimit pastSpaceStart
  							lowSpaceThreshold freeOldSpaceStart oldSpaceStart endOfMemory firstFreeChunk lastFreeChunk)
  		in: aCCodeGenerator.
  	self declareCAsUSqLong: (self allInstVarNames select: [:ivn| ivn endsWith: 'Usecs'])
  		in: aCCodeGenerator.
  	aCCodeGenerator
  		var: #freeListsMask type: #usqInt;
  		var: #freeLists type: #'sqInt *';
  		var: #classTableBitmap type: #'unsigned char *';
  		var: #objStackInvalidBecause type: #'char *';
  		var: #highestObjects type: #SpurCircularBuffer;
  		var: #unscannedEphemerons type: #SpurContiguousObjStack;
  		var: #heapGrowthToSizeGCRatio type: #float;
+ 		var: #heapSizeAtPreviousGC type: #usqInt;
+ 		var: #totalFreeOldSpace type: #usqInt.
- 		var: #heapSizeAtPreviousGC type: #usqInt.
  	aCCodeGenerator
  		var: #remapBuffer
  		declareC: 'sqInt remapBuffer[RemapBufferSize + 1 /* ', (RemapBufferSize + 1) printString, ' */]'.
  	aCCodeGenerator
  		var: #extraRoots
  		declareC: 'sqInt *extraRoots[ExtraRootsSize + 1 /* ', (ExtraRootsSize + 1) printString, ' */]'!

Item was added:
+ ----- Method: SpurMemoryManager>>longPrintInstancesOf: (in category 'debug printing') -----
+ longPrintInstancesOf: aClassOop
+ 	"Scan the heap printing the oops of any and all objects that are instances of aClassOop"
+ 	<api>
+ 	| classIndex |
+ 	classIndex := self rawHashBitsOf: aClassOop.
+ 	classIndex ~= self isFreeObjectClassIndexPun ifTrue:
+ 		[self longPrintInstancesWithClassIndex: classIndex]!

Item was added:
+ ----- Method: SpurMemoryManager>>longPrintInstancesWithClassIndex: (in category 'debug printing') -----
+ longPrintInstancesWithClassIndex: classIndex
+ 	"Scan the heap printing any and all objects whose classIndex equals the argument."
+ 	<api>
+ 	<inline: false>
+ 	self allHeapEntitiesDo:
+ 		[:obj|
+ 		 (self classIndexOf: obj) = classIndex ifTrue:
+ 			[coInterpreter longPrintOop: obj; cr]]!

Item was changed:
  ----- Method: SpurSegmentManager>>shrinkObjectMemory: (in category 'growing/shrinking memory') -----
  shrinkObjectMemory: delta
+ 	<inline: false>
+ 	<var: #delta type: #usqInt>
  	| shrinkage emptySeg |
+ 	<var: #shrinkage type: #usqInt>
  	<var: #emptySeg type: #'SpurSegmentInfo *'>
  	shrinkage := delta.
  	[emptySeg := self findEmptySegNearestInSizeTo: shrinkage.
  	 emptySeg notNil] whileTrue:
+ 		[emptySeg segSize > shrinkage ifTrue:
+ 			[^self].
+ 		 shrinkage := shrinkage - emptySeg segSize.
- 		[shrinkage := shrinkage - emptySeg segSize.
  		 manager detachFreeObject: (manager objectStartingAt: emptySeg segStart).
  		 self removeSegment: emptySeg]!

Item was changed:
  ----- Method: SpurSegmentManager>>totalBytesInSegments (in category 'snapshot') -----
  totalBytesInSegments
  	| total |
+ 	<var: #total type: #usqInt>
  	total := 0.
  	0 to: numSegments - 1 do:
  		[:i|
  		total := total + (segments at: i) segSize].
  	^total!



More information about the Vm-dev mailing list