[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 449d09: CogVM source as per VMMaker.oscog-eem.3242

Eliot Miranda noreply at github.com
Tue Aug 2 19:25:35 UTC 2022


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 449d09bb3b1a8b978f2adfb3240ad558b190a33f
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/449d09bb3b1a8b978f2adfb3240ad558b190a33f
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2022-08-02 (Tue, 02 Aug 2022)

  Changed paths:
    M src/plugins/IA32ABI/IA32ABI.c
    M src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
    M src/plugins/SqueakFFIPrims/ARM64AppleFFIPlugin.c
    M src/plugins/SqueakFFIPrims/ARM64FFIPlugin.c
    M src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
    M src/plugins/SqueakFFIPrims/RiscV64FFIPlugin.c
    M src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c
    M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.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/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/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/cointerp.c
    M src/spur64.cog.lowcode/cointerp.h
    M src/spur64.cog.lowcode/gcc3x-cointerp.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/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/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.3242

General:
Tiny tweak to eliminate duplicate strlens in methodHasPrimitiveInPrimTracePlugin:

Slang:
Abstract checking for names defineAtCompileTime: so that the VMPluginCodeGenerator
can ask the pluginClass and ence that BytesPerWord is considered defined at
compile time, except within the ThreadedFFIPlugins.

ThreadedFFIPlugin:
Always do inline ffiCall:ArgArrayOrNil:NumArgs:. We should err on the side of
speed.  The code size shouldn't affect icache performance because the
primitiveCalloutWithArgs path is used very rarely in practice.

Now that ffiCall:ArgArrayOrNil:NumArgs: is always inlined, also inline
ffiReturnType:, avoiding unnecessary duplication.

Have all ThreadedFFIPlugins assign BytesPerWord in their initialize methods,
to inline positiveMachineIntegerFor: et al.  Override
InterpreterPlugin class>>#shouldGenerateDeadCode since these are very
platform-specific and the dead code decision well under control.

Fix nonRegisterStructReturnIsViaImplicitFirstArgument for RiscV64FFIPlugin.
Make it inline always on all of them, along with a few others.




More information about the Vm-dev mailing list