Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2110.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2110 Author: eem Time: 24 January 2017, 2:25:56.230129 pm UUID: efa09ad2-54d9-4746-a2cb-39acc333d22b Ancestors: VMMaker.oscog-eem.2109, VMMaker.oscog-nice.2109
Merge VMMaker.oscog-nice.2109 & VMMaker.oscog-eem.2109
=============== Diff against VMMaker.oscog-eem.2109 ===============
Item was changed: ----- Method: ThreadedFFIPlugin>>ffiLoadCalloutModule: (in category 'symbol loading') ----- ffiLoadCalloutModule: module "Load the given module and return its handle" | moduleHandlePtr moduleHandle ffiModuleName moduleLength rcvr ptr | + <var: #ptr type:'sqInt *'> - <var: #ptr type:'int *'> (interpreterProxy isBytes: module) ifTrue:[ "plain module name" ffiModuleName := module. moduleLength := interpreterProxy byteSizeOf: ffiModuleName. moduleHandle := (interpreterProxy ioLoadModule: (interpreterProxy firstIndexableField: ffiModuleName) asInteger OfLength: moduleLength) asInteger. (interpreterProxy failed or: [moduleHandle = 0]) ifTrue: [^self ffiFail: FFIErrorModuleNotFound]. "failed" ^moduleHandle]. "Check if the external method is defined in an external library" rcvr := interpreterProxy stackValue: interpreterProxy methodArgumentCount. (interpreterProxy is: rcvr KindOfClass: interpreterProxy classExternalLibrary) ifFalse: [^self ffiFail: FFIErrorNoModule]. "external library" moduleHandlePtr := interpreterProxy fetchPointer: 0 ofObject: rcvr. moduleHandle := self ffiContentsOfHandle: moduleHandlePtr errCode: FFIErrorBadExternalLibrary. interpreterProxy failed ifTrue:[^0]. moduleHandle = 0 ifTrue:["need to reload module" ffiModuleName := interpreterProxy fetchPointer: 1 ofObject: rcvr. (interpreterProxy isBytes: ffiModuleName) ifFalse:[^self ffiFail: FFIErrorBadExternalLibrary]. moduleLength := interpreterProxy byteSizeOf: ffiModuleName. moduleHandle := (interpreterProxy ioLoadModule: (interpreterProxy firstIndexableField: ffiModuleName) asInteger OfLength: moduleLength) asInteger. (interpreterProxy failed or: [moduleHandle = 0]) ifTrue: [^self ffiFail: FFIErrorModuleNotFound]. "failed" "and store back" ptr := interpreterProxy firstIndexableField: moduleHandlePtr. ptr at: 0 put: moduleHandle]. ^moduleHandle!
vm-dev@lists.squeakfoundation.org