Branch: refs/heads/SpurPlanningCompactor Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: 13cfe4e0b4ac44735a46dd5a4bcee49c7ba541cf https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/13cfe4e0b4ac44735a4... Author: Eliot Miranda eliot.miranda@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/192b9ddc4db5e3c952a... Author: Eliot Miranda eliot.miranda@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/014bd126eeb734c24d0... Author: Eliot Miranda eliot.miranda@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...014...
vm-dev@lists.squeakfoundation.org