[Vm-dev] VM Maker: VMMaker.oscog-eem.1119.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Mar 25 20:18:32 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1119.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1119
Author: eem
Time: 25 March 2015, 1:16:26.195 pm
UUID: 0d6a1369-da4c-4ba3-a388-5100190dc256
Ancestors: VMMaker.oscog-eem.1118
Rescue Spur Cog compilations by removing the
bogus <api> pragma from headerForSlots:hash:format:classIndex:.
Now that headerForSlots:hash:format:classIndex:
exists, move identityHashFullWordShift up to
SpurMemoryManager.
And note that in the last commit, copyToOldSpace:bytes:format:
was marked as <inline: #never> to keep copyAndForward:
slim and to the point.
=============== Diff against VMMaker.oscog-eem.1118 ===============
Item was removed:
- ----- Method: Spur64BitMemoryManager>>identityHashFullWordShift (in category 'header access') -----
- identityHashFullWordShift
- ^32!
Item was changed:
----- Method: SpurMemoryManager>>headerForSlots:hash:format:classIndex: (in category 'header format') -----
headerForSlots: numSlots hash: hash format: formatField classIndex: classIndex
- <api>
"The header format in LSB is
MSB: | 8: numSlots | (on a byte boundary)
| 2 bits | (msb,lsb = {isMarked,?})
| 22: identityHash | (on a word boundary)
| 3 bits | (msb <-> lsb = {isGrey,isPinned,isRemembered}
| 5: format | (on a byte boundary)
| 2 bits | (msb,lsb = {isImmutable,?})
| 22: classIndex | (on a word boundary) : LSB
The remaining bits (7) are used for
isImmutable (bit 23)
isRemembered (bit 29)
isPinned (bit 30)
isGrey (bit 31)
isMarked (bit 55)
leaving 2 unused bits, each next to a 22-bit field, allowing those fields to be
expanded to 23 bits.. The three bit field { isGrey, isPinned, isRemembered }
is for bits that are never set in young objects. This allows the remembered
table to be pruned when full by using these bits as a reference count of
newSpace objects from the remembered table. Objects with a high count
should be tenured to prune the remembered table."
<returnTypeC: #usqLong>
<inline: true>
^ ((self cCoerceSimple: numSlots to: #usqLong) << self numSlotsFullShift)
+ ((self cCoerceSimple: hash to: #usqLong) << self identityHashFullWordShift)
+ (formatField << self formatShift)
+ classIndex!
Item was added:
+ ----- Method: SpurMemoryManager>>identityHashFullWordShift (in category 'header access') -----
+ identityHashFullWordShift
+ ^32!
More information about the Vm-dev
mailing list