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

tarantool / luajit / 6829093450
89%
tarantool/master: 93%

Build:
Build:
LAST BUILD BRANCH: skaplun/luajit-performance-tests
DEFAULT BRANCH: tarantool/master
Ran 10 Nov 2023 08:01PM UTC
Jobs 1
Files 89
Run time 8s
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.137% (-0.06%) from 88.196%
6829093450

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>
(cherry picked from commit 95aa13134)

5320 of 5955 branches covered (0.0%)

Branch coverage included in aggregate %.

20387 of 23212 relevant lines covered (87.83%)

691631.42 hits per line

Uncovered Existing Lines

Lines Coverage ∆ File
1
95.96
-0.05% src/lj_record.c
3
96.09
-0.31% src/lj_asm.c
6
94.74
-4.31% src/lj_str.c
6
82.22
-2.67% src/lj_sysprof.c
7
75.75
-0.55% src/lj_opt_fold.c
Jobs
ID Job ID Ran Files Coverage
1 6829093450.1 10 Nov 2023 08:00PM UTC 89
88.14
GitHub Action Run
Source Files on build 6829093450
  • 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 #6829093450
  • e9c8f46b on github
  • Prev Build on tarantool/release/2.10 (#6828577466)
  • Next Build on tarantool/release/2.10 (#6848089404)
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

© 2026 Coveralls, Inc