[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 1675e3: CogVM source as per VMMaker.oscog-eem.2126

GitHub noreply at github.com
Wed Feb 15 01:31:23 UTC 2017


  Branch: refs/heads/Cog
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 1675e3586bbef2ff198e683ea7839ac1b41fa491
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/1675e3586bbef2ff198e683ea7839ac1b41fa491
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-02-09 (Thu, 09 Feb 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 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 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 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-eem.2126

StackInterpreter:
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.

SpurMemoryManager:
add a VM parameter to collect the time spent in compaction (a subset of the time
spent in fullGC).
Make printOopsFrom:to: skip free space instead of printing an empty object
every 16 bytes.
Add printOopsSuchThat: for debugging.
Have printEntity: print header flags for puns also.

Cogit:
Refactor fixupAt: & initializeFixupAt: to take bytecode PCs not indexes.  Add
fixupAtIndex: as the method that takes an index.
Refactor sends of ensure[NonMerge]FixupAt:, moving the ever-present
"- initialPC" into ensure[NonMerge]FixupAt:.

Fixed a bug in read-only object where the attemptToAssign:withIndex: call-back
would be called with a 1-based index by the interpreter and 0-based index by
the JIT. Everybody now calls it with 1-based index.

Rename offsetCacheTagAndCouldBeObjectAt:annotation:into: to the more accurate
entryCacheTagAndCouldBeObjectAt:annotation:into: and extract
entryPointTagIsSelector: for use below.

Fix the check for valid selectors for 64-bits (unlinked cacheTags are
literal/specialSelector indices) in checkIfValidOopRefAndTarget:pc:cogMethod:.

Add leak checking of CogMethod counters and implicit reveiver caches.

SistaCogit:
Fix coging optimized methods with lots of literals.

Decode a method header when doing longPrintOop:.

Fix the ssFlushTo: call in genExtJumpIfNotInstanceOfBehaviorsBytecode

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

Fix conditional branches following inline primitive comparisons given the branch
following logic.  The unconditional branch following can only be elided if
jumping to the bytecode following the conditional branch, which may no longer be
the case with branch following.  To this end refactor
nextDescriptorAndExtensionsInto: into nextDescriptorExtensionsAndNextPCInto:.

Changed the machine code compilation of BranchIfInstanceOf if there is one
Behavior and the behavior is UndefinedObject, True or False to compile to a
direct comparison to the unique instances instead of class index check. I am not
sure it makes sense to add these cases when there are multiple behaviors.

Added a new trampoline to create new hashes. Unfortunately I did not succeed in
using the trampoline in the existing primitives, so I made the trampoline Sista
only and it's used in the inlined primitive.

Newspeak/Slang:

Fix printDecodeMethodHeaderOop: for the Newspeak VM.  Add type inferrence for
TBraceNode, including casting the default value to a pointer type in
var := expr caseOf: { ... }.

Slang:
Don't localize globals that are used in only one funciton if they are only
written to.  Such variables are typically for debugging (observation).


  Commit: 92e1340dae91e40aebc0e03b017b7c4702019729
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/92e1340dae91e40aebc0e03b017b7c4702019729
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-02-14 (Tue, 14 Feb 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 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 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 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-eem.2129

InterpreterPrimitives:
Fix slip in primitiveSmallFloatSquareRoot
Simplify the boxed and immediate unary float primitives to do less stack
manipulations and/or primFailCode testing.

64-bit Cogit:
Fix a regression in CogX64Compiler>>concretizeConvertRRd and a bug in
CogX64Compiler>>concretizeConvertRdR.
Fix a bug in genPrimitiveSmallFloatSquareRoot. The primitive must fail for
negative arguments.

Cogit:
Fix some C compilation warnings due to mismatched pointer types.
(Slang) Get methods that return AbstractInstructions to be inlinable.

StackToRegisterMappingCogit:
Simplify genForwardersInlinedIdenticalOrNotIf: to avoid an extra call of
genEnsureOopInRegNotForwarded:...
Generate slightly better code in genSpecialSelectorComparison
Squash jump L1; nop; L1 to nop; nop (again as part of jump following).
Don't bother to inline genEnsureOopInRegNotForwarded:scratchReg:ifForwarder:
ifNotForwarder:, but do inline genEnsureOopInRegNotForwarded:scratchReg:
jumpBackTo: which is simply a call of the other.


  Commit: 7037091c011bbb601c7f718ce111332af5c86f6c
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/7037091c011bbb601c7f718ce111332af5c86f6c
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-02-14 (Tue, 14 Feb 2017)

  Changed paths:
    M .travis.yml
    A build.linux32x86/pharo.cog.spur.lowcode/build.assert.itimerheartbeat/mvm
    A build.linux32x86/pharo.cog.spur.lowcode/build.assert/mvm
    A build.linux32x86/pharo.cog.spur.lowcode/build.debug.itimerheartbeat/mvm
    A build.linux32x86/pharo.cog.spur.lowcode/build.debug/mvm
    A build.linux32x86/pharo.cog.spur.lowcode/build.itimerheartbeat/mvm
    A build.linux32x86/pharo.cog.spur.lowcode/build/mvm
    A build.linux32x86/pharo.cog.spur.lowcode/makeallclean
    A build.linux32x86/pharo.cog.spur.lowcode/makealldirty
    A build.linux32x86/pharo.cog.spur.lowcode/plugins.ext
    A build.linux32x86/pharo.cog.spur.lowcode/plugins.int
    A build.linux32x86/pharo.stack.spur.lowcode/build.assert.itimerheartbeat/mvm
    A build.linux32x86/pharo.stack.spur.lowcode/build.assert/mvm
    A build.linux32x86/pharo.stack.spur.lowcode/build.debug.itimerheartbeat/mvm
    A build.linux32x86/pharo.stack.spur.lowcode/build.debug/mvm
    A build.linux32x86/pharo.stack.spur.lowcode/build.itimerheartbeat/mvm
    A build.linux32x86/pharo.stack.spur.lowcode/build/mvm
    A build.linux32x86/pharo.stack.spur.lowcode/makeallclean
    A build.linux32x86/pharo.stack.spur.lowcode/makealldirty
    A build.linux32x86/pharo.stack.spur.lowcode/plugins.ext
    A build.linux32x86/pharo.stack.spur.lowcode/plugins.int
    A build.macos32x86/pharo.cog.spur.lowcode/Makefile
    A build.macos32x86/pharo.cog.spur.lowcode/mvm
    A build.macos32x86/pharo.cog.spur.lowcode/plugins.ext
    A build.macos32x86/pharo.cog.spur.lowcode/plugins.int
    A build.macos32x86/pharo.stack.spur.lowcode/Makefile
    A build.macos32x86/pharo.stack.spur.lowcode/mvm
    A build.macos32x86/pharo.stack.spur.lowcode/plugins.ext
    A build.macos32x86/pharo.stack.spur.lowcode/plugins.int
    M build.macos32x86/pharo.stack.spur/Makefile
    A build.macos64x64/pharo.cog.spur.lowcode/Makefile
    A build.macos64x64/pharo.cog.spur.lowcode/mvm
    A build.macos64x64/pharo.cog.spur.lowcode/plugins.ext
    A build.macos64x64/pharo.cog.spur.lowcode/plugins.int
    A build.macos64x64/pharo.stack.spur.lowcode/Makefile
    A build.macos64x64/pharo.stack.spur.lowcode/mvm
    A build.macos64x64/pharo.stack.spur.lowcode/plugins.ext
    A build.macos64x64/pharo.stack.spur.lowcode/plugins.int
    A build.macos64x64/pharo.stack.spur/Makefile
    A build.macos64x64/pharo.stack.spur/mvm
    A build.macos64x64/pharo.stack.spur/plugins.ext
    A build.macos64x64/pharo.stack.spur/plugins.int
    A build.win32x86/pharo.cog.spur.lowcode/Makefile
    A build.win32x86/pharo.cog.spur.lowcode/Pharo.def.in
    A build.win32x86/pharo.cog.spur.lowcode/Pharo.exe.manifest
    A build.win32x86/pharo.cog.spur.lowcode/Pharo.ico
    A build.win32x86/pharo.cog.spur.lowcode/Pharo.rc
    A build.win32x86/pharo.cog.spur.lowcode/mvm
    A build.win32x86/pharo.cog.spur.lowcode/plugins.ext
    A build.win32x86/pharo.cog.spur.lowcode/plugins.int
    A build.win32x86/squeak.cog.spur.lowcode/Croquet.def.in
    A build.win32x86/squeak.cog.spur.lowcode/Croquet.exe.manifest
    A build.win32x86/squeak.cog.spur.lowcode/Croquet.ico
    A build.win32x86/squeak.cog.spur.lowcode/Croquet.rc
    A build.win32x86/squeak.cog.spur.lowcode/GreenCogSqueak.ico
    A build.win32x86/squeak.cog.spur.lowcode/Makefile
    A build.win32x86/squeak.cog.spur.lowcode/Squeak.def.in
    A build.win32x86/squeak.cog.spur.lowcode/Squeak.exe.manifest
    A build.win32x86/squeak.cog.spur.lowcode/Squeak.rc
    A build.win32x86/squeak.cog.spur.lowcode/mvm
    A build.win32x86/squeak.cog.spur.lowcode/plugins.ext
    A build.win32x86/squeak.cog.spur.lowcode/plugins.int
    A build.win32x86/squeak.cog.spur.lowcode/squeak.ico
    M platforms/Cross/plugins/IA32ABI/x64ia32abicc.c
    M platforms/Cross/vm/sqLowcodeFFI-i386.h
    M platforms/Cross/vm/sqLowcodeFFI-x86_64.h
    M platforms/Cross/vm/sqMemoryAccess.h
    M platforms/iOS/vm/Common/Classes/sqSqueakMainApplication+attributes.m
    M platforms/unix/vm/sqConfig.h
    M specs/lowcode.xml
    A spurlowcode64src/examplePlugins.ext
    A spurlowcode64src/examplePlugins.int
    A spurlowcode64src/vm/cogit.c
    A spurlowcode64src/vm/cogit.h
    A spurlowcode64src/vm/cogitX64.c
    A spurlowcode64src/vm/cogmethod.h
    A spurlowcode64src/vm/cointerp.c
    A spurlowcode64src/vm/cointerp.h
    A spurlowcode64src/vm/exampleSqNamedPrims.h
    A spurlowcode64src/vm/gcc3x-cointerp.c
    A spurlowcode64src/vm/interp.h
    A spurlowcode64src/vm/vmCallback.h
    A spurlowcodesrc/examplePlugins.ext
    A spurlowcodesrc/examplePlugins.int
    A spurlowcodesrc/vm/cogit.c
    A spurlowcodesrc/vm/cogit.h
    A spurlowcodesrc/vm/cogitARMv5.c
    A spurlowcodesrc/vm/cogitIA32.c
    A spurlowcodesrc/vm/cogitMIPSEL.c
    A spurlowcodesrc/vm/cogmethod.h
    A spurlowcodesrc/vm/cointerp.c
    A spurlowcodesrc/vm/cointerp.h
    A spurlowcodesrc/vm/exampleSqNamedPrims.h
    A spurlowcodesrc/vm/gcc3x-cointerp.c
    A spurlowcodesrc/vm/interp.h
    A spurlowcodesrc/vm/vmCallback.h
    A spurlowcodestack64src/examplePlugins.ext
    A spurlowcodestack64src/examplePlugins.int
    A spurlowcodestack64src/vm/exampleSqNamedPrims.h
    A spurlowcodestack64src/vm/gcc3x-interp.c
    A spurlowcodestack64src/vm/interp.c
    A spurlowcodestack64src/vm/interp.h
    A spurlowcodestack64src/vm/vmCallback.h
    A spurlowcodestacksrc/examplePlugins.ext
    A spurlowcodestacksrc/examplePlugins.int
    A spurlowcodestacksrc/vm/exampleSqNamedPrims.h
    A spurlowcodestacksrc/vm/gcc3x-interp.c
    A spurlowcodestacksrc/vm/interp.c
    A spurlowcodestacksrc/vm/interp.h
    A spurlowcodestacksrc/vm/vmCallback.h

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


Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/e7268a6b24e6...7037091c011b


More information about the Vm-dev mailing list