[Vm-dev] VM Maker: VMMaker-bf.351.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Oct 1 08:24:26 UTC 2014
Bert Freudenberg uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-bf.351.mcz
==================== Summary ====================
Name: VMMaker-bf.351
Author: bf
Time: 1 October 2014, 10:20:50.38 am
UUID: af5fd014-b9f4-4d17-80fa-2abd7b2b263b
Ancestors: VMMaker-dtl.350
Do not hard-code ".c" module file extension.
=============== Diff against VMMaker-dtl.350 ===============
Item was changed:
----- Method: ADPCMCodecPlugin class>>translateInDirectory:doInlining: (in category 'translation') -----
translateInDirectory: directory doInlining: inlineFlag
"handle a special case code string rather than generated code"
"Not currently hooked into the timeStamp mechanism for VMMaker since this would mean replicating code from InterpreterPlugin; waiting for a more elegant solution to appear. In the meantime this means that this plugin will always get regenerated even if the file is uptodate"
| cg aClass |
self initialize.
cg := self buildCodeGenerator.
aClass := Smalltalk at: #ADPCMCodec ifAbsent:[nil].
aClass ifNil:[
Transcript cr; show: 'ADPCMCodec not present in image. Skipping plugin.'.
^self].
cg addMethodsForPrimitives: aClass translatedPrimitives.
inlineFlag ifTrue:[
"now remove a few which will be inlined but not pruned"
cg pruneMethods: #(indexForDeltaFrom:to: nextBits: nextBits:put:)].
+ self storeString: cg generateCodeStringForPrimitives onFileNamed: (directory fullNameFor: self moduleFileName).
- self storeString: cg generateCodeStringForPrimitives onFileNamed: (directory fullNameFor: self moduleName, '.c').
^cg exportedPrimitiveNames asArray
!
Item was added:
+ ----- Method: InterpreterPlugin class>>moduleFileName (in category 'accessing') -----
+ moduleFileName
+ "Answer the file name to generate our source code in"
+
+ ^ self moduleName, self moduleExtension!
Item was changed:
----- Method: InterpreterPlugin class>>translateInDirectory:doInlining: (in category 'translation') -----
translateInDirectory: directory doInlining: inlineFlag
"This is the default method for writing out sources for a plugin. Several classes need special handling, so look at all implementors of this message"
| cg fname fstat |
+ fname := self moduleFileName.
- fname := self moduleName, '.c'.
"don't translate if the file is newer than my timeStamp"
fstat := directory entryAt: fname ifAbsent:[nil].
fstat ifNotNil:[self timeStamp < fstat modificationTime ifTrue:[^nil]].
self initialize.
cg := self buildCodeGenerator.
cg storeCodeOnFile: (directory fullNameFor: fname) doInlining: inlineFlag.
^cg exportedPrimitiveNames asArray!
Item was changed:
----- Method: MiscPrimitivePlugin class>>translateInDirectory:doInlining: (in category 'translation') -----
translateInDirectory: directory doInlining: inlineFlag
"handle a special case code string rather than normal generated code."
| cg fname fstat |
+ fname := self moduleFileName.
- fname := self moduleName, '.c'.
"don't translate if the file is newer than my timeStamp"
fstat := directory entryAt: fname ifAbsent:[nil].
fstat ifNotNil:[self timeStamp < fstat modificationTime ifTrue:[^nil]].
self initialize.
cg := self buildCodeGenerator.
cg addMethodsForPrimitives: self translatedPrimitives.
self storeString: cg generateCodeStringForPrimitives onFileNamed: (directory fullNameFor: fname).
^cg exportedPrimitiveNames asArray
!
Item was changed:
----- Method: SmartSyntaxInterpreterPlugin class>>translateDoInlining:locally:debug: (in category 'translation') -----
translateDoInlining: inlineFlag locally: localFlag debug: debugFlag
^ self
+ translate: self moduleFileName
- translate: self moduleName , '.c'
doInlining: inlineFlag
locally: localFlag
debug: debugFlag!
Item was changed:
----- Method: SoundGenerationPlugin class>>translateInDirectory:doInlining: (in category 'accessing') -----
translateInDirectory: directory doInlining: inlineFlag
"handle a special case code string rather than generated code.
NB sqOldSoundsPrims IS NOT FULLY INTEGRATED - it still isn't included in the exports list"
| cg aClass |
self initialize.
cg := self buildCodeGenerator.
aClass := Smalltalk at: #AbstractSound ifAbsent:[nil].
aClass ifNil:[
Transcript cr; show: 'AbstractSound not present in image. Skipping plugin.'.
^self].
cg addMethodsForPrimitives: aClass translatedPrimitives.
+ self storeString: cg generateCodeStringForPrimitives onFileNamed: (directory fullNameFor: self moduleFileName).
- self storeString: cg generateCodeStringForPrimitives onFileNamed: (directory fullNameFor: self moduleName, '.c').
"What we need here is some way to derive the prim names from sqOldSoundPrims - or dump it entirely. Perhaps add this class (without then generating the file again) using fake entry points like SurfacePlugin does"
^cg exportedPrimitiveNames asArray
!
More information about the Vm-dev
mailing list