[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] de4304: CogVM source as per VMMaker.oscog-eem.2116

GitHub noreply at github.com
Sat Jan 28 19:18:16 UTC 2017


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: de43045c722a64b96e4503ad0942fce4cc89dca1
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/de43045c722a64b96e4503ad0942fce4cc89dca1
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-01-28 (Sat, 28 Jan 2017)

  Changed paths:
    M nsspur64src/vm/cogit.h
    M nsspur64src/vm/cointerp.c
    M nsspur64src/vm/cointerp.h
    M nsspur64src/vm/gcc3x-cointerp.c
    M nsspursrc/vm/cogit.h
    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/cointerp.c
    M spur64src/vm/cointerp.h
    M spur64src/vm/gcc3x-cointerp.c
    M spursista64src/vm/cogit.h
    M spursista64src/vm/cointerp.c
    M spursista64src/vm/cointerp.h
    M spursista64src/vm/gcc3x-cointerp.c
    M spursistasrc/vm/cogit.h
    M spursistasrc/vm/cointerp.c
    M spursistasrc/vm/cointerp.h
    M spursistasrc/vm/gcc3x-cointerp.c
    M spursrc/vm/cogit.h
    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

  Log Message:
  -----------
  CogVM source as per VMMaker.oscog-eem.2116

Interpreter:
Fixed a bug where the CogVMFeatureFlags were converted twice to SmallInteger
(in getCogVMFeatureFlags and in primitiveVMParameter), shifting 1 time too many
the flags. Hence MULTIPLEBYTECODESETS flag was always true in the image while
SUPPORTSWRITEBARRIER was true only if the VM supported multiple bytecode set.

Make printFrame: lax enough to accept a married context and print its frame
without complaint.

Decode a method header when doing longPrintOop:.

Add printOopsSuchThat: for debugging.

Spur:
Include rawNumSlots and eliminate the hex prefix in printEntity:'s size info.

Change attemptToShrink to request the segmentManager to shrink by at least
growHeadroom, since it won't otherwise.  Have shrinkObjectMemory: answer if
shrinkage occurred, and only increment statShrinkMemory if so.

Cogit:
Add leak checking of CogMethod counters and implicit receiver caches.

StackToRegisterMappingCogit:
Follow jumps to jumps and push: aBoolean; jump:if:s, eliminating dead code.
Elimnate jumps to the immediately following instruction in
StackToRegisterMappingCogit>>generateInstructionsAt:.

Sista:
Added support for BitShiftRight: and bitShiftLeft: unsafe operations

Added support for inlined primitive #characterAsInteger.

Fixed a bug where branchIfNotInstanceOf: span function misscomputed the
distance when ExtB is negated to inverse the branch.

Set deadCode to true in trap bytecode to avoid generating merge machine code
that is never reached.

Use Spur's single-bit tests for immediates in the
CogObjectRepresentationFor??BitSpur's branchIf:has[Not]ImmediateTag:target:

Fix the ssFlushTo: call in genExtJumpIfNotInstanceOfBehaviorsBytecode

Fix coging optimized methods with lots of literals.

Change the machine compilation of BranchIfInstanceOf if there is one Behavior
and the behavior is UndefinedObject, True and False to compile to a direct
comparison to the unique instances instead of class index check.

Add a new trampoline to create new hashes. The trampoline is Sista only and
it's used in the inlined primitive.

ThreadedFFIPlugin:
Fix FFI in 64bits. The moduleHandle (a pointer) was incorrectly truncated to
an int (32bits).

Lowcode:
64 bits version of Lowcode. All of the tests for WodenMath are passing.

Workaround a GCC crash in Windows when building a Lowcode VM. Too much register
allocation pressure for calling a builtin memcpy.




More information about the Vm-dev mailing list