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! |
Free forum by Nabble | Edit this page |