[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 75b01d: CogVM source as per VMMaker.oscog-eem.3307/VMConst...

Eliot Miranda noreply at github.com
Thu Feb 23 02:46:41 UTC 2023


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 75b01dac3ee745bab2867f1c56fb2790d57ceee2
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/75b01dac3ee745bab2867f1c56fb2790d57ceee2
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2023-02-22 (Wed, 22 Feb 2023)

  Changed paths:
    M src/plugins/UnixOSProcessPlugin/UnixOSProcessPlugin.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.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.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.3307/VMConstruction-Plugins-OSProcessPlugin.oscog-eem.76

Implement a machine code primitive for primitiveHighResClock on 64-bit platforms.
This is faster than the fast-call interpreter primitive by 15% on x86_64 and by
480% on ARMv8 (Apple M1).

Have compilePrimitive use methodOrBlockNumArgs rather than argumentCountOf: methodObj.

Fix the type of semaIndices.  This should be int. unsigned char risks corruption
if there are more than 256 external semaphores, which could be the case in a
very complex application.
Fix a few sends of stackIntegerValue: that were not followed by the obligatory
interpreterProxy failed check.  I lost patience/time, but this really should be
done.  In all VMs, proceeding after a primitive has failed without checking for
primitive failure can have disastrous effects (arguments are popped off the
stack that shouldn't be).




More information about the Vm-dev mailing list