Nicolas Cellier uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-nice.2560.mcz ==================== Summary ==================== Name: VMMaker.oscog-nice.2560 Author: nice Time: 11 September 2019, 12:41:07.464927 am UUID: 2ce79000-19fe-a74c-8f1f-f4179a7527b9 Ancestors: VMMaker.oscog-nice.2559 Fix Float nan comparison again... I broke it in VMMaker.oscog-nice.2557 The comment of broken method tells what it should do (and what it did), but no more what it does sorry, I thought I had tested it better... =============== Diff against VMMaker.oscog-nice.2559 =============== Item was changed: ----- Method: CogIA32Compiler>>genJumpFPOrderedAnd:to: (in category 'abstract instructions') ----- genJumpFPOrderedAnd: jumpOpCode to: jumpTarget "Test the comparison status flags ZF PF CF and jump to jumpTarget when + - both Ordered (no nan operand) - a JNP - - both Ordered (no nan opearand) - a JNP - and the other condition (determined by jumpOpCode) is true jumpTarget maybe either an Integer offset, or an AbstractInstruction. This is necessary on Intel IA32 for JB JBE and JE with nan operands, otherwise unordered condition set the three flags to 1 and cause false positive. The implementation use JP to jump over the over test rather than link a JNP and jumpOpCode jumpTarget" <inline: true> <returnTypeC: #'AbstractInstruction *'> <var: #jumpTarget type: #'void *'> | jumpUnordered jumpToTarget | <var: #jumpUnordered type: #'AbstractInstruction *'> <var: #jumpToTarget type: #'AbstractInstruction *'> - jumpToTarget := cogit gen: jumpOpCode operand: jumpTarget asInteger. jumpUnordered := cogit gen: JumpFPUnordered operand: jumpTarget asInteger. + jumpToTarget := cogit gen: jumpOpCode operand: jumpTarget asInteger. + jumpUnordered jmpTarget: cogit Label. - jumpToTarget addDependent: jumpUnordered. ^jumpToTarget! Item was changed: ----- Method: CogX64Compiler>>genJumpFPOrderedAnd:to: (in category 'abstract instructions') ----- genJumpFPOrderedAnd: jumpOpCode to: jumpTarget "Test the comparison status flags ZF PF CF and jump to jumpTarget when + - both Ordered (no nan operand) - a JNP - - both Ordered (no nan opearand) - a JNP - and the other condition (determined by jumpOpCode) is true jumpTarget maybe either an Integer offset, or an AbstractInstruction. This is necessary on Intel IA32 for JB JBE and JE with nan operands, otherwise unordered condition set the three flags to 1 and cause false positive. The implementation use JP to jump over the over test rather than link a JNP and jumpOpCode jumpTarget" <inline: true> <returnTypeC: #'AbstractInstruction *'> <var: #jumpTarget type: #'void *'> | jumpUnordered jumpToTarget | <var: #jumpUnordered type: #'AbstractInstruction *'> <var: #jumpToTarget type: #'AbstractInstruction *'> - jumpToTarget := cogit gen: jumpOpCode operand: jumpTarget asInteger. jumpUnordered := cogit gen: JumpFPUnordered operand: jumpTarget asInteger. + jumpToTarget := cogit gen: jumpOpCode operand: jumpTarget asInteger. + jumpUnordered jmpTarget: cogit Label. - jumpToTarget addDependent: jumpUnordered. ^jumpToTarget! |
Free forum by Nabble | Edit this page |