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!
vm-dev@lists.squeakfoundation.org