From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Evgeniy Temirgaleev <e.temirgaleev@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit] FFI: Fix pointer difference operation on 64 bit platforms.
Date: Wed, 29 Jul 2026 10:39:22 +0300 [thread overview]
Message-ID: <ammuKtU0u0R9c440@root> (raw)
In-Reply-To: <1785255790.236205484@f510.i.mail.ru>
Hi, Evgeniy!
Thanks for the review!
Please consider my answer below.
On 28.07.26, Evgeniy Temirgaleev wrote:
> Hi, Sergey! Thanks for the patch!
>
> LGTM with a note on a test, please see.
> --
> Best regards,
> Evgeniy Temirgaleev
>
> >
> > From: Sergey Kaplun <skaplun@tarantool.org>
> > To: Sergey Bronnikov <sergeyb@tarantool.org>, Evgeniy Temirgaleev <e.temirgaleev@tarantool.org
> > >
> > Cc: tarantool-patches@dev.tarantool.org, Sergey Kaplun <skaplun@tarantool.org
> > >
> > Date: Monday, July 20, 2026 5:24 PM +03:00
> > From: Mike Pall <mike>
> >
> > Thanks to cuiweixie.
> >
> > (cherry picked from commit b58b07189521e82c7a8e8bc43fc3c271f89832fd)
> >
> > The metamethod for FFI pointer subtraction casts the result value to a
> > 32-bit value, which leads to invalid results.
> >
> > This patch removes the excess cast.
> >
> > Sergey Kaplun:
> > * added the description and the test for the problem
> >
> > Part of tarantool/tarantool#12880
> > ---
> >
> > Branch: https://github.com/tarantool/luajit/tree/skaplun/lj-1449-fix-ptr-diff-64-bit
> >
> > Related issues:
> > * https://github.com/LuaJIT/LuaJIT/issues/1449
> > * https://github.com/tarantool/tarantool/issues/12880
> >
> > src/lj_carith.c | 2 +-
> > .../lj-1449-fix-ptr-diff-64-bit.test.lua | 39 +++++++++++++++++++
> > 2 files changed, 40 insertions(+), 1 deletion(-)
> > create mode 100644
> > test/tarantool-tests/lj-1449-fix-ptr-diff-64-bit.test.lua
> >
> > diff --git a/src/lj_carith.c b/src/lj_carith.c
> > index eb56d552..3384c2cd 100644
> > --- a/src/lj_carith.c
> > +++ b/src/lj_carith.c
<snipped>
> > diff --git a/test/tarantool-tests/lj-1449-fix-ptr-diff-64-bit.test.lua
> > b/test/tarantool-tests/lj-1449-fix-ptr-diff-64-bit.test.lua
> > new file mode 100644
> > index 00000000..032b9b4d
> > --- /dev/null
> > +++ b/test/tarantool-tests/lj-1449-fix-ptr-diff-64-bit.test.lua
<snipped>
> > +jit.opt.start('hotloop=1')
> > +
> > +for i = 1, 4 do
> > + -- Use constants on trace.
> > + local delta = 0x80000001ULL
> > + local b = 0x700000000000ULL
> > + local pt0 = ffi.cast('char *', b)
> > + local pt1 = ffi.cast('char *', b + delta)
> > + results[i] = pt1 - pt0
> > +end
> > +
> >
>
> It seems, we need to add a correct sample to the results, e.g. table.insert(results, diff)
It is not necessary. The correctness of the VM is checked in the
previous test case. Here we check only consistency between the VM and
JIT. So, if JIT behaviour is different the test will fail (also, it
means that the JIT result is incorrect, since it doesn't match the
correct VM result tested before).
Also, if one runs this test without the patch applied, the assertion in
`record_check_slots()` is raised, since the resulting value after
folding is not the same as given by the VM.
> > +test:samevalues(results, 'consistent JIT and VM behaviour for ptr
> > subtraction')
> > +
> > +test:done(true)
> > --
> > 2.55.0
> >
--
Best regards,
Sergey Kaplun
prev parent reply other threads:[~2026-07-29 7:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-20 14:24 Sergey Kaplun via Tarantool-patches
2026-07-24 9:45 ` Sergey Bronnikov via Tarantool-patches
2026-07-28 16:23 ` Evgeniy Temirgaleev via Tarantool-patches
2026-07-29 7:39 ` Sergey Kaplun via Tarantool-patches [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ammuKtU0u0R9c440@root \
--to=tarantool-patches@dev.tarantool.org \
--cc=e.temirgaleev@tarantool.org \
--cc=skaplun@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH luajit] FFI: Fix pointer difference operation on 64 bit platforms.' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox