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!