[Vm-dev] VM Maker: VMMaker.oscog-eem.2871.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Nov 9 06:55:37 UTC 2020


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2871.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2871
Author: eem
Time: 8 November 2020, 10:55:27.287421 pm
UUID: 326d8568-fcb5-46f0-bc8f-16f391448dec
Ancestors: VMMaker.oscog-eem.2870

Ugh, the 2 bit shift in the image flags will be the end of me.  Get the file times in utc flag set code correct.  Bah...

=============== Diff against VMMaker.oscog-eem.2870 ===============

Item was changed:
  ----- Method: CoInterpreter>>setImageHeaderFlags: (in category 'internal interpreter access') -----
  setImageHeaderFlags: flags
  	"Set an array of flags indicating various properties of the saved image, responded to on image load.
  	 These are the same as the image header flags shifted right two bits, omitting the fullScreenFlag and float byte order flag.
  	 Bit 0: if set, implies the image's Process class has threadId as its 3rd inst var (zero relative) (meaningful to the MT VM only)
  	 Bit 1: if set, methods that are interpreted will have the flag bit set in their header
  	 Bit 2: if set, implies preempting a process does not put it to the back of its run queue
  	 Bit 3: if set, implies a threaded VM will not disown the VM if owned by the GUI thread (meaningful to the MT VM only)
  	 Bit 4: if set, implies the new finalization scheme where WeakArrays are queued
  	 Bit 5: if set, implies wheel events will be delivered as such and not mapped to arrow key events
  	 Bit 6: if set, implies arithmetic primitives will fail if given arguments of different types (float vs int)
  	 Bit 7: if set, implies file primitives (FilePlugin, FileAttributesPlugin) will answer file times in UTC not local times"
  	flags asUnsignedInteger > 255 ifTrue:
  		[^self primitiveFailFor: PrimErrUnsupported].
  	"processHasThreadId := flags anyMask: 1. specific to CoInterpreterMT"
  	imageHeaderFlags := (flags anyMask: 1)
  							ifTrue: [imageHeaderFlags bitOr: 4]
  							ifFalse: [imageHeaderFlags bitClear: 4].
  	flagInterpretedMethods := flags anyMask: 2.
  	preemptionYields := flags noMask: 4.
  	"noThreadingOfGUIThread := flags anyMask: 8.. specific to CoInterpreterMT"
  	imageHeaderFlags := (flags anyMask: 8)
  							ifTrue: [imageHeaderFlags bitOr: 32]
  							ifFalse: [imageHeaderFlags bitClear: 32].
  	newFinalization := flags anyMask: 16.
  	sendWheelEvents := flags anyMask: 32.
  	primitiveDoMixedArithmetic := flags noMask: 64.
  	imageHeaderFlags := (flags anyMask: 128)
+ 							ifTrue: [imageHeaderFlags bitOr: 512]
+ 							ifFalse: [imageHeaderFlags bitClear: 512]!
- 							ifTrue: [imageHeaderFlags bitOr: 128]
- 							ifFalse: [imageHeaderFlags bitClear: 128]!

Item was changed:
  ----- Method: CoInterpreterMT>>setImageHeaderFlags: (in category 'internal interpreter access') -----
  setImageHeaderFlags: flags
  	"Set an array of flags indicating various properties of the saved image, responded to on image load.
  	 These are the same as the image header flags shifted right two bits, omitting the fullScreenFlag and float byte order flag.
  	 Bit 0: if set, implies the image's Process class has threadId as its 3rd inst var (zero relative)
  	 Bit 1: if set, methods that are interpreted will have the flag bit set in their header
  	 Bit 2: if set, implies preempting a process does not put it to the back of its run queue
  	 Bit 3: if set, implies a threaded VM will not disown the VM if owned by the GUI thread
  	 Bit 4: if set, implies the new finalization scheme where WeakArrays are queued
  	 Bit 5: if set, implies wheel events will be delivered as such and not mapped to arrow key events
  	 Bit 6: if set, implies arithmetic primitives will fail if given arguments of different types (float vs int)
  	 Bit 7: if set, implies file primitives (FilePlugin, FileAttributesPlugin) will answer file times in UTC not local times"
  	flags asUnsignedInteger > 255 ifTrue:
  		[^self primitiveFailFor: PrimErrUnsupported].
  	processHasThreadId := flags anyMask: 1.
  	flagInterpretedMethods := flags anyMask: 2.
  	preemptionYields := flags noMask: 4.
  	noThreadingOfGUIThread := flags anyMask: 8.
  	newFinalization := flags anyMask: 16.
  	sendWheelEvents := flags anyMask: 32.
  	primitiveDoMixedArithmetic := flags noMask: 64.
+ 	imageHeaderFlags := (flags anyMask: 128)
+ 							ifTrue: [imageHeaderFlags bitOr: 512]
+ 							ifFalse: [imageHeaderFlags bitClear: 512]!
- 	imageHeaderFlags := (flags anyMask: 8)
- 							ifTrue: [imageHeaderFlags bitOr: 128]
- 							ifFalse: [imageHeaderFlags bitClear: 128]!

Item was changed:
  ----- Method: StackInterpreter>>fileTimesInUTC (in category 'plugin support') -----
  fileTimesInUTC
  	"Answer if file times, including those from the FilePlugin and FileAttributesPlugin,
  	 should be answered in UTC seconds from the epoch rather than local seconds."
+ 	^imageHeaderFlags anyMask: 512!
- 	^imageHeaderFlags anyMask: 128!

Item was changed:
  ----- Method: StackInterpreter>>setImageHeaderFlags: (in category 'internal interpreter access') -----
  setImageHeaderFlags: flags
  	"Set an array of flags indicating various properties of the saved image, responded to on image load.
  	 These are the same as the image header flags shifted right two bits, omitting the fullScreenFlag and float byte order flag.
  	 Bit 0: if set, implies the image's Process class has threadId as its 3rd inst var (zero relative) (meaningful to the MT VM only)
  	 Bit 1: if set, methods that are interpreted will have the flag bit set in their header (meaningful to the Cog VM only)
  	 Bit 2: if set, implies preempting a process does not put it to the back of its run queue
  	 Bit 3: if set, implies a threaded VM will not disown the VM if owned by the GUI thread (meaningful to the MT VM only)
  	 Bit 4: if set, implies the new finalization scheme where WeakArrays are queued
  	 Bit 5: if set, implies wheel events will be delivered as such and not mapped to arrow key events
  	 Bit 6: if set, implies arithmetic primitives will fail if given arguments of different types (float vs int)
  	 Bit 7: if set, implies file primitives (FilePlugin, FileAttributesPlugin) will answer file times in UTC not local times"
  	flags asUnsignedInteger > 255 ifTrue:
  		[^self primitiveFailFor: PrimErrUnsupported].
  	"processHasThreadId := flags anyMask: 1. specific to CoInterpreterMT"
  	imageHeaderFlags := (flags anyMask: 1)
  							ifTrue: [imageHeaderFlags bitOr: 4]
  							ifFalse: [imageHeaderFlags bitClear: 4].
  	"flagInterpretedMethods := flags anyMask: 2. specific to CoInterpreter"
  	imageHeaderFlags := (flags anyMask: 2)
  							ifTrue: [imageHeaderFlags bitOr: 8]
  							ifFalse: [imageHeaderFlags bitClear: 8].
  	preemptionYields := flags noMask: 4.
  	"noThreadingOfGUIThread := flags anyMask: 8.. specific to CoInterpreterMT"
  	imageHeaderFlags := (flags anyMask: 8)
  							ifTrue: [imageHeaderFlags bitOr: 32]
  							ifFalse: [imageHeaderFlags bitClear: 32].
  	newFinalization := flags anyMask: 16.
  	sendWheelEvents := flags anyMask: 32.
  	primitiveDoMixedArithmetic := flags noMask: 64.
+ 	imageHeaderFlags := (flags anyMask: 128)
+ 							ifTrue: [imageHeaderFlags bitOr: 512]
+ 							ifFalse: [imageHeaderFlags bitClear: 512]!
- 	imageHeaderFlags := (flags anyMask: 8)
- 							ifTrue: [imageHeaderFlags bitOr: 128]
- 							ifFalse: [imageHeaderFlags bitClear: 128]!



More information about the Vm-dev mailing list