[Vm-dev] VM Maker: VMMaker.oscog-EstebanLorenzano.1673.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jan 28 17:59:14 UTC 2016


Esteban Lorenzano uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-EstebanLorenzano.1673.mcz

==================== Summary ====================

Name: VMMaker.oscog-EstebanLorenzano.1673
Author: EstebanLorenzano
Time: 28 January 2016, 6:57:24.889696 pm
UUID: 2770aa15-cadd-42f6-924f-95034ccb7f82
Ancestors: VMMaker.oscog-EstebanLorenzano.1672

restoring correct IB32ABIPlugin class comment

=============== Diff against VMMaker.oscog-EstebanLorenzano.1672 ===============

Item was changed:
  InterpreterPlugin subclass: #IA32ABIPlugin
  	instanceVariableNames: ''
  	classVariableNames: ''
  	poolDictionaries: 'VMBasicConstants'
  	category: 'VMMaker-Plugins-Alien'!
  
+ !IA32ABIPlugin commentStamp: 'EstebanLorenzano 1/28/2016 18:56' prior: 0!
+ This plugin implements the Alien foreign-function interface, a small elaboration on the Strongtalk FFI.
- !IA32ABIPlugin commentStamp: '<historical>' prior: 0!
- This plugin implements the Alien foreign-function interface, a small elaboration on the Strongtalk FFI.  This version of the plugin differs from the NewsqueakIA32ABIPlugin in not supporting immutability.
  
  Call-outs are performed by a small number of primitives, one each for the four different kinds of return linkage on x86.  The primitives are var-args.  Each primitive has a signature something like:
  primFFICall: functionAddress <Alien> result: result <Alien> with: firstArg <Alien> ... with: lastArg <Alien>
  	<primitive: 'primCallOutIntegralReturn' module: 'IA32ABI'>
  which arranges to call-out supplying the arguments to the function pointed to by functionAddress, copying its return value into result.  The call-out primitives are as follows:
  
  primCallOutIntegralReturn call a function which returns up to 8 bytes in %eax & %edx, taking up to the first 4 bytes from %eax.  i.e. if the sizeof(result) is 4 or less only bytes from %eax will be returned, but if more then the first 4 bytes of result will be assigned with %eax and subsequent bytes with %edx, up to a total of 8 bytes.
  
  primCallOutPointerReturn call a function which returns a pointer in %eax.  Assign sizeof(result) bytes from this pointer into the result.
  
  primCallOutFloatReturn call a function which returns a 4 byte single-precision float in %f0, assigning the 4 bytes of %f0 into result.
  
  primCallOutDoubleReturn call a function which returns an 8 byte double-precision float in %f0, assigning the 8 bytes of %f0 into result.
  
  !



More information about the Vm-dev mailing list