Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1045.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1045 Author: eem Time: 5 February 2015, 2:48:26.718 pm UUID: afe6083b-7ae4-4670-9338-4db5a0538104 Ancestors: VMMaker.oscog-eem.1044
Make getModuleName simulate for the LargeIntegers plugin's primGetModuleName.
=============== Diff against VMMaker.oscog-eem.1044 ===============
Item was changed: ----- Method: CCodeGenerator>>declareModuleName: (in category 'public') ----- declareModuleName: nameString "add the declaration of a module name, version and local/external tag"
self var: #moduleName declareC:'const char *moduleName = #ifdef SQUEAK_BUILTIN_PLUGIN "', nameString,' (i)" #else "', nameString,' (e)" #endif + '. + "and for run-time use, answer the string" + ^nameString, ' (i)'! - '.!
Item was changed: ----- Method: InterpreterPlugin>>getModuleName (in category 'initialize') ----- getModuleName "Note: This is hardcoded so it can be run from Squeak. The module name is used for validating a module *after* it is loaded to check if it does really contain the module we're thinking it contains. This is important!!" <returnTypeC:'const char*'> <export: true> + ^self cCode: [moduleName] + inSmalltalk: + [self class codeGeneratorClass new pluginClass: self class]! - ^moduleName!
Item was added: + ----- Method: InterpreterPlugin>>st:rn:cpy: (in category 'simulation support') ----- + st: aString rn: bString cpy: n + <doNotGenerate> + ^interpreterProxy st: aString rn: bString cpy: n!
Item was added: + ----- Method: InterpreterPlugin>>strlen: (in category 'simulation support') ----- + strlen: aCString + <doNotGenerate> + ^interpreterProxy strlen: aCString!
Item was changed: ----- Method: LargeIntegersPlugin>>primGetModuleName (in category 'control & support primitives') ----- primGetModuleName "If calling this primitive fails, then C module does not exist." + | strLen strOop | - | strLen strOop strPtr | - <var: #strPtr type: 'char *'> self debugCode: [self msg: 'primGetModuleName']. self primitive: 'primGetModuleName' parameters: #() receiver: #Oop. strLen := self strlen: self getModuleName. strOop := interpreterProxy instantiateClass: interpreterProxy classString indexableSize: strLen. + self st: (interpreterProxy firstIndexableField: strOop) + rn: self getModuleName + cpy: strLen. - strPtr := interpreterProxy firstIndexableField: strOop. - 0 to: strLen - 1 do: [:i | strPtr at: i put: (self getModuleName at: i)]. ^strOop!
Item was changed: ----- Method: VMPluginCodeGenerator>>pluginClass: (in category 'public') ----- pluginClass: aPluginClass + "Set the plugin class and name when generating plugins. + And for run-time use, answer the name string." - "Set the plugin class and name when generating plugins." | packageId | pluginClass := aPluginClass. pluginName := pluginClass moduleName. packageId := self shortMonticelloDescriptionForClass: pluginClass. (packageId beginsWith: pluginClass name) ifTrue: [packageId := packageId allButFirst: pluginClass name size]. (packageId beginsWith: pluginName) ifTrue: [packageId := packageId allButFirst: pluginName size]. + ^self declareModuleName: pluginClass moduleNameAndVersion, packageId! - self declareModuleName: pluginClass moduleNameAndVersion, packageId!
vm-dev@lists.squeakfoundation.org