David T. Lewis uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker-dtl.441.mcz
==================== Summary ====================
Name: VMMaker-dtl.441 Author: dtl Time: 21 December 2023, 1:16:30.261 pm UUID: 0fd710ff-2d5f-4e78-8a09-40aae16e8bf2 Ancestors: VMMaker-dtl.440
VMMaker 4.20.7 - Fix myList handling in transferTo: All opensmalltalk-vm VMs set myList to nil in transferTo, classic VM did not. Process scheduling and debugger in recent images require this now. Adopt fix from SqueakJS, with change applicable to all non-closure images. SqueakJS commit is at https://github.com/codefrau/SqueakJS/commit/4f915baaaac3a5d078b09eb7c3abd55c... Discussion on vm-dev Re: [SqueakJS] Smalltalk Debugger support https://lists.squeakfoundation.org/archives/list/vm-dev@lists.squeakfoundati...
=============== Diff against VMMaker-dtl.440 ===============
Item was added: + ----- Method: ContextInterpreter>>oldPrims (in category 'primitive support') ----- + oldPrims + "True if the running image has an image format that requires an older set of primitives. + Refer to the SqueakJS implementation for a better understanding of older image support, + and see class PrimitiveTableHistory for historical record of primitives used in various + versions of the VM. See class ImageFormat for explaination of the image format number + encoding." + + "ImageFormat knownVersionNumbers + select: [ :i | ( ImageFormat fromInteger: i) + requiresClosureSupport not] ==> #(6502 68000)" + + "In SqueakJS, image format 6501 is also recognized: + this.hasClosures = !!([6501, 6502, 68000].indexOf(version) >= 0);" + + ^ imageFormatVersionNumber = 6501 + or: [imageFormatVersionNumber = 6502 + or: [imageFormatVersionNumber = 68000]]!
Item was changed: ----- Method: ContextInterpreter>>transferTo: (in category 'process primitive support') ----- transferTo: aProc "Record a process to be awoken on the next interpreter cycle. ikp 11/24/1999 06:07 -- added hook for external runtime compiler " | sched oldProc newProc | newProc := aProc. sched := self schedulerPointer. oldProc := objectMemory fetchPointer: ActiveProcessIndex ofObject: sched. objectMemory storePointer: ActiveProcessIndex ofObject: sched withValue: newProc. + self oldPrims ifFalse: [ + "Earlier images did not require this but process scheduling has changed so ensure + that myList is nil here. The check for oldPrims may be unnecessary, but is harmless. " + objectMemory storePointerUnchecked: MyListIndex ofObject: newProc withValue: objectMemory getNilObj]. compilerInitialized ifTrue: [self compilerProcessChange: oldProc to: newProc] ifFalse: [objectMemory storePointer: SuspendedContextIndex ofObject: oldProc withValue: activeContext. self newActiveContext: (objectMemory fetchPointer: SuspendedContextIndex ofObject: newProc). objectMemory storePointer: SuspendedContextIndex ofObject: newProc withValue: objectMemory getNilObj]. reclaimableContextCount := 0!
Item was changed: ----- Method: VMMaker class>>versionString (in category 'version testing') ----- versionString
"VMMaker versionString"
+ ^'4.20.7'! - ^'4.20.6'!
vm-dev@lists.squeakfoundation.org