[Vm-dev] VM Maker: VMMaker.oscog-eem.1694.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Feb 23 17:32:41 UTC 2016
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1694.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1694
Author: eem
Time: 23 February 2016, 9:30:35.750871 am
UUID: e1381bbc-a5af-4a35-ac60-a739611c7e0e
Ancestors: VMMaker.oscog-eem.1693
Fix compilation of ThreadedFFIPlugin subclasses as internal plugins.
=============== Diff against VMMaker.oscog-eem.1693 ===============
Item was changed:
----- Method: ThreadedFFIPlugin class>>generateCodeStringForPrimitives (in category 'translation') -----
generateCodeStringForPrimitives
"Output a skeletal SqueakFFIPrims.c that includes the relevant FooFFIPlugin.c for
each subclass based on the identifyingPredefinedMacros the subclass defines."
^String streamContents:
[:s|
s nextPutAll: '/* Automatically generated by\ ' withCRs.
s nextPutAll: (CCodeGenerator monticelloDescriptionFor: self).
s cr; nextPutAll: ' */'.
s cr; cr; nextPut: $#.
(self allSubclasses sort: [:a :b| a name < b name]) do:
[:class |
class identifyingPredefinedMacros ifNotNil:
[:predefinedMacros|
s nextPutAll: 'if '.
class includingPredefinedMacros ifNotNil:
[:includingMacros|
includingMacros do:
[:predefinedMacro| s nextPutAll: 'defined('; nextPutAll: predefinedMacro; nextPutAll: ') && '].
s nextPut: $(].
class excludingPredefinedMacros ifNotNil:
[:excludingMacros|
excludingMacros do:
[:predefinedMacro| s nextPutAll: '!!defined('; nextPutAll: predefinedMacro; nextPutAll: ') && '].
s nextPut: $(].
predefinedMacros
do: [:predefinedMacro| s nextPutAll: 'defined('; nextPutAll: predefinedMacro; nextPut: $)]
separatedBy: [s nextPutAll: ' || '].
class excludingPredefinedMacros ifNotNil:
[s nextPut: $)].
class includingPredefinedMacros ifNotNil:
[s nextPut: $)].
+ s cr; cr; nextPutAll: '# define '; nextPutAll: class moduleName; nextPutAll: '_exports ';
+ nextPutAll: self moduleName; nextPutAll: '_exports'.
+ s cr; nextPutAll: '# include "'; nextPutAll: class moduleName; nextPutAll: '.c"'.
- s cr; cr; nextPutAll: '# include "'; nextPutAll: class moduleName; nextPutAll: '.c"'.
s cr; cr; nextPutAll: '#el']].
s nextPutAll: 'se'.
#( 'As yet no FFI implementation appears to exist for your platform.'
'Consider implementing it, starting by adding a subclass of ThreadedFFIPlugin.') do:
+ [:msg| s cr; nextPutAll: '# error '; nextPutAll: msg].
- [:msg| s cr; nextPutAll: '# error '; nextPutAll: msg].
s cr; nextPutAll: '#endif'; cr]!
More information about the Vm-dev
mailing list