[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] cfdc33: Add the -e flags to build.win64x64 bash files

GitHub noreply at github.com
Thu Aug 11 01:30:46 UTC 2016


  Branch: refs/heads/LLP64
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: cfdc33ff5d0080c8e4fd51b972eafc1a7d46a15b
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/cfdc33ff5d0080c8e4fd51b972eafc1a7d46a15b
  Author: nicolas-cellier-aka-nice <nicolas.cellier.aka.nice at gmail.com>
  Date:   2016-08-11 (Thu, 11 Aug 2016)

  Changed paths:
    M build.win64x64/makeall
    M build.win64x64/makeallinstall
    M build.win64x64/makeproduct
    M build.win64x64/makeproductinstall

  Log Message:
  -----------
  Add the -e flags to build.win64x64 bash files


  Commit: fb67d23eb1ad566f4f4f7c72fe58f801732ded33
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/fb67d23eb1ad566f4f4f7c72fe58f801732ded33
  Author: nicolas-cellier-aka-nice <nicolas.cellier.aka.nice at gmail.com>
  Date:   2016-08-11 (Thu, 11 Aug 2016)

  Changed paths:
    M build.win64x64/squeak.stack.spur/plugins.ext
    M build.win64x64/squeak.stack.spur/plugins.int
    A platforms/Cross/plugins/IA32ABI/dax64win64business.h
    M platforms/Cross/plugins/IA32ABI/ia32abi.h
    A platforms/Cross/plugins/IA32ABI/x64win64ia32abicc.c
    M platforms/Cross/plugins/IA32ABI/xabicc.c
    M platforms/win32/plugins/IA32ABI/Makefile.plugin
    M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c

  Log Message:
  -----------
  Attempt a first x64 win64 FFI plugin

Warning: MOSTLY UNTESTED

Implementation note:
do not use the loadFloatRegs(...) fake call for loading floating point registers xmm0...xmm3
Instead, simply and dumbly switch on the 16 possible combinations of int/float register parameters
The reasons for this choice are:
-1) I don't understand how loadFloatRegs would work with x64-win64 ABI
     I believe the caller should save/restore the registers before/after loadFloatRegs call
- 2) be more robust versus aggressive compiler optimizations
     and eventually link time optimizations (loadFloatRegs needs to be in a separate file, but LTO might spoil this)
- 3) it's simple enough to encode (even if a bit copy/paste error prone)

For thunkEntry, use few asm instructions
(REMINDER: have to replace asm with some intrinsics for MSVC - see https://software.intel.com/sites/landingpage/IntrinsicsGuide/#cats=Load&expand=3069,3073,3075,3080 )


Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/c64566a79a17...fb67d23eb1ad


More information about the Vm-dev mailing list