[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