VM Maker: VMMaker.oscog-nice.2560.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-nice.2560.mcz

commits-2
 
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!