[Vm-dev] VM Maker: VMMaker.oscog-eem.2583.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Nov 16 00:58:14 UTC 2019
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2583.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2583
Author: eem
Time: 15 November 2019, 4:57:55.824146 pm
UUID: 729111df-a2cf-4c96-8f49-e4869c9d333d
Ancestors: VMMaker.oscog-eem.2582
ImageChecker: ImageChecker must not specify excluding unmarked objects, since objects are unmarked on load. Have its main routine respond to a -version argument.
Slang: Call an Open Smalltalk VM an Open Smalltalk VM.
=============== Diff against VMMaker.oscog-eem.2582 ===============
Item was changed:
----- Method: CCodeGenerator>>interpreterVersion (in category 'accessing') -----
interpreterVersion
+ ^self vmClass interpreterVersion, '[', self vmClass objectMemoryClass memoryManagerVersionName, ']'!
- ^self vmClass interpreterVersion, '[', self vmClass objectMemoryClass memoryManagerVersion, ']'!
Item was changed:
+ ----- Method: ImageLeakChecker>>ioExitWithErrorCode: (in category 'implementation') -----
- ----- Method: ImageLeakChecker>>ioExitWithErrorCode: (in category 'api') -----
ioExitWithErrorCode: ec
<inline: true>
self exit: ec!
Item was changed:
----- Method: ImageLeakChecker>>main:_: (in category 'api') -----
main: argc _: argv
<var: 'argc' type: #int>
<var: 'argv' declareC: 'char *argv[]'>
<returnTypeC: #int>
<api>
+ | forVersion argi ifh ok |
- | argi ifh ok |
<var: 'ifh' type: #'FILE *'>
argi := 1.
+ forVersion := false.
+ [argi < argc
+ and: [((argv at: argi) at: 0) = $-]] whileTrue:
+ [(self strcmp: (self asCommandLineArgument: 'version') _: (argv at: argi)) = 0 ifTrue:
+ ['%s\n' printf: (self cCode: 'interpreterVersion' inSmalltalk: ['don''t ask silly questions']).
+ forVersion := true].
+ (self strcmp: (self asCommandLineArgument: 'verbose') _: (argv at: argi)) = 0 ifTrue:
+ [verbose := true].
- (argc >= 2
- and: [(self strcmp: (self asCommandLineArgument: 'verbose') _: (argv at: argi)) = 0]) ifTrue:
- [verbose := true.
argi := argi + 1].
+ (argc = argi and: [forVersion]) ifTrue:
+ [^0].
(argc ~= (argi + 1)
or: [(ifh := self sqImageFileOpen: (argv at: argi) _: 'rb') = 0]) ifTrue:
+ ['Usage: %s [%s] [%s] imageFileName\n' printf: {(argv at: 0). self asCommandLineArgument: 'verbose'. self asCommandLineArgument: 'version'}.
+ ^self cCode: [1] inSmalltalk: [false]].
- ['Usage: %s [%s] imageFileName\n' printf: {(argv at: 0). self asCommandLineArgument: 'verbose'}.
- ^self cCode: [1] inSmalltalk: [false]].
self readImageFromFile: ifh HeapSize: 0 StartingAt: 0.
self sqImageFileClose: ifh.
ok := objectMemory runLeakCheckerForResult: GCModeFull.
(verbose and: [ok]) ifTrue:
['Image %s is free of leaks\n' printf: {(argv at: argi)}].
^self cCode: [ok ifTrue: [0] ifFalse: [2]] inSmalltalk: [ok]!
Item was changed:
+ ----- Method: ImageLeakChecker>>plugInNotifyUser: (in category 'implementation') -----
- ----- Method: ImageLeakChecker>>plugInNotifyUser: (in category 'api') -----
plugInNotifyUser: msg
"This is used in macros in sq.h, sigh..."
<api>
<returnTypeC: #int>
<var: 'msg' type: #'char *'>
self error: msg!
Item was changed:
----- Method: ImageLeakChecker>>runLeakCheckerForResult: (in category 'implementation') -----
runLeakCheckerForResult: gcModes
objectMemory clearLeakMapAndMapAccessibleObjects.
+ ^objectMemory checkHeapIntegrity: false classIndicesShouldBeValid: true!
- ^objectMemory checkHeapIntegrity: true classIndicesShouldBeValid: true!
Item was added:
+ ----- Method: Interpreter class>>objectMemoryClass (in category 'accessing class hierarchy') -----
+ objectMemoryClass
+ ^ObjectMemory!
Item was added:
+ ----- Method: ObjectMemory class>>memoryManagerName (in category 'accessing') -----
+ memoryManagerName
+ ^ 'SqueakV3'!
Item was removed:
- ----- Method: ObjectMemory class>>memoryManagerVersion (in category 'accessing') -----
- memoryManagerVersion
- ^ 'SqueakV3'!
Item was added:
+ ----- Method: SpurMemoryManager class>>memoryManagerName (in category 'accessing') -----
+ memoryManagerName
+ ^ 'Spur'!
Item was removed:
- ----- Method: SpurMemoryManager class>>memoryManagerVersion (in category 'accessing') -----
- memoryManagerVersion
- ^ 'Spur'!
Item was changed:
----- Method: VMClass class>>declareInterpreterVersionIn:defaultName: (in category 'translation') -----
declareInterpreterVersionIn: aCCodeGenerator defaultName: defaultName
+ | objMemName |
+ objMemName := aCCodeGenerator vmClass objectMemoryClass memoryManagerName.
NewspeakVM ifTrue:
["Newspeak as of mid 2011 derives SystemScope systemName from the interpreterVersion
(via system attribute 1004) by copying up to but not including the last space, provided the
string ends with a digit. So spaces must be eliminated from the Monitcello version string,
and we can't surround it with square brackets."
(aCCodeGenerator shortMonticelloDescriptionForClass: self) last isDigit ifFalse:
[self error: 'Newspeak expects interpreterVersion ends with a digit'].
aCCodeGenerator
var: #interpreterVersion
declareC: 'const char *interpreterVersion = "Newspeak Virtual Machine ',
+ ('[',objMemName,'] '),
((aCCodeGenerator shortMonticelloDescriptionForClass: self) copyReplaceAll: ' ' with: '_'),
'"'.
^self].
aCCodeGenerator
var: #interpreterVersion
+ declareC: 'const char *interpreterVersion = "Open Smalltalk ', defaultName, ' VM [',
+ objMemName, ' ',
+ (aCCodeGenerator shortMonticelloDescriptionForClass: self),']"'!
- declareC: 'const char *interpreterVersion = "Croquet Closure ', defaultName, ' VM [',
- (aCCodeGenerator shortMonticelloDescriptionForClass: self),']"'.!
Item was added:
+ ----- Method: VMClass class>>memoryManagerName (in category 'accessing') -----
+ memoryManagerName
+ ^ self subclassResponsibility!
Item was removed:
- ----- Method: VMClass class>>memoryManagerVersion (in category 'accessing') -----
- memoryManagerVersion
- ^ self subclassResponsibility!
More information about the Vm-dev
mailing list