Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3322.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3322 Author: eem Time: 24 April 2023, 12:57:14.035907 pm UUID: 14111a12-3992-426d-b299-775b91bccb65 Ancestors: VMMaker.oscog-eem.3321
Fix a slang issue with SpurSegmentManager>>segmentContainingObj:
=============== Diff against VMMaker.oscog-eem.3321 ===============
Item was changed: ----- Method: SpurSegmentManager>>segmentContainingObj: (in category 'accessing') ----- segmentContainingObj: objOop "Answer the segment containing an object. This is mostly for assert checking, but variations on the incremental GC may use it in anger. Binary search is (of course) marginally slower than linear search for a single segment (e.g. in a 720k object heap, 67.1ms vs 61.3ms, or 9.5% slower to derive the segment containing every old space entity), but usefully faster for many segments (e.g. 92.7ms vs 116ms, or 20% faster in the same heap extended with enough large arrays to require 11 segments; and this is pessimal; there are fewer objects at high addresses since the large arrays are there)." <export: true> <returnTypeC: #'SpurSegmentInfo *'> | high low mid seg | + <var: 'seg' type: #'SpurSegmentInfo *'> low := 0. mid := numSegments // 2. high := numSegments - 1. [seg := segments at: mid. (self oop: objOop isGreaterThanOrEqualTo: seg segStart) ifTrue: [mid = high ifTrue: [^(self oop: objOop isLessThan: seg segLimit) ifTrue: [seg]] ifFalse: [low := mid. mid := mid + high + 1 // 2]] ifFalse: [high := mid - 1. mid := low + mid // 2]. low <= high] whileTrue. ^nil!
vm-dev@lists.squeakfoundation.org