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

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

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

Eliot Miranda-3
 
  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 4749358b5717b9a2f7e1d44f9baac48ed5d80431
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/4749358b5717b9a2f7e1d44f9baac48ed5d80431
  Author: Eliot Miranda <[hidden email]>
  Date:   2018-03-07 (Wed, 07 Mar 2018)

  Changed paths:
    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 nsspurstack64src/vm/gcc3x-interp.c
    M nsspurstack64src/vm/interp.c
    M nsspurstacksrc/vm/gcc3x-interp.c
    M nsspurstacksrc/vm/interp.c
    M platforms/win32/plugins/FilePlugin/sqWin32FilePrims.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 spurlowcode64src/vm/cogit.h
    M spurlowcode64src/vm/cogitX64SysV.c
    M spurlowcode64src/vm/cogitX64WIN64.c
    M spurlowcode64src/vm/cointerp.c
    M spurlowcode64src/vm/cointerp.h
    M spurlowcode64src/vm/gcc3x-cointerp.c
    M spurlowcodesrc/vm/cogit.h
    M spurlowcodesrc/vm/cogitARMv5.c
    M spurlowcodesrc/vm/cogitIA32.c
    M spurlowcodesrc/vm/cogitMIPSEL.c
    M spurlowcodesrc/vm/cointerp.c
    M spurlowcodesrc/vm/cointerp.h
    M spurlowcodesrc/vm/gcc3x-cointerp.c
    M spurlowcodestack64src/vm/gcc3x-interp.c
    M spurlowcodestack64src/vm/interp.c
    M spurlowcodestacksrc/vm/gcc3x-interp.c
    M spurlowcodestacksrc/vm/interp.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 spurstack64src/vm/gcc3x-interp.c
    M spurstack64src/vm/interp.c
    M spurstacksrc/vm/gcc3x-interp.c
    M spurstacksrc/vm/interp.c
    M src/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
    M src/plugins/AioPlugin/AioPlugin.c
    M src/plugins/AsynchFilePlugin/AsynchFilePlugin.c
    M src/plugins/B2DPlugin/B2DPlugin.c
    M src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c
    M src/plugins/BMPReadWriterPlugin/BMPReadWriterPlugin.c
    M src/plugins/BitBltPlugin/BitBltPlugin.c
    M src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
    M src/plugins/BochsX64Plugin/BochsX64Plugin.c
    M src/plugins/CameraPlugin/CameraPlugin.c
    M src/plugins/CroquetPlugin/CroquetPlugin.c
    M src/plugins/DESPlugin/DESPlugin.c
    M src/plugins/DSAPrims/DSAPrims.c
    M src/plugins/DropPlugin/DropPlugin.c
    M src/plugins/FFTPlugin/FFTPlugin.c
    M src/plugins/FileAttributesPlugin/FileAttributesPlugin.c
    M src/plugins/FileCopyPlugin/FileCopyPlugin.c
    M src/plugins/FilePlugin/FilePlugin.c
    M src/plugins/FloatArrayPlugin/FloatArrayPlugin.c
    M src/plugins/FloatMathPlugin/FloatMathPlugin.c
    M src/plugins/GdbARMPlugin/GdbARMPlugin.c
    M src/plugins/GeniePlugin/GeniePlugin.c
    M src/plugins/HostWindowPlugin/HostWindowPlugin.c
    M src/plugins/IA32ABI/IA32ABI.c
    M src/plugins/ImmX11Plugin/ImmX11Plugin.c
    M src/plugins/InternetConfigPlugin/InternetConfigPlugin.c
    M src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
    M src/plugins/JPEGReaderPlugin/JPEGReaderPlugin.c
    M src/plugins/JoystickTabletPlugin/JoystickTabletPlugin.c
    M src/plugins/Klatt/Klatt.c
    M src/plugins/LargeIntegers/LargeIntegers.c
    M src/plugins/LocalePlugin/LocalePlugin.c
    M src/plugins/MD5Plugin/MD5Plugin.c
    M src/plugins/MIDIPlugin/MIDIPlugin.c
    M src/plugins/MacMenubarPlugin/MacMenubarPlugin.c
    M src/plugins/Matrix2x3Plugin/Matrix2x3Plugin.c
    M src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    M src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
    M src/plugins/QuicktimePlugin/QuicktimePlugin.c
    M src/plugins/RePlugin/RePlugin.c
    M src/plugins/SHA256Plugin/SHA256Plugin.c
    M src/plugins/ScratchPlugin/ScratchPlugin.c
    M src/plugins/SecurityPlugin/SecurityPlugin.c
    M src/plugins/SerialPlugin/SerialPlugin.c
    M src/plugins/SocketPlugin/SocketPlugin.c
    M src/plugins/SoundCodecPrims/SoundCodecPrims.c
    M src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c
    M src/plugins/SoundPlugin/SoundPlugin.c
    M src/plugins/Squeak3D/Squeak3D.c
    M src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
    M src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
    M src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c
    M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c
    M src/plugins/SqueakSSL/SqueakSSL.c
    M src/plugins/StarSqueakPlugin/StarSqueakPlugin.c
    M src/plugins/UUIDPlugin/UUIDPlugin.c
    M src/plugins/UnicodePlugin/UnicodePlugin.c
    M src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
    M src/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
    M src/plugins/VMProfileMacSupportPlugin/VMProfileMacSupportPlugin.c
    M src/plugins/WeDoPlugin/WeDoPlugin.c
    M src/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
    M src/plugins/XDisplayControlPlugin/XDisplayControlPlugin.c
    M src/plugins/ZipPlugin/ZipPlugin.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
    M stacksrc/vm/gcc3x-interp.c
    M stacksrc/vm/interp.c

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

StackInterpreter:
Immutability:
Fix primitiveSlotAtPut (& InterpreterPrimitives>>primitiveInstVarAtPut) to fail
with PrimErrorNoModification for read-only objects.

Cogit:
Inline a few trivial methods.

StackToRegisterMappingCogit:
For simplicity, especially in the RegisterAllocatingCogit subclass, eliminate
simSelf and optStatus and include the receiver's simStackEntry as the 0'th
element of the simStack.  optStatus is therefore whether simSelf's liveRegister
is ReceiverResultReg.  Hence loops from 0 to: methodOrBlockNumTemps - 1 become
loops from 1 to: methodOrBlockNumTemps.  The simSelf variable is replaced by
self simSelf, which is short-hand for self simStackAt: 0.

Fix ancient bug in voidReceiverResultRegContainsSelf.  The computed index is the
right argument for ssFlushTo:; it shouldn't be subtracted from simStackPtr!

Replace the UnknownSimStackPtrFlag hack in a fixup's simStackPtr and replace it
by a proper flag.  Consequently make a fixup's simStackPtr unsigned char,
giving us a maximim of 255 stack slots (0 being for the receiver).

Get much stricter with simSpillBase for the benefit of RegisterAllocatingCogit.
updateSimSpillBase is now called after the new descriptor is pushed and either
counts up or counts down as required to guarantee it points one beyond the last
spilled entry.  The assertCorrectSimStackPtr asserts now insist on this.  With
this change we can start to replace all the simSpillBase max: 0 phrases with
simply simSpillBase.

Deal with the assert failures due to frameless methods with unused temporaries
by simply refusing to JIT them; see the new methodFoundInvalidPostScan hook.

Plugins:
All plugins should include config.h and it should always be the first include.

FilePlugin connect to file primitives primitiveConnectToFileDescriptor &
primitiveConnectToFile.  Many thanks to Holger Freyther for the original code.

Rewrite the primitives in MiscPrimitivePlugin using conventional Slang, avoiding
the translatedPrimitives ineffiicencies and dependence on methods in the image.
Volunteers are invited to do the same for the ADPCMCodecPlugin and
SoundGenerationPlugin.