Commit 67956c6
committed
Fix JS number rounding on x87
Disable 80-bits extended precision, use standard 64-bits precision.
The extra precision affects rounding and is user-observable, meaning
it causes test262 tests to fail.
The rounding mode is a per-CPU (or, more accurately, per-FPU) property,
and since quickjs is often used as a library, take care to tweak the FPU
control word before sensitive operations, and restore it afterwards.
Only affects x87. SSE is IEEE-754 conforming.
Fixes: #12361 parent d368b44 commit 67956c6
4 files changed
+49
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| |||
72 | 73 | | |
73 | 74 | | |
74 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
75 | 81 | | |
76 | 82 | | |
77 | 83 | | |
| |||
117 | 123 | | |
118 | 124 | | |
119 | 125 | | |
120 | | - | |
| 126 | + | |
| 127 | + | |
121 | 128 | | |
122 | 129 | | |
123 | 130 | | |
| |||
128 | 135 | | |
129 | 136 | | |
130 | 137 | | |
131 | | - | |
| 138 | + | |
| 139 | + | |
132 | 140 | | |
133 | 141 | | |
134 | 142 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
62 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
63 | 67 | | |
64 | 68 | | |
65 | 69 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
634 | 634 | | |
635 | 635 | | |
636 | 636 | | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
637 | 657 | | |
638 | 658 | | |
639 | 659 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17998 | 17998 | | |
17999 | 17999 | | |
18000 | 18000 | | |
| 18001 | + | |
18001 | 18002 | | |
18002 | 18003 | | |
| 18004 | + | |
18003 | 18005 | | |
18004 | 18006 | | |
18005 | 18007 | | |
| |||
18066 | 18068 | | |
18067 | 18069 | | |
18068 | 18070 | | |
| 18071 | + | |
18069 | 18072 | | |
18070 | 18073 | | |
| 18074 | + | |
18071 | 18075 | | |
18072 | 18076 | | |
18073 | 18077 | | |
| |||
18098 | 18102 | | |
18099 | 18103 | | |
18100 | 18104 | | |
| 18105 | + | |
18101 | 18106 | | |
| 18107 | + | |
18102 | 18108 | | |
18103 | 18109 | | |
18104 | 18110 | | |
| |||
52277 | 52283 | | |
52278 | 52284 | | |
52279 | 52285 | | |
| 52286 | + | |
52280 | 52287 | | |
| 52288 | + | |
52281 | 52289 | | |
52282 | 52290 | | |
52283 | 52291 | | |
| |||
52287 | 52295 | | |
52288 | 52296 | | |
52289 | 52297 | | |
52290 | | - | |
| 52298 | + | |
52291 | 52299 | | |
52292 | 52300 | | |
52293 | 52301 | | |
| |||
52319 | 52327 | | |
52320 | 52328 | | |
52321 | 52329 | | |
52322 | | - | |
| 52330 | + | |
52323 | 52331 | | |
52324 | 52332 | | |
52325 | 52333 | | |
52326 | 52334 | | |
52327 | 52335 | | |
52328 | 52336 | | |
52329 | | - | |
| 52337 | + | |
| 52338 | + | |
| 52339 | + | |
| 52340 | + | |
52330 | 52341 | | |
52331 | 52342 | | |
52332 | 52343 | | |
| |||
0 commit comments