[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 456992: CogVM source as per VMMaker.oscog-nice.1933

GitHub noreply at github.com
Mon Sep 5 08:00:01 UTC 2016


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 456992cac8ac6d607603301c3d19d016998d90ae
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/456992cac8ac6d607603301c3d19d016998d90ae
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2016-09-05 (Mon, 05 Sep 2016)

  Changed paths:
    M nsspur64src/vm/cogit.h
    M nsspur64src/vm/cogitX64.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 spur64src/vm/cogit.h
    M spur64src/vm/cogitX64.c
    M spur64src/vm/cointerp.c
    M spur64src/vm/cointerp.h
    M spur64src/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/gcc3x-cointerp.c
    M spurstack64src/vm/gcc3x-interp.c
    M spurstack64src/vm/interp.c
    M spurstacksrc/vm/gcc3x-interp.c
    M spurstacksrc/vm/interp.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-nice.1933

Fix incorrect type inferencing for asUnsignedLongLong which causes a bug in the
v3 format VM in fetchLong64:ofObject:.  This breaks large integer arithmetic.

In this case, type inferencing is used for correct unsigned casting before
left shifting.

TODO: verify that all selectors translated via initializeCTranslationDictionary
have correct type inferencing in returnTypeForSend:in:ifNil:

Sista:
The jumpIfNotInstanceOfOrPop bytecode was interesting but hard to tackle in many
places, leading to hard to write assertion in the JIT.

It has been changed so that it now always consumes the top of the stack,
jumping if the top of the stack is not an instance of one of the class
specified in the literal.

This way that bytecode can also be used easily to optimize PICs.

Fixed machine code generation of UByteNumBytes




More information about the Vm-dev mailing list