[Vm-dev] VM Maker: VMMaker.oscog-mt.3176.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Apr 6 12:54:40 UTC 2022


Marcel Taeumel uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-mt.3176.mcz

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

Name: VMMaker.oscog-mt.3176
Author: mt
Time: 6 April 2022, 2:54:12.612017 pm
UUID: e0dad7c2-84d4-c740-86d3-f270ffc43add
Ancestors: VMMaker.oscog-mt.3175

Fixes v3.cog and v3.stack, which both do not specify the IMMUTABILITY option and thus there is no #define IMMUTABILITY in their generated interp.h, which will then make the generated sources for getCogVMFeatureFlags not compile.

Note that this seems to be a little bit different compared to, e.g., BIT_IDENTICAL_FLOATING_POINT. Not sure whether we want to discriminate between "defined" and "not defined" or "defined && 1" and "not defined || defined && !1". Seems to be mixed up at the moment. In any case, we must use a #cppIf:ifTrue:ifFalse: guard.

=============== Diff against VMMaker.oscog-mt.3175 ===============

Item was changed:
  ----- Method: StackInterpreter>>getCogVMFeatureFlags (in category 'internal interpreter access') -----
  getCogVMFeatureFlags
  	"Answer an array of flags indicating various optional features of the Cog VM.
  	 If the bit is set then...
  	 Bit 0: supports two bytecode sets (MULTIPLEBYTECODESETS)
  	 Bit 1: supports immutablity (IMMUTABILITY)
  	 Bit 2: suffers from a UNIX setitimer signal-based heartbeat
  	 Bit 3: the VM provides cross-platform bit-identical floating point
  	 Bit 4: the VM can catch exceptions in FFI calls and answer them as primitive failures
  	 Bit 5: the VM has suspend primitives 568 & 578 which back up a process to before the wait if it was waiting on a condition variable"
  	^objectMemory integerObjectOf: (MULTIPLEBYTECODESETS ifTrue: [1] ifFalse: [0])
+ 									+ (self cppIf: #IMMUTABILITY ifTrue: [IMMUTABILITY ifTrue: [2] ifFalse: [0]] ifFalse: [0])
- 									+ (IMMUTABILITY ifTrue: [2] ifFalse: [0])
  									+ (self cppIf: #'ITIMER_HEARTBEAT' ifTrue: [4] ifFalse: [0])
  									+ (self cppIf: #'BIT_IDENTICAL_FLOATING_POINT' ifTrue: [8] ifFalse: [0])
  									+ (self ioCanCatchFFIExceptions ifTrue: [16] ifFalse: [0])
  									+ (RevisedSuspend ifTrue: [32] ifFalse: [0])!



More information about the Vm-dev mailing list