Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3206.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3206 Author: eem Time: 8 July 2022, 2:27:26.170283 pm UUID: 0a5185d7-f6b0-46a3-a4ba-cbbf410bfdfd Ancestors: VMMaker.oscog-eem.3205
Add BitsAsWords for SmartSyntaxPlgins that want to coerce any bits object into unsigned int *'s.
Use symbols for types in the SmartSyntax type class hierarchy where the type strings atre typicalled used as symbols.
=============== Diff against VMMaker.oscog-eem.3205 ===============
Item was changed: ----- Method: Array class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'sqInt *', aSymbolOrString! - ^'sqInt *', aSymbolOrString!
Item was added: + Behavior subclass: #BitsAsWords + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'VMMaker-SmartSyntaxPlugins'! + + !BitsAsWords commentStamp: 'eem 7/8/2022 13:56' prior: 0! + Coercion specification for bits objects like ByteString, Bitmap, ByteArray, WordArray, LargePositiveInteger et al to unsigned int *!
Item was added: + ----- Method: BitsAsWords class>>ccg:prolog:expr:index: (in category 'plugin generation') ----- + ccg: cg prolog: aBlock expr: aString index: anInteger + + ^cg + ccgLoad: aBlock + expr: aString + asUnsignedPtrFrom: anInteger + andThen: (cg ccgValBlock: 'isWordsOrBytes')!
Item was added: + ----- Method: BitsAsWords class>>ccgCanConvertFrom: (in category 'plugin generation') ----- + ccgCanConvertFrom: anObject + + ^anObject class isBits!
Item was added: + ----- Method: BitsAsWords class>>ccgDeclareCForVar: (in category 'plugin generation') ----- + ccgDeclareCForVar: aSymbolOrString + + ^#'unsigned int *', aSymbolOrString!
Item was changed: ----- Method: ByteArray class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'char *', aSymbolOrString! - ^'char *', aSymbolOrString!
Item was changed: ----- Method: DoubleByteArray class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString "Address of an unsigned 16 bit value, regardless of Smalltalk wordSize"
+ ^#'unsigned short *', aSymbolOrString! - ^'unsigned short *', aSymbolOrString!
Item was changed: ----- Method: DoubleWordArray class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString "Address of an unsigned 64 bit value, regardless of Smalltalk wordSize"
+ ^#'unsigned long long *', aSymbolOrString! - ^'unsigned long long *', aSymbolOrString!
Item was changed: ----- Method: Float class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#double, ' ', aSymbolOrString! - ^'double ', aSymbolOrString!
Item was changed: ----- Method: Float32Array class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'float *', aSymbolOrString! - ^'float *', aSymbolOrString!
Item was changed: ----- Method: IntegerArray class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'int *', aSymbolOrString! - ^'int *', aSymbolOrString!
Item was changed: ----- Method: Object class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#sqInt, ' ', aSymbolOrString! - ^'sqInt ', aSymbolOrString!
Item was changed: ----- Method: Oop class>>ccgDeclareCForVar: (in category 'plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#sqInt, ' ', aSymbolOrString! - ^'sqInt ', aSymbolOrString!
Item was changed: ----- Method: SmartSyntaxPluginAssignmentCodeGenerator>>ccgLoad:expr:asOopPtrFrom:andThen: (in category 'coercing') ----- ccgLoad: aBlock expr: aString asOopPtrFrom: stackIndex andThen: valBlock + ^self assign: aString coerceTo: #'sqInt *' from: stackIndex! - ^self assign: aString coerceTo: 'sqInt *' from: stackIndex!
Item was changed: ----- Method: SmartSyntaxPluginAssignmentCodeGenerator>>ccgLoad:expr:asUnsignedLong64PtrFrom:andThen: (in category 'coercing') ----- ccgLoad: aBlock expr: aString asUnsignedLong64PtrFrom: stackIndex andThen: valBlock + ^self assign: aString coerceTo: #'unsigned long long *' from: stackIndex! - ^self assign: aString coerceTo: 'unsigned long long *' from: stackIndex!
Item was changed: ----- Method: SmartSyntaxPluginAssignmentCodeGenerator>>ccgLoad:expr:asUnsignedPtrFrom:andThen: (in category 'coercing') ----- ccgLoad: aBlock expr: aString asUnsignedPtrFrom: stackIndex andThen: valBlock + ^self assign: aString coerceTo: #'unsigned *' from: stackIndex! - ^self assign: aString coerceTo: 'unsigned *' from: stackIndex!
Item was changed: ----- Method: SmartSyntaxPluginAssignmentCodeGenerator>>ccgLoad:expr:asUnsignedShortPtrFrom:andThen: (in category 'coercing') ----- ccgLoad: aBlock expr: aString asUnsignedShortPtrFrom: stackIndex andThen: valBlock + ^self assign: aString coerceTo: #'unsigned short *' from: stackIndex! - ^self assign: aString coerceTo: 'unsigned short *' from: stackIndex!
Item was changed: ----- Method: String class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'char *', aSymbolOrString! - ^'char *', aSymbolOrString!
Item was changed: ----- Method: Unsigned class>>ccgDeclareCForVar: (in category 'plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^ #'usqIntptr_t', ' ', aSymbolOrString! - ^'usqIntptr_t ', aSymbolOrString!
Item was changed: ----- Method: WordArray class>>ccgDeclareCForVar: (in category '*VMMaker-plugin generation') ----- ccgDeclareCForVar: aSymbolOrString "Address of an unsigned 32 bit value, regardless of Smalltalk wordSize"
+ ^#'unsigned *', aSymbolOrString! - ^'unsigned *', aSymbolOrString!
Item was changed: Behavior subclass: #WordsOrBytes instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'VMMaker-SmartSyntaxPlugins'!
+ !WordsOrBytes commentStamp: 'eem 7/8/2022 13:55' prior: 0! + Coercion specification for bits objects like ByteString, Bitmap, ByteArray, WordArray, LargePositiveInteger et al to char *! - !WordsOrBytes commentStamp: '' prior: 0! - Coercion specification for bits objects like ByteString, Bitmap, ByteArray, WordArray, LargePositiveInteger et al!
Item was changed: ----- Method: WordsOrBytes class>>ccgDeclareCForVar: (in category 'plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'char *', aSymbolOrString! - ^'char *', aSymbolOrString!
Item was changed: ----- Method: WordsOrShorts class>>ccgDeclareCForVar: (in category 'plugin generation') ----- ccgDeclareCForVar: aSymbolOrString
+ ^#'short *', aSymbolOrString! - ^'short *', aSymbolOrString!
vm-dev@lists.squeakfoundation.org