VM Maker: VMMaker.oscog-eem.2409.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2409.mcz

commits-2
 
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!