[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