[OpenSmalltalk/opensmalltalk-vm] e45e7e: CogVM source as per VMMaker.oscog-eem.2217

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[OpenSmalltalk/opensmalltalk-vm] e45e7e: CogVM source as per VMMaker.oscog-eem.2217

Eliot Miranda-3
 
  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: e45e7ebf8f7baf4548990a6f7fa09c480cfbc683
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/e45e7ebf8f7baf4548990a6f7fa09c480cfbc683
  Author: Eliot Miranda <[hidden email]>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M build.linux32ARMv6/HowToBuild
    M build.linux32ARMv7/HowToBuild
    M build.linux32x86/HowToBuild
    M build.linux64x64/HowToBuild
    M nsspur64src/vm/cogit.h
    M nsspur64src/vm/cogitX64SysV.c
    M nsspur64src/vm/cogitX64WIN64.c
    M nsspur64src/vm/cointerp.c
    M nsspur64src/vm/cointerp.h
    M nsspur64src/vm/gcc3x-cointerp.c
    M nsspursrc/vm/cogit.h
    M nsspursrc/vm/cogitARMv5.c
    M nsspursrc/vm/cogitIA32.c
    M nsspursrc/vm/cogitMIPSEL.c
    M nsspursrc/vm/cointerp.c
    M nsspursrc/vm/cointerp.h
    M nsspursrc/vm/gcc3x-cointerp.c
    M platforms/Cross/plugins/SoundPlugin/SoundPlugin.h
    M platforms/iOS/plugins/SoundPlugin/sqSqueakSoundCoreAudio.h
    M platforms/iOS/plugins/SoundPlugin/sqSqueakSoundCoreAudio.m
    M platforms/iOS/plugins/SoundPlugin/sqSqueakSoundCoreAudioAPI.m
    M platforms/unix/plugins/SoundPlugin/sqUnixSound.c
    M platforms/unix/vm/SqSound.h
    M platforms/win32/plugins/SoundPlugin/sqWin32Sound.c
    M spur64src/vm/cogit.h
    M spur64src/vm/cogitX64SysV.c
    M spur64src/vm/cogitX64WIN64.c
    M spur64src/vm/cointerp.c
    M spur64src/vm/cointerp.h
    M spur64src/vm/gcc3x-cointerp.c
    M spursista64src/vm/cogit.h
    M spursista64src/vm/cogitX64SysV.c
    M spursista64src/vm/cogitX64WIN64.c
    M spursista64src/vm/cointerp.c
    M spursista64src/vm/cointerp.h
    M spursista64src/vm/gcc3x-cointerp.c
    M spursistasrc/vm/cogit.h
    M spursistasrc/vm/cogitARMv5.c
    M spursistasrc/vm/cogitIA32.c
    M spursistasrc/vm/cogitMIPSEL.c
    M spursistasrc/vm/cointerp.c
    M spursistasrc/vm/cointerp.h
    M spursistasrc/vm/gcc3x-cointerp.c
    M spursrc/vm/cogit.h
    M spursrc/vm/cogitARMv5.c
    M spursrc/vm/cogitIA32.c
    M spursrc/vm/cogitMIPSEL.c
    M spursrc/vm/cointerp.c
    M spursrc/vm/cointerp.h
    M spursrc/vm/gcc3x-cointerp.c
    M src/plugins/FilePlugin/FilePlugin.c
    M src/plugins/SoundPlugin/SoundPlugin.c
    M src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
    M src/vm/cogit.h
    M src/vm/cogitARMv5.c
    M src/vm/cogitIA32.c
    M src/vm/cogitMIPSEL.c
    M src/vm/cointerp.c
    M src/vm/cointerp.h
    M src/vm/cointerpmt.c
    M src/vm/cointerpmt.h
    M src/vm/gcc3x-cointerp.c
    M src/vm/gcc3x-cointerpmt.c

  Log Message:
  -----------
  CogVM source as per VMMaker.oscog-eem.2217

Cogit:
The code for restoring saved registers after a CallRT: did a benign iteration
in excess.

Spur:
Never inline objectsReachableFromRoots:.  Fix a speeling rorre.

SoundPlugin:
Add the Terf SoundPlugin extensions (to deal with multiple devices, their names,
volumes, etc).  Provide a nearly full implementation on Mac OS X Cocoa (inc 64
bits, but no AEC as yet).  Provide stub implementations for Unix & WIn32.  Any
one interested in win32/win64 I have the Terf C code in C++ files which needs
to be recast as C files.

Slang/FilePlugin:
Avoid remapping oops on creating directory entries in the FilePlugin on Spur by using remapOop:in:.  Change Slang to avoid creating nested #if-#else-#endif structures for nested remapOop:in:'s.  Nuke an unused configuration.

Cogit/CoInterpreter interaction:
Use a special form of sigsetjmp to avoid stack unwinding on Windows 64.

Note 1: stack unwinding is for C++ exception handling (for example for calling
destructors).  We do not need it, and it requires the presence of specific
information on stack which is not honoured by our JIT frames.

Note 2: this patch is specific to Mingw-w64. It might not work for another
compiler (MSVC/Intel/...). Someone making the Vm compile with other tools
might have to amend this #preambleCCode again.

In mingw, there is a possibility to pass a 2nd parameter to a _setjmp, and if
this 2nd argument is NULL, there will be no context unwinding. This knowledge
is extracted from these references:

http://mingw-w64-public.narkive.com/1mUoWEfG/setjmp-longjmp-crashes-second-setjmp-argument
https://patchwork.ozlabs.org/patch/437794/
http://www.agardner.me/golang/windows/cgo/64-bit/setjmp/longjmp/2016/02/29/go-windows-setjmp-x86.html
https://sourceforge.net/p/mingw-w64/bugs/465/

Build system:
Note that gcc beyond 4.8 does not work, at least on Debian linux.


  Commit: 1d60beaad5af99c14b3b8f7303902e34956228cc
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/1d60beaad5af99c14b3b8f7303902e34956228cc
  Author: Eliot Miranda <[hidden email]>
  Date:   2017-05-19 (Fri, 19 May 2017)

  Changed paths:
    M src/plugins/SoundPlugin/SoundPlugin.c

  Log Message:
  -----------
  CogVM source as per VMMaker.oscog-eem.2218

Fix slips in the SoundPlugin code.


Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/ca7e8db32835...1d60beaad5af