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

tarantool / luajit / 16491528542
93%
tarantool/master: 93%

Build:
Build:
LAST BUILD BRANCH: skaplun/gh-4808-jslots-trace-ir-cdata-ctype
DEFAULT BRANCH: tarantool/master
Ran 24 Jul 2025 08:19AM 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

24 Jul 2025 08:14AM UTC coverage: 93.02% (-0.04%) from 93.057%
16491528542

push

github

Buristan
ARM64: Prevent STP fusion for conditional code emitted by TBAR.

Thanks to Peter Cawley.

(cherry picked from commit 7cc53f0b8)

Assume we have a trace for the several `setmetatable()` calls to the
same table. This trace contains the following IR:
| 0011          p64 FREF   0003  tab.meta
| ...
| 0018 x0    >  tab TNEW   0    0
| 0019          tab TBAR   0003
| 0020          tab FSTORE 0011  0018

The expected mcode to be emitted for the last two IRs is the following:
| 55626cffb0  ldrb  w30, [x19, 8] ; tab->marked
| 55626cffb4  tst   w30, 0x4      ; Is black?
| 55626cffb8  beq   0x626cffd0     ; Skip marking.
| 55626cffbc  ldr   x27, [x20, 128]
| 55626cffc0  and   w30, w30, 0xfffffffb
| 55626cffc4  str   x19, [x20, 128]
| 55626cffcc  strb  w30, [x19, 8]  ; tab->marked
| 55626cffc8  str   x27, [x19, 24] ; tab->gclist
| 55626cffd0  str   x0,  [x19, 32] ; tab->metatable

But the last 2 instructions are fused into the following `stp`:
| 55581dffd0  stp   x27, x0, [x19, 48]
Hence, the GC propagation frontier back is done partially, since
`str x27, [x19, 24]` is not skipped despite TBAR semantics. This leads
to the incorrect value in the `gclist` and the segmentation fault during
its traversal on GC step.

This patch prevents this fusion via switching instruction for
`tab->gclist` and `tab->marked` storing.

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

Part of tarantool/tarantool#11691

5710 of 6047 branches covered (94.43%)

Branch coverage included in aggregate %.

21783 of 23509 relevant lines covered (92.66%)

3874288.67 hits per line

Coverage Regressions

Lines Coverage ∆ File
6
94.74
-4.31% src/lj_str.c
3
93.09
-0.99% src/lj_ir.c
Jobs
ID Job ID Ran Files Coverage
1 16491528542.1 24 Jul 2025 08:19AM UTC 89
93.02
GitHub Action Run
Source Files on build 16491528542
  • Tree
  • List 89
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #16491528542
  • 6a0d3fab on github
  • Prev Build on skaplun/lj-1057-arm64-stp-fusing-across-tbar (#16467146389)
  • Next Build on skaplun/lj-1057-arm64-stp-fusing-across-tbar (#17261935064)
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