[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 99f111: CogVM source as per VMMaker.oscog-eem.3090

Eliot Miranda noreply at github.com
Fri Oct 15 20:18:15 UTC 2021


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 99f1116c0f7a4ba9a0bf88cf7deb276325aa2d79
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/99f1116c0f7a4ba9a0bf88cf7deb276325aa2d79
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2021-10-15 (Fri, 15 Oct 2021)

  Changed paths:
    M src/plugins/B2DPlugin/B2DPlugin.c
    M src/plugins/B3DAcceleratorPlugin/B3DAcceleratorPlugin.c
    M src/plugins/BitBltPlugin/BitBltPlugin.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/FileAttributesPlugin/FileAttributesPlugin.c
    M src/plugins/FileCopyPlugin/FileCopyPlugin.c
    M src/plugins/FilePlugin/FilePlugin.c
    M src/plugins/Float64ArrayPlugin/Float64ArrayPlugin.c
    M src/plugins/FloatArrayPlugin/FloatArrayPlugin.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/Klatt/Klatt.c
    M src/plugins/LargeIntegers/LargeIntegers.c
    M src/plugins/MD5Plugin/MD5Plugin.c
    M src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
    M src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
    M src/plugins/SHA2Plugin/SHA2Plugin.c
    M src/plugins/ScratchPlugin/ScratchPlugin.c
    M src/plugins/SerialPlugin/SerialPlugin.c
    M src/plugins/SocketPlugin/SocketPlugin.c
    M src/plugins/SoundCodecPrims/SoundCodecPrims.c
    M src/plugins/SoundPlugin/SoundPlugin.c
    M src/plugins/Squeak3D/Squeak3D.c
    M src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
    M src/plugins/SqueakFFIPrims/ARM64FFIPlugin.c
    M src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
    M src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c
    M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c
    M src/plugins/UnicodePlugin/UnicodePlugin.c
    M src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.c
    M src/plugins/VMProfileLinuxSupportPlugin/VMProfileLinuxSupportPlugin.c
    M src/plugins/WeDoPlugin/WeDoPlugin.c
    M src/plugins/Win32OSProcessPlugin/Win32OSProcessPlugin.c
    M src/spur32.cog.lowcode/cogit.h
    M src/spur32.cog.lowcode/cogitARMv5.c
    M src/spur32.cog.lowcode/cogitIA32.c
    M src/spur32.cog.lowcode/cointerp.c
    M src/spur32.cog.lowcode/cointerp.h
    M src/spur32.cog.lowcode/gcc3x-cointerp.c
    M src/spur32.cog/cogit.h
    M src/spur32.cog/cogitARMv5.c
    M src/spur32.cog/cogitIA32.c
    M src/spur32.cog/cointerp.c
    M src/spur32.cog/cointerp.h
    M src/spur32.cog/cointerpmt.c
    M src/spur32.cog/cointerpmt.h
    M src/spur32.cog/gcc3x-cointerp.c
    M src/spur32.cog/gcc3x-cointerpmt.c
    M src/spur32.cog/interp.h
    M src/spur32.sista/cogit.h
    M src/spur32.sista/cogitARMv5.c
    M src/spur32.sista/cogitIA32.c
    M src/spur32.sista/cointerp.c
    M src/spur32.sista/cointerp.h
    M src/spur32.sista/gcc3x-cointerp.c
    M src/spur32.stack.lowcode/gcc3x-interp.c
    M src/spur32.stack.lowcode/interp.c
    M src/spur32.stack/gcc3x-interp.c
    M src/spur32.stack/interp.c
    M src/spur32.stack/validImage.c
    M src/spur64.cog.lowcode/cogit.h
    M src/spur64.cog.lowcode/cogitARMv8.c
    M src/spur64.cog.lowcode/cogitX64SysV.c
    M src/spur64.cog.lowcode/cogitX64WIN64.c
    M src/spur64.cog.lowcode/cointerp.c
    M src/spur64.cog.lowcode/cointerp.h
    M src/spur64.cog.lowcode/gcc3x-cointerp.c
    M src/spur64.cog/cogit.h
    M src/spur64.cog/cogitARMv8.c
    M src/spur64.cog/cogitX64SysV.c
    M src/spur64.cog/cogitX64WIN64.c
    M src/spur64.cog/cointerp.c
    M src/spur64.cog/cointerp.h
    M src/spur64.cog/cointerpmt.c
    M src/spur64.cog/cointerpmt.h
    M src/spur64.cog/gcc3x-cointerp.c
    M src/spur64.cog/gcc3x-cointerpmt.c
    M src/spur64.cog/interp.h
    M src/spur64.sista/cogit.h
    M src/spur64.sista/cogitARMv8.c
    M src/spur64.sista/cogitX64SysV.c
    M src/spur64.sista/cogitX64WIN64.c
    M src/spur64.sista/cointerp.c
    M src/spur64.sista/cointerp.h
    M src/spur64.sista/gcc3x-cointerp.c
    M src/spur64.stack.lowcode/gcc3x-interp.c
    M src/spur64.stack.lowcode/interp.c
    M src/spur64.stack/gcc3x-interp.c
    M src/spur64.stack/interp.c
    M src/spur64.stack/validImage.c
    M src/v3.cog/cogit.h
    M src/v3.cog/cogitARMv5.c
    M src/v3.cog/cogitIA32.c
    M src/v3.cog/cointerp.c
    M src/v3.cog/cointerp.h
    M src/v3.cog/gcc3x-cointerp.c
    M src/v3.stack/gcc3x-interp.c
    M src/v3.stack/interp.c

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

Spur:
Add explicit accessor depths for primitiveStringAt[Put] (correcting the
ommission to mirror primitiveAt[Put]) and primitiveExternalCall.
Fix a slip in printOopShortInner:.

Run primitiveSpurStringReplace and primitiveSpurFloatArrayAt[Put] on the
Smalltalk stack; the latter with 2x stack alignment.

Spur Cogit:
Fix code generation bug on primitive failure with no accessor depth when running
primitives on the Smalltalk stack (FastCPrimitive). On CISCs the old code offset
the stack pointer incorrectly, resulting in a hard crash soon after.  Also allow
compileInterpreterPrimitive to invoke compileOnStackExternalPrimitive:flags:.

Nuke the useless minValidCallAddress

Spur Slang:
Reimplement finding of the transitive closure and length of accessor chains for
computing primitive accessor depth. The algorithm now has some semblance of
correctness and comprehensibility.  Refactor so that accessorChainsForMethod:interpreterClass: =>
accessorDepthForMethod:interpreterClass:, and includes accessorDepthForChain:.

Fix a bad bug with computing accessor depths of clichés such as
primitiveStrigReplace:
		primitiveFoo
			objectMemory hasSpurMemoryManagerAPI
				ifTrue: [self primitiveFooSpur]
				ifFalse: [self primitiveFooV3]
The old code missed the connection and computed a -1 accessor depth.

Format the macrology for global interpreter variables, and the primitiveAccessorDepthTable, a little nicer.

Minor cleanups to a few primitives (e.g. we now have cppIf:ifFalse:).




More information about the Vm-dev mailing list