[Vm-dev] VM Maker: VMMaker.oscog-eem.2743.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Apr 23 19:52:26 UTC 2020
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2743.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2743
Author: eem
Time: 23 April 2020, 12:52:09.598599 pm
UUID: 6fa490eb-27b9-471e-9e46-6aa4ce54e382
Ancestors: VMMaker.oscog-eem.2742
BIT_IDENTICAL_FLOATING_POINT: Add a feature flag to vmParameterAt: 65 to show that the Vm was compiled with BIT_IDENTICAL_FLOATING_POINT.
Revert the exclusion of the machine code square root funcitons if BIT_IDENTICAL_FLOATING_POINT is defined. sqrt is rounded consistently across platforms.
=============== Diff against VMMaker.oscog-eem.2742 ===============
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatSquareRoot (in category 'primitive generators') -----
genPrimitiveFloatSquareRoot
- <notOption: #BIT_IDENTICAL_FLOATING_POINT>
<option: #DPFPReg0>
| jumpFailAlloc |
<var: #jumpFailAlloc type: #'AbstractInstruction *'>
cogit processorHasDoublePrecisionFloatingPointSupport ifFalse:
[^UnimplementedPrimitive].
self genGetDoubleValueOf: ReceiverResultReg into: DPFPReg0.
cogit SqrtRd: DPFPReg0.
jumpFailAlloc := self
genAllocFloatValue: DPFPReg0
into: SendNumArgsReg
scratchReg: ClassReg
scratchReg: TempReg.
cogit MoveR: SendNumArgsReg R: ReceiverResultReg.
cogit genPrimReturn.
jumpFailAlloc jmpTarget: cogit Label.
^0!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatSquareRoot (in category 'primitive generators') -----
genPrimitiveSmallFloatSquareRoot
- <notOption: #BIT_IDENTICAL_FLOATING_POINT>
<option: #Spur64BitMemoryManager>
<option: #DPFPReg0>
| jumpFailAlloc jumpNegative |
<var: #jumpFailAlloc type: #'AbstractInstruction *'>
<var: #jumpNegative type: #'AbstractInstruction *'>
self genGetSmallFloatValueOf: ReceiverResultReg scratch: SendNumArgsReg into: DPFPReg0.
cogit
XorRd: DPFPReg1 Rd: DPFPReg1; "+0.0 is all zeros"
CmpRd: DPFPReg0 Rd: DPFPReg1.
jumpNegative := cogit JumpFPGreater: 0.
cogit SqrtRd: DPFPReg0.
jumpFailAlloc := self
genAllocFloatValue: DPFPReg0
into: SendNumArgsReg
scratchReg: ClassReg
scratchReg: TempReg.
cogit MoveR: SendNumArgsReg R: ReceiverResultReg.
cogit genPrimReturn.
jumpNegative jmpTarget: (jumpFailAlloc jmpTarget: cogit Label).
^0!
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.
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 2: suffers from a UNIX setitimer signal-based heartbeat"
^objectMemory integerObjectOf: (MULTIPLEBYTECODESETS ifTrue: [1] 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 cppIf: #'ITIMER_HEARTBEAT' ifTrue: [4] ifFalse: [0])!
More information about the Vm-dev
mailing list