• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tarantool / luajit / 6829093501
93%

Build:
DEFAULT BRANCH: tarantool/master
Ran 10 Nov 2023 08:03PM UTC
Jobs 1
Files 89
Run time 13s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

10 Nov 2023 07:50PM UTC coverage: 88.511% (+0.01%) from 88.5%
6829093501

push

github

igormunkin
IR_MIN/IR_MAX is non-commutative due to underlying FPU ops.

Thanks to Peter Cawley.

(cherry-picked from commit 7a2b83a0c)

Even after the commit c05d10330 ("Fix
math.min()/math.max() inconsistencies."), some of the corner cases (see
tests in the commit for details) for `math.min()`/`math.max()` still
inconsistent in the JIT and the VM. This happens because `IR_MIN` and
`IR_MAX` are marked as commutative, so their operands were swapped by
`asm_swapops()`. As a result, because `minsd`[1]/`maxsd`[2] instructions
don't change the sign byte of the destination register, its sign is
preserved if we compare 0 with -0. When we compare something with NaN,
the second source operand (either a NaN or a valid floating-point value)
is written to the result. Hence, swapping the operands changed the
resulting value.

This patch removes the commutative flag from the aforementioned IRs to
prevent swapping of their operands.

[1]: https://c9x.me/x86/html/file_module_x86_id_173.html
[2]: https://c9x.me/x86/html/file_module_x86_id_168.html

Sergey Kaplun:
* added the description and the test for the problem

Part of tarantool/tarantool#9145

Reviewed-by: Maxim Kokryashkin <m.kokryashkin@tarantool.org>
Reviewed-by: Sergey Bronnikov <sergeyb@tarantool.org>
Signed-off-by: Igor Munkin <imun@tarantool.org>

5361 of 5975 branches covered (0.0%)

Branch coverage included in aggregate %.

20554 of 23304 relevant lines covered (88.2%)

2759745.13 hits per line

Uncovered Existing Lines

Lines Coverage ∆ File
1
72.73
0.08% src/lj_crecord.c
1
95.97
-0.05% src/lj_record.c
3
96.17
-0.3% src/lj_asm.c
4
94.74
-2.87% src/lj_str.c
Jobs
ID Job ID Ran Files Coverage
1 6829093501.1 10 Nov 2023 08:03PM UTC 89
88.51
GitHub Action Run
Source Files on build 6829093501
  • Tree
  • List 89
  • Changed 86
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #6829093501
  • 95aa1313 on github
  • Prev Build on tarantool/master (#6828577434)
  • Next Build on tarantool/master (#6848089359)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc