Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1447.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1447 Author: eem Time: 1 September 2015, 11:38:44.935 am UUID: 21232acb-44b6-4dc4-a345-108a56a916a8 Ancestors: VMMaker.oscog-eem.1446
Whoops! Several of the flags were inverted when computing the flag word written to the image header. Also, queueMourner: must check for an empty or full queue.
=============== Diff against VMMaker.oscog-eem.1446 ===============
Item was changed: ----- Method: CoInterpreter>>getImageHeaderFlags (in category 'image save/restore') ----- getImageHeaderFlags "Answer the flags that are contained in the 7th long of the image header." ^fullScreenFlag "0 or 1" + (VMBIGENDIAN ifTrue: [0] ifFalse: [2]) "this is the imageFloatsLittleEndian flag" + (flagInterpretedMethods ifTrue: [8] ifFalse: [0]) + (preemptionYields ifTrue: [0] ifFalse: [16r10]) + + (newFinalization ifTrue: [16r40] ifFalse: [0]) - + (newFinalization ifTrue: [0] ifFalse: [16r40]) + (imageHeaderFlags bitClear: 16r5B) "these are any flags we do not recognize"!
Item was changed: ----- Method: CoInterpreterMT>>getImageHeaderFlags (in category 'image save/restore') ----- getImageHeaderFlags "Answer the flags that are contained in the 7th long of the image header." ^fullScreenFlag "0 or 1" + (VMBIGENDIAN ifTrue: [0] ifFalse: [2]) "this is the imageFloatsLittleEndian flag" + + (processHasThreadId ifTrue: [4] ifFalse: [0]) - + (processHasThreadId ifTrue: [0] ifFalse: [4]) + (flagInterpretedMethods ifTrue: [8] ifFalse: [0]) + (preemptionYields ifTrue: [0] ifFalse: [16r10]) + (noThreadingOfGUIThread ifTrue: [16r20] ifFalse: [0]) + + (newFinalization ifTrue: [16r40] ifFalse: [0]) - + (newFinalization ifTrue: [0] ifFalse: [16r40]) + (imageHeaderFlags bitClear: 16r7F) "these are any flags we do not recognize"!
Item was removed: - ----- Method: SpurMemoryManager>>queueEphemeron: (in category 'weakness and ephemerality') ----- - queueEphemeron: anEphemeron - "Add the ephemeron to the queue and make it non-ephemeral, to avoid subsequent firing. - Alas this means that other ephemerons on the same object not identified in this sccavenge - or GC will not fire until later. But that's life." - self assert: ((self isNonImmediate: anEphemeron) - and: [(self formatOf: anEphemeron) = self ephemeronFormat]). - self deny: (self is: anEphemeron onObjStack: mournQueue). - self push: anEphemeron onObjStack: mournQueue. - self setFormatOf: anEphemeron to: self nonIndexablePointerFormat!
Item was changed: ----- Method: SpurMemoryManager>>queueMourner: (in category 'weakness and ephemerality') ----- queueMourner: anEphemeronOrWeakArray "Add the ephemeron to the queue and make it non-ephemeral, to avoid subsequent firing. Alas this means that other ephemerons on the same object not identified in this sccavenge or GC will not fire until later. But that's life." self assert: ((self isNonImmediate: anEphemeronOrWeakArray) and: [(self formatOf: anEphemeronOrWeakArray) = self ephemeronFormat or: [(self formatOf: anEphemeronOrWeakArray) = self weakArrayFormat]]). self deny: (self is: anEphemeronOrWeakArray onObjStack: mournQueue). + self ensureRoomOnObjStackAt: MournQueueRootIndex. self push: anEphemeronOrWeakArray onObjStack: mournQueue. (self formatOf: anEphemeronOrWeakArray) = self ephemeronFormat ifTrue: [self setFormatOf: anEphemeronOrWeakArray to: self nonIndexablePointerFormat]!
Item was changed: ----- Method: StackInterpreter>>getImageHeaderFlags (in category 'image save/restore') ----- getImageHeaderFlags "Answer the flags that are contained in the 7th long of the image header." ^fullScreenFlag "0 or 1" + (VMBIGENDIAN ifTrue: [0] ifFalse: [2]) "this is the imageFloatsLittleEndian flag" + (preemptionYields ifTrue: [0] ifFalse: [16r10]) + + (newFinalization ifTrue: [16r40] ifFalse: [0]) - + (newFinalization ifTrue: [0] ifFalse: [16r40]) + (imageHeaderFlags bitClear: 16r53) "these are any flags we do not recognize"!
vm-dev@lists.squeakfoundation.org