[Vm-dev] VM Maker: VMMaker.oscog-eem.542.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Dec 6 22:16:14 UTC 2013
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.542.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.542
Author: eem
Time: 6 December 2013, 2:13:39.319 pm
UUID: e3b3cd61-d781-4934-bc89-dcf72256eb95
Ancestors: VMMaker.oscog-eem.541
Mo' betta automation for generating VMs.
=============== Diff against VMMaker.oscog-eem.541 ===============
Item was added:
+ ----- Method: VMMaker class>>configuirationNameFromSelector: (in category 'confs-support') -----
+ configuirationNameFromSelector: aSelector
+ ^(aSelector piecesCutWhere: [:a :b| a isLowercase and: [b isUppercase]]) allButFirst fold: [:a :b| a, ' ', b]!
Item was changed:
----- Method: VMMaker class>>generateConfiguration (in category 'configurations') -----
generateConfiguration
"VMMaker generateConfiguration"
| configCategoryName selectors |
configCategoryName := self class whichCategoryIncludesSelector: thisContext selector.
selectors := Set new.
self class organization categories do:
[:cat|
(cat endsWith: configCategoryName) ifTrue:
[selectors addAll: (self class organization listAtCategoryNamed: cat)]].
selectors remove: thisContext selector.
selectors := selectors asArray sort.
(UIManager default
+ chooseFrom: (selectors collect: [:sel| self configuirationNameFromSelector: sel])
- chooseFrom: (selectors collect:
- [:sel| (sel piecesCutWhere: [:a :b| a isLowercase and: [b isUppercase]]) allButFirst
- fold: [:a :b| a, ' ', b]])
values: selectors) ifNotNil:
[:choice|
self perform: choice]!
Item was added:
+ ----- Method: VMMaker>>configurationNameIfAny (in category 'generate sources') -----
+ configurationNameIfAny
+ ^(thisContext findContextSuchThat: [:ctxt| ctxt receiver == VMMaker and: [ctxt method methodReference category = #configurations]])
+ ifNotNil: [:ctxt| (self class configuirationNameFromSelector: ctxt selector), ' ']
+ ifNil: [' ']!
Item was changed:
----- Method: VMMaker>>needsToRegenerateCogitFile (in category 'generate sources') -----
needsToRegenerateCogitFile
"Check the timestamp for the relevant classes and then the timestamp for the main source file (e.g. interp.c)
file if it already exists. Answer if the file needs regenerating."
| cogitClass cogitClasses tStamp |
cogitClasses := (cogitClass := self cogitClass) withAllSuperclasses copyUpThrough: Cogit.
cogitClasses addAllLast: (cogitClass ancilliaryClasses: self options).
tStamp := cogitClasses inject: 0 into: [:tS :cl| tS max: cl timeStamp].
"don't translate if the file is newer than my timeStamp"
(self coreVMDirectory entryAt: cogitClass sourceFileName ifAbsent: [nil]) ifNotNil:
[:fstat|
tStamp < fstat modificationTime ifTrue:
+ [^self confirm: 'The ', self configurationNameIfAny, cogitClass printString, ' classes have not been modified since\ the source file was last generated.\Do you still want to regenerate it?' withCRs]].
- [^self confirm: 'The ', cogitClass printString, ' classes have not been modified since\ the source file was last generated.\Do you still want to regenerate it?' withCRs]].
^true
!
Item was changed:
----- Method: VMMaker>>needsToRegenerateInterpreterFile (in category 'initialize') -----
needsToRegenerateInterpreterFile
"Check the timestamp for the relevant classes and then the timestamp for the main
source file (e.g. interp.c) if it already exists. Answer if the file needs regenerating."
| classes tStamp |
classes := self interpreterClass withAllSuperclasses copyUpTo: VMClass.
self interpreterClass objectMemoryClass ifNotNil:
[:objectMemoryClass|
classes addAllLast: (objectMemoryClass withAllSuperclasses copyUpTo: VMClass)].
classes copy do:
[:class| classes addAllLast: (class ancilliaryClasses: self options)].
tStamp := classes inject: 0 into: [:tS :cl| tS max: cl timeStamp].
"don't translate if the file is newer than my timeStamp"
(self coreVMDirectory entryAt: self interpreterFilename ifAbsent: [nil]) ifNotNil:
[:fstat|
tStamp < fstat modificationTime ifTrue:
+ [^self confirm: 'The ', self configurationNameIfAny, 'interpreter classes have not been modified since\ the interpreter file was last generated.\Do you still want to regenerate their source file?' withCRs]].
- [^self confirm: 'The interpreter classes have not been modified since\ the interpreter file was last generated.\Do you still want to regenerate their source file?' withCRs]].
^true
!
More information about the Vm-dev
mailing list