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])! |
Free forum by Nabble | Edit this page |