Eliot Miranda uploaded a new version of Cog to project VM Maker: http://source.squeak.org/VMMaker/Cog-eem.83.mcz ==================== Summary ==================== Name: Cog-eem.83 Author: eem Time: 10 September 2013, 5:46:13.794 pm UUID: fa54c636-dc1b-4884-b8e7-73745b128318 Ancestors: Cog-eem.82 Add a sane scavenging-aware setGCParameters to the bootstrap. Hence add support for float literals in installable methods. Print ...done, when done transforming. =============== Diff against Cog-eem.82 =============== Item was added: + ----- Method: SpurBootstrap class>>SmalltalkImagePROTOTYPEsetGCParameters (in category 'method prototypes') ----- + SmalltalkImagePROTOTYPEsetGCParameters + "Adjust the VM's default GC parameters to avoid too much tenuring. + Maybe this should be left to the VM?" + + | proportion edenSize survivorSize averageObjectSize numObjects | + proportion := 0.9. "tenure when 90% of pastSpace is full" + edenSize := SmalltalkImage current vmParameterAt: 44. + survivorSize := edenSize / 5.0. "David's paper uses 140Kb eden + 2 x 28kb survivor spaces; Spur does the same :-)" + averageObjectSize := 8 * self wordSize. "a good approximation" + numObjects := (proportion * survivorSize / averageObjectSize) rounded. + SmalltalkImage current vmParameterAt: 6 put: numObjects "tenure when more than this many objects survive the GC"! Item was added: + ----- Method: SpurBootstrap class>>SystemDictionaryPROTOTYPEsetGCParameters (in category 'method prototypes') ----- + SystemDictionaryPROTOTYPEsetGCParameters + "Adjust the VM's default GC parameters to avoid too much tenuring. + Maybe this should be left to the VM?" + + | proportion edenSize survivorSize averageObjectSize numObjects | + proportion := 0.9. "tenure when 90% of pastSpace is full" + edenSize := SmalltalkImage current vmParameterAt: 44. + survivorSize := edenSize / 5.0. "David's paper uses 140Kb eden + 2 x 28kb survivor spaces; Spur does the same :-)" + averageObjectSize := 8 * self wordSize. "a good approximation" + numObjects := (proportion * survivorSize / averageObjectSize) rounded. + SmalltalkImage current vmParameterAt: 6 put: numObjects "tenure when more than this many objects survive the GC"! Item was changed: ----- Method: SpurBootstrap>>bootstrapImage (in category 'bootstrap image') ----- bootstrapImage + Transcript cr; nextPutAll: 'transforming image...'; flush. - Transcript cr; nextPutAll: 'transforming image'; flush. self cloneNilTrueAndFalse. self buildClassMap. self allocateClassTable. self cloneObjects. self fillInObjects. + self fillInClassTable. + Transcript nextPutAll: 'done.'; flush.! - self fillInClassTable! Item was changed: ----- Method: SpurBootstrap>>findLiteral: (in category 'bootstrap methods') ----- findLiteral: aLiteral | symbolOop smalltalk array | aLiteral isString ifTrue: [^self stringFor: aLiteral]. + aLiteral isFloat ifTrue: + [^oldInterpreter floatObjectOf: aLiteral]. self assert: aLiteral isVariableBinding. symbolOop := self findSymbol: aLiteral key. smalltalk := oldHeap splObj: 8. array := oldHeap fetchPointer: 1 ofObject: smalltalk. self assert: (oldHeap isArray: array). 0 to: (oldHeap fetchWordLengthOf: array) - 1 do: [:i| | bindingOrNil | bindingOrNil := oldHeap fetchPointer: i ofObject: array. (bindingOrNil ~= oldHeap nilObject and: [symbolOop = (oldHeap fetchPointer: KeyIndex ofObject: bindingOrNil) and: [aLiteral key == #Smalltalk ifTrue: [(oldHeap fetchPointer: ValueIndex ofObject: bindingOrNil) = smalltalk] ifFalse: [oldInterpreter classNameOf: (oldHeap fetchPointer: ValueIndex ofObject: bindingOrNil) Is: aLiteral key]]]) ifTrue: [^bindingOrNil]]. self error: 'couldn''t find literal ', aLiteral printString! |
Free forum by Nabble | Edit this page |