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

tarantool / luajit / 13563914180
93%
tarantool/master: 93%

Build:
Build:
LAST BUILD BRANCH: skaplun/gh-4808-jslots-trace-ir-cdata-ctype
DEFAULT BRANCH: tarantool/master
Ran 27 Feb 2025 10:13AM UTC
Jobs 1
Files 89
Run time 1min
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

27 Feb 2025 07:38AM UTC coverage: 92.975% (-0.03%) from 93.002%
13563914180

push

github

Buristan
Fix IR_ABC hoisting.

Reported by pwnhacker0x18. Fixed by Peter Cawley.

(cherry picked from commit 7369eff67)

The `IR_ABC` has 2 different types:
* `IRT_INT` for generic condition check.
* `IRT_P32` as a marker for the invariant checks for upper and lower
  boundaries of the loop index. These checks may be dropped during the
  folding optimization in recording the variant part of the loop.
The checks may be dropped if the instruction is not PHI, the first
operand is invariant, and the upper bound of the array part of the table
isn't changed, or the table itself isn't changed on the trace.

The checks in the `abc_invar` fold rule assume that the constant values
of the first operand of ABC may be dropped. But when this constant value
comes from the folding chain that does CSE, the check is still necessary
if the original instruction (not resulting after loop optimization
substitution and the folding chain) isn't a constant.

Hence, this patch additionally singularizes the `IRT_U32` type for the
`IR_ABC` in the case when the asize is a constant on the trace so it can
be simply dropped from the invariant part of the loop. For `IRT_P32`
type, this patch adds a check that the first operand isn't a constant to
be sure that it isn't a result of the fold chain.

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

Part of tarantool/tarantool#11055

5699 of 6037 branches covered (94.4%)

Branch coverage included in aggregate %.

5 of 5 new or added lines in 2 files covered. (100.0%)

12 existing lines in 2 files now uncovered.

21711 of 23444 relevant lines covered (92.61%)

2962773.5 hits per line

Coverage Regressions

Lines Coverage ∆ File
10
77.8
-1.01% src/lj_api.c
2
92.0
-0.44% src/luajit.c
Jobs
ID Job ID Ran Files Coverage
1 13563914180.1 27 Feb 2025 10:13AM UTC 89
92.98
GitHub Action Run
Source Files on build 13563914180
  • Tree
  • List 89
  • Changed 79
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #13563914180
  • bcb3944c on github
  • Prev Build on tarantool/master (#13335105112)
  • Next Build on skaplun/lj-1194-abc-hoisting (#13969493665)
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