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

GitHub noreply at github.com
Tue Mar 14 02:59:59 UTC 2017

  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: b7cd83334d2eb417c73439e96d54fe46a93fbf54
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-03-13 (Mon, 13 Mar 2017)

  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 nsspur64src/vm/vmCallback.h
    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 nsspursrc/vm/vmCallback.h
    M nsspurstack64src/vm/gcc3x-interp.c
    M nsspurstack64src/vm/interp.c
    M nsspurstack64src/vm/vmCallback.h
    M nsspurstacksrc/vm/gcc3x-interp.c
    M nsspurstacksrc/vm/interp.c
    M nsspurstacksrc/vm/vmCallback.h
    M platforms/Cross/vm/sqVirtualMachine.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 spur64src/vm/vmCallback.h
    M spurlowcode64src/vm/cogit.h
    M spurlowcode64src/vm/cogitX64.c
    M spurlowcode64src/vm/cointerp.c
    M spurlowcode64src/vm/cointerp.h
    M spurlowcode64src/vm/gcc3x-cointerp.c
    M spurlowcode64src/vm/vmCallback.h
    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 spurlowcodesrc/vm/vmCallback.h
    M spurlowcodestack64src/vm/gcc3x-interp.c
    M spurlowcodestack64src/vm/interp.c
    M spurlowcodestack64src/vm/vmCallback.h
    M spurlowcodestacksrc/vm/gcc3x-interp.c
    M spurlowcodestacksrc/vm/interp.c
    M spurlowcodestacksrc/vm/vmCallback.h
    M spursista64src/vm/cogit.h
    M spursista64src/vm/cogitX64.c
    M spursista64src/vm/cointerp.c
    M spursista64src/vm/cointerp.h
    M spursista64src/vm/gcc3x-cointerp.c
    M spursista64src/vm/vmCallback.h
    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 spursistasrc/vm/vmCallback.h
    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 spursrc/vm/vmCallback.h
    M spurstack64src/vm/gcc3x-interp.c
    M spurstack64src/vm/interp.c
    M spurstack64src/vm/vmCallback.h
    M spurstacksrc/vm/gcc3x-interp.c
    M spurstacksrc/vm/interp.c
    M spurstacksrc/vm/vmCallback.h
    M src/plugins/IA32ABI/IA32ABI.c
    M src/plugins/ZipPlugin/ZipPlugin.c
    M src/vm/cogit.h
    M src/vm/cogitARMv5.c
    M src/vm/cogitIA32.c
    M src/vm/cogitMIPSEL.c
    M src/vm/cogmethod.h
    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 src/vm/vmCallback.h
    M stacksrc/vm/gcc3x-interp.c
    M stacksrc/vm/interp.c
    M stacksrc/vm/vmCallback.h

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

Refactor the assignments to the stack pointers from a page's head pointers
into setStackPointersFromPage:.
Remove calls to addNewMethodToCache: from clients of
lookupOrdinaryNoMNUEtcInClass: which does this anyway.

Stack Interpreter Alien Callbacks:
Implement ownVM: and disownVM: for the non-threaded VM in StackInterpreter,
removing it from sqVirtualMachine.c. Arrange that sendInvokeCallbackContext:
& returnAs:ThroughCallback:Context: along with ownVM: and disownVM:
conspire to save and restore newMethod, argumentCount and
primitiveFunctionPointer around a callback. The VM depends on argumentCount
being correct to cut-back the correct number of arguments on primitive
return.  If a primitive that invokes a callback fails after invoking a
callback (a bad idea, but s**t happens during development) then newMethod
is required to activate the right faling method, and Spur expects
primitiveFunctionPointer to be valid, so asserts will fail misleadingly if
Add three variables to help debug callbacks that are updated only in the
assert and debug VMs. debugCallbackPath has bits set in it that describe
the specific path taken through returnAs:ThroughCallback:Context:, while
debugCallbackReturns debugCallbackInvokes merely count invocations and
returns, and can be used for breakponts if reproducible cases arise (such
as the recent Pharo 6 VGTigerDemo runDemo issues with copyBits using
surface funciton callbacks.

64-bit Spur:
Fix variable declaration in primitiveSignalAtMilliseconds to prevent
arithmetic overflow in calculating nextWakeupUsecs on millisecond clock
rollover.  Addresses a problem reported for 32 bit images converted to 64
bit (e.g. Cuis port to Spur64) for which delay timing has not yet been
updated to use microsecond primitives.  Prior to this change, the following
would lock a 64 bit Spur image:
	s := Semaphore new.
	Delay primSignal: s atMilliseconds: Time primMillisecondClock - 10.
	s wait.

Fixed a bug where directed super send byte was leaking numExtB, leading to
the next instruction with ExtB being incorrectly interpreted

Spur64BitMemoryManager must export fetchClassTagOf:.

Use unsigned int as the type of 32-bit instructions (ARM & MIPS).  Reduce
code on the class side in defining the CogAbstractInstruction typedefs.
Document that the limit on the Cogit's alloca more than ensures that the
number of abstract instructions and bytecode fixups fits within 16 bits.

Rename blockPass, saveForBlockCompile et al to compilationPass,
saveForRecompile etc.  This so that RegisterAllocatingCogit can recompile
when discovering a loop that needs a merge so that the register set
computed at the end of a loop can be installed at the head.  Refactor
initializeFixupAt: into it & initializeFixup: to support RAC's recompilation.
Add some inlines to eliminate some thin intermediate functions.
Add support for adding #ifdef's to struct defs and use it to avoid
simNativeStackPtr and simNativeStackSize in non-Lowcode VMs.

Refactoring the register allocation for the Lowcode instructions. The new
register allocators are not yet tested because an error on the previous
does not allow me to generate the sources for testing the refactoring.

Surface Plugin:
Allow defaulting the getSurfaceFormat, lockSurface, unlockSurface and
showSurface functions to 0 to save time if a subset of these are callbacks,
callbacks not being the fastest function invocations on the planet.

IA32ABIPlugin support files.
Rename abi support files to eliminate ia32 on non-ai32 platforms.

Fix bug with type inference for #-.  The difference between two unsigned
values is now interpreted as signed.

Fix bug with inferring return types of methods that return unsigned typed
variables and positive integer constants.  Don't interpret the type of an
integer constant as #sqInt if the method also returns an unsigned.  So
defer considering the non-negative integer return values unless no other
return type information can be found.

  Commit: 34460370a1fa9184aac9bcb0e56c1da09e84fcd4
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-03-13 (Mon, 13 Mar 2017)

  Changed paths:
    M .appveyor.yml
    M platforms/iOS/plugins/CameraPlugin/AVFoundationVideoGrabber.m

  Log Message:
  Merge branch 'Cog' of http://www.github.com/opensmalltalk/vm into Cog

Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/bfe3069a8710...34460370a1fa

More information about the Vm-dev mailing list