[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 7024a8: CogVM source as per VMMaker.oscog-eem.3287

Eliot Miranda noreply at github.com
Wed Jan 4 00:36:12 UTC 2023

  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 7024a83b249e17aed5e6ac4aa4ab4907d964b155
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2023-01-03 (Tue, 03 Jan 2023)

  Changed paths:
    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.3287

Fix become on compiled methods (for Spur only).  Tim Rowledge's recent attempt
to inboard sources uncovered flaws in become with compiled methods on some
jitted platforms (specifically ARMv8 linux, which has a dual mapped code zone).

The main changes in this are to
a) never do in-place become on compiled methods on the jit
b) divorce machine code frames referring to cog methods involved in a become
c) refactor to reduce duplication and overrioding in spurPostBecomeAction:
d) fix bugs in mapping the instructionPointer when method and/or newMethod are
e) fix bugs in exception handler search that was not following forwarding
   pointers and could hence possibly be confused (miss finding a handler)
   by a become

Hide access to CogBlockMethod cmType behind accessors, so as to allow CMMethod
to be extended to address the above issue with become in an elegant way.

More information about the Vm-dev mailing list