[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