[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 811df7: CogVM source as per VMMaker.oscog-eem.2705

Eliot Miranda noreply at github.com
Tue Feb 4 21:37:20 UTC 2020


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 811df757ca9a874b01a1ee5100600ce450e19f50
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/811df757ca9a874b01a1ee5100600ce450e19f50
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2020-02-04 (Tue, 04 Feb 2020)

  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/Cross/plugins/IA32ABI/arm32abicc.c
    M platforms/unix/vm/sqUnixHeartbeat.c
    M platforms/unix/vm/sqUnixITimerHeartbeat.c
    M platforms/unix/vm/sqUnixITimerTickerHeartbeat.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/cointerpmt.c
    M spur64src/vm/cointerpmt.h
    M spur64src/vm/gcc3x-cointerp.c
    M spur64src/vm/gcc3x-cointerpmt.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/cointerpmt.c
    M spursrc/vm/cointerpmt.h
    M spursrc/vm/gcc3x-cointerp.c
    M spursrc/vm/gcc3x-cointerpmt.c
    M spurstack64src/vm/gcc3x-interp.c
    M spurstack64src/vm/interp.c
    M spurstack64src/vm/validImage.c
    M spurstacksrc/vm/gcc3x-interp.c
    M spurstacksrc/vm/interp.c
    M spurstacksrc/vm/validImage.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.2705

Cogit:
Add support for a substitute SPReg to cope with the ARMv8's typical 16-byte
stack pointer alignment requirement.  Implement NativePopR:& NativePushR:.
Fix compilation warnings for cStack/FramePointerAddress access.  Fix
nextProfileTickAddress for 64-bit simulation.  Write stackLimitAddress &
vmOwnerLockAddress in the modern style.  Move genLoadStackPointers from Cogit
to CogAbstractInstruction where it lives with the other stack load/store
generartors, allowing ARMv8 to easily override to use ldp/stp as desired.

Consequently...
- add NativePopR NativePushR NativeRetN abstract instructions (so far only
  NativeRetN needs to be implemented; see ceCaptureCStackPointers)
- add ABICalleeSavedRegisterMask & ABICallerSavedRegisterMask to
  CogAbstractRegisters
- Add ABIResultReg and ABIResultRegHigh and nuke the cResultRegister accessor.
- Rename genGetLeafCallStackPointer to genGetLeafCallStackPointers, and have
  ceGetSP answer the native stack pointer.

Add support for cache flushing in the dual mapped regime, hence rename
maybeGenerateICacheFlush to maybeGenerateCacheFlush.

Slang:
Sort variables by size so that they occupy a little less space.
reenterInterpreter does *not* need to be exported.
Nuke unused Cogit Lowcode vars when not generating a LowcodeVM.

FFI Plugins:
Let X64 SysV FFI handle passing/returning union

This can be tricky because we can have union in struct, struct in union etc...
So we must correctly peel the union.




More information about the Vm-dev mailing list