[Vm-dev] VM Maker: VMMaker.oscog-eem.2409.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Jun 7 23:02:39 UTC 2018


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2409.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2409
Author: eem
Time: 7 June 2018, 4:02:08.947009 pm
UUID: 679840b7-ac59-484f-a7aa-6bdb03ac1eb4
Ancestors: VMMaker.oscog-eem.2408

Fix static selector mapping in SpurCompactor; it needs to handle inheritance (SpurSelectiveCompactor inherits from SpurSweeper).

Spur64BitMemoryManager>>bytesBigEnoughForPrevPointer: shouldn't use =/~= for robustness.

=============== Diff against VMMaker.oscog-eem.2408 ===============

Item was changed:
  ----- Method: Spur64BitMemoryManager>>bytesBigEnoughForPrevPointer: (in category 'free space') -----
  bytesBigEnoughForPrevPointer: chunkBytes
+ 	"To have a prev pointer, which follows the next pointer, we need at least two slots."
+ 	^chunkBytes > (self baseHeaderSize + self allocationUnit)!
- 	^ chunkBytes ~= (self baseHeaderSize + self allocationUnit)!

Item was changed:
  ----- Method: SpurCompactor class>>declareCVarsIn: (in category 'translation') -----
  declareCVarsIn: aCCodeGenerator
  	"If subclasses are being used but are not the compactorClass itself
+ 	 then statically resolve their api selectors."
+ 	(self inheritsFrom: SpurCompactor) ifTrue: "leave SpurCompactor methods alone"
+ 		[(SpurMemoryManager compactorClass includesBehavior: self) ifFalse: "only map methods not in the compactorClass"
+ 			[#(compact biasForGC biasForSnapshot remapObj: shouldRemapObj:) do: "map the public api methods only"
+ 				[:selectorToStaticallyResolve|
+ 				 aCCodeGenerator
+ 					staticallyResolveMethodNamed: selectorToStaticallyResolve
+ 					forClass: self
+ 					to: (self staticallyResolvePolymorphicSelector: selectorToStaticallyResolve)]]]!
- 	 then staticvally resolve their api selectors."
- 	((self inheritsFrom: SpurCompactor)
- 	 and: [(InitializationOptions at: #compactorClass) ~= self name]) ifTrue:
- 		[#(compact biasForGC biasForSnapshot remapObj: shouldRemapObj:) do:
- 			[:selectorToStaticallyResolve|
- 			 aCCodeGenerator
- 				staticallyResolveMethodNamed: selectorToStaticallyResolve
- 				forClass: self
- 				to: (self staticallyResolvePolymorphicSelector: selectorToStaticallyResolve)]]!

Item was changed:
  ----- Method: SpurMemoryManager>>bytesBigEnoughForPrevPointer: (in category 'free space') -----
  bytesBigEnoughForPrevPointer: chunkBytes
+ 	"Answer if chunkBytes (which includes an object header) has room enough for both
+ 	 a next free chunk and a previous free chunk pointer.  This is always true in 32-bits,
+ 	 but in 64-bits requires at least 24 bytes."
  	self subclassResponsibility!



More information about the Vm-dev mailing list