[Vm-dev] VM Maker: VMMaker.oscog-eem.2027.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Dec 6 21:45:15 UTC 2016
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2027.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2027
Author: eem
Time: 6 December 2016, 1:44:30.689018 pm
UUID: e23772e4-15c7-4549-aab8-b4d28043c460
Ancestors: VMMaker.oscog-eem.2026
Add temp names to simStack printing during in-image compilation.
=============== Diff against VMMaker.oscog-eem.2026 ===============
Item was changed:
----- Method: Cogit class>>cog:selectorOrNumCopied:options: (in category 'in-image compilation') -----
cog: aCompiledMethod selectorOrNumCopied: selectorOrNumCopied options: optionsDictionaryOrArray
"StackToRegisterMappingCogit cog: (Integer >> #benchFib) selector: #benchFib options: #(COGMTVM false)"
| cogit coInterpreter |
cogit := self instanceForTests: optionsDictionaryOrArray.
+ (aCompiledMethod respondsTo: #tempNames) ifTrue:
+ [initializationOptions at: #tempNames put: aCompiledMethod tempNames].
coInterpreter := CurrentImageCoInterpreterFacade forCogit: cogit.
[cogit
setInterpreter: coInterpreter;
singleStep: true;
initializeCodeZoneFrom: 1024 upTo: coInterpreter memory size / 2. "leave space for rump C stack"
cogit methodZone freeStart: (cogit methodZone freeStart roundUpTo: 1024)]
on: Notification
do: [:ex|
(ex messageText beginsWith: 'cannot find receiver for') ifTrue:
[ex resume: coInterpreter].
ex pass].
^{ coInterpreter.
cogit.
selectorOrNumCopied isInteger
ifTrue: [ cogit cogFullBlockMethod: (coInterpreter oopForObject: aCompiledMethod) numCopied: selectorOrNumCopied ]
ifFalse: [ cogit cog: (coInterpreter oopForObject: aCompiledMethod) selector: (coInterpreter oopForObject: selectorOrNumCopied) ] }!
Item was changed:
----- Method: StackToRegisterMappingCogit>>printSimStack:toDepth:spillBase:on: (in category 'simulation only') -----
printSimStack: aSimStack toDepth: limit spillBase: spillBase on: aStream
<doNotGenerate>
+ | tempNamesOrNil width tabWidth |
aStream ensureCr.
limit < 0 ifTrue:
[^aStream nextPutAll: 'simStackEmpty'; cr; flush].
+ inBlock ~~ true ifTrue:
+ [(tempNamesOrNil := self class initializationOptions at: #tempNames ifAbsent: [#()]) isEmpty ifFalse:
+ [| tab longest |
+ longest := tempNamesOrNil inject: '' into: [:m :t| m size >= t size ifTrue: [m] ifFalse: [t]].
+ tabWidth := self widthInDefaultFontOf: (tab := String with: Character tab).
+ width := self widthInDefaultFontOf: longest, tab.
+ width <= ((self widthInDefaultFontOf: longest, (String with: Character space)) + 4) ifTrue:
+ [width := width + tabWidth]]].
0 to: limit do:
[:i|
+ tempNamesOrNil ifNotNil:
+ [self put: (tempNamesOrNil at: i + 1 ifAbsent: ['']) paddedTo: width tabWidth: tabWidth on: aStream].
aStream print: i.
i = spillBase
ifTrue: [aStream nextPutAll: ' sb'; tab]
ifFalse: [aStream tab; tab].
(aSimStack at: i) printStateOn: aStream.
aStream cr; flush]!
Item was added:
+ ----- Method: StackToRegisterMappingCogit>>put:paddedTo:tabWidth:on: (in category 'simulation only') -----
+ put: aString paddedTo: compositionWidth tabWidth: tabWidth on: aStream
+ <doNotGenerate>
+ | fittedString size width |
+ fittedString := aString.
+ size := fittedString size.
+ [(width := self widthInDefaultFontOf: fittedString) > compositionWidth] whileTrue:
+ [size := size - 2.
+ fittedString := aString contractTo: size].
+ aStream
+ nextPutAll: fittedString;
+ tab: compositionWidth - width + (width \\ tabWidth) // tabWidth!
Item was added:
+ ----- Method: StackToRegisterMappingCogit>>widthInDefaultFontOf: (in category 'simulation only') -----
+ widthInDefaultFontOf: aString
+ <doNotGenerate>
+ ^(NewParagraph new
+ compose: aString asText
+ style: TextStyle default
+ from: 1
+ in: Display boundingBox;
+ adjustRightX)
+ extent x!
More information about the Vm-dev
mailing list