[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 13cfe4: CogVM source as per VMMaker.oscogSPC-eem.2120

GitHub noreply at github.com
Mon Feb 6 21:04:17 UTC 2017


  Branch: refs/heads/SpurPlanningCompactor
  Home:   https://github.com/OpenSmalltalk/opensmalltalk-vm
  Commit: 13cfe4e0b4ac44735a46dd5a4bcee49c7ba541cf
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/13cfe4e0b4ac44735a46dd5a4bcee49c7ba541cf
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-02-05 (Sun, 05 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

  Log Message:
  -----------
  CogVM source as per VMMaker.oscogSPC-eem.2120

Temporary branch for SpurPlanningCompactor as default compactor.

SpurPlanningCompactor:
Get the transition from first to subsequent passes correct (scan starts at
firstMobileObject; previous pass must initialize, but not free the memory at
toFinger, and set firstFreeObject to this; all objects from firstFreeObject
to lastMobileObject must be unmarked to avoid copying them twice).

Optimize the three mobile passes to cache startOfPreviousPin since if there
are pins, most of the moves will occur under a pin.

Rename onePass to finalPass in them because this is what it really means.

Remove reliance on noMobileObjectsAfter:.

Simplify the termination condition for copyAndUnmarkMobileObjects by introducing
allOldSpaceEntitiesForCompactingFrom:to:do:.  Replace freeFrom:upTo:previousPin:
with freeFrom:upTo:nextObject: cuz parsing the objects beyond the lastMobileObject
always needs a pointer to an object in the sequence.

freeFrom:upTo:nextObject: must respect the limit it is given and not free beyond
it.  Doing so causes double freeing.  It must guard against trying to free zero
bytes at the end of memory.

coaleseFrom: must take a start address, not an object.

unmarkObjectsAfterLastMobileObject must free unmarked objects.
updatePointersInObjectsOverflowingSavedFirstFieldsSpace must ignore unmarked
objects.

validRelocationPlanInPass: must be written just so to avoid an empty
savedFirstFieldsSpace causing unsigned integer overflow.

updateSavedFirstFieldsSpaceIfNecessary must not reset the free space carefully
built up by previous compaction passes.

SpurMemoryManager:
Fix a regression with classAtIndex:; it used to be inlined but the extra phrase
in the assert lifted it above the inlining level.

Make printOopsFrom:to: skip free space instead of printing an empty object every
16 bytes.

resetFreeLists should reset the freeListsMask! (old bug)

Have printFreeChunk:printAsTreeNode: print the address after for tree chunks.

Put a limit on valid class indices in the assert in classAtIndex:

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

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


  Commit: 192b9ddc4db5e3c952ad04d1ae4926876ee95844
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/192b9ddc4db5e3c952ad04d1ae4926876ee95844
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-02-05 (Sun, 05 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

  Log Message:
  -----------
  CogVM source as per VMMaker.oscogSPC-eem.2121

Temporary branch for SpurPlanningCompactor as default compactor.
Fix a couple of typos that cause the generated C code to mis- or not compile.


  Commit: 014bd126eeb734c24d0463f56a1b2c48070762d7
      https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/014bd126eeb734c24d0463f56a1b2c48070762d7
  Author: Eliot Miranda <eliot.miranda at gmail.com>
  Date:   2017-02-06 (Mon, 06 Feb 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
    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.oscogSPC-eem.2122

SpurPlanningCompactor:
Fix compaction with a fully compacted heap (lastMobileObject may be nil).

SpurMemoryManager:
add a VM parameter to collect the time spent in compaction (a subset of the time
spent in fullGC).

The system now holds up while rnning the Squeak test suite.


Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/3689748e3dd6...014bd126eeb7


More information about the Vm-dev mailing list