From: Igor Munkin via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Sergey Kaplun <skaplun@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit v2] luajit-gdb: support dualnum mode
Date: Tue, 17 Aug 2021 10:56:54 +0300 [thread overview]
Message-ID: <20210817075654.GC5743@tarantool.org> (raw)
In-Reply-To: <YRfJXNerYAbGdAt6@root>
Sergey,
On 14.08.21, Sergey Kaplun wrote:
> Hi, Maxim!
>
> Thanks for the fixes!
>
> LGTM, except two nitpicks below.
>
> On 14.08.21, Maxim Kokryashkin wrote:
<snipped>
> > diff --git a/src/luajit-gdb.py b/src/luajit-gdb.py
> > index c50405ad..d4882dd7 100644
> > --- a/src/luajit-gdb.py
> > +++ b/src/luajit-gdb.py
> > @@ -238,8 +238,11 @@ def jit_state(g):
> > 0x15: 'ERR',
> > }.get(int(J(g)['state']), 'INVALID')
> >
> > +def tvisint(o):
> > + return LJ_DUALNUM and itype(o) == LJ_TISNUM
> > +
> > def tvisnumber(o):
> > - return itype(o) <= (0xfffeffff if LJ_64 and not LJ_GC64 else LJ_T['NUMX'])
> > + return itype(o) <= LJ_TISNUM
>
> Strictly saying, it is `<`, because `==` is staying for integer
> representation.
At first, I believed you're right, but unfortunately, you're wrong.
Consider the following:
| $ cmake . -DLUAJIT_NUMMODE=2 -DCMAKE_BUILD_TYPE=Debug
| <snipped> # Manually enable LJ_DUALNUM for x64
| $ make -j
| <snipped>
| $ cd src
| $ gdb --args ./luajit -e 'print(1)'
| <snipped>
| Reading symbols from ./luajit...
| lj-arch command initialized
| lj-tv command initialized
| lj-str command initialized
| lj-tab command initialized
| lj-stack command initialized
| lj-state command initialized
| lj-gc command initialized
| luajit-gdb.py is successfully loaded
| (gdb) b lj_cf_print
| Breakpoint 1 at 0x2960a: file /luajit/src/lib_base.c, line 485.
| (gdb) r
| Starting program: /luajit/src/luajit -e print\(1\)
|
| Breakpoint 1, lj_cf_print (L=0x0) at /luajit/src/lib_base.c:485
| 485 {
| (gdb) n
| 486 ptrdiff_t i, nargs = L->top - L->base;
| (gdb) lj-stack L
| 0x40001a50:0x40001a70 [ ] 5 slots: Red zone
| 0x40001a48 [ M]
| 0x40001958:0x40001a40 [ ] 30 slots: Free stack slots
| 0x40001950 [ T ]
| 0x40001948 [ B ] VALUE: not valid type @ 0x1
| 0x40001940 [ ] FRAME: [L] delta=1, fast function #29
| 0x40001938 [ ] FRAME: [V] delta=1, Lua function @ 0x40008428, 0 upvalues, "=(command line)":0
| 0x40001930 [ ] FRAME: [CP] delta=3, Lua function @ 0x40008428, 0 upvalues, "=(command line)":0
| 0x40001928 [ ] VALUE: C function @ 0x55555555c945
| 0x40001920 [ ] VALUE: light userdata @ 0x0
| 0x40001918 [ ] FRAME: [CP] delta=1, C function @ 0x55555555def8
| 0x40001910 [S ] FRAME: dummy L
There is a "not valid type" stub, since < is used instead of <=. I
reverted this change and here is the result:
| $ git diff
| diff --git a/src/luajit-gdb.py b/src/luajit-gdb.py
| index f7347cf3..4488775c 100644
| --- a/src/luajit-gdb.py
| +++ b/src/luajit-gdb.py
| @@ -243,7 +243,7 @@ def tvisint(o):
| return LJ_DUALNUM and itype(o) == LJ_TISNUM
|
| def tvisnumber(o):
| - return itype(o) < LJ_TISNUM
| + return itype(o) <= LJ_TISNUM
|
| def tvislightud(o):
| if LJ_64 and not LJ_GC64:
| $ cmake . -DLUAJIT_NUMMODE=2 -DCMAKE_BUILD_TYPE=Debug
| <snipped> # Manually enable LJ_DUALNUM for x64
| $ make -j
| <snipped>
| $ cd src
| $ gdb --args ./luajit -e 'print(1)'
| <snipped>
| Reading symbols from ./luajit...
| lj-arch command initialized
| lj-tv command initialized
| lj-str command initialized
| lj-tab command initialized
| lj-stack command initialized
| lj-state command initialized
| lj-gc command initialized
| luajit-gdb.py is successfully loaded
| (gdb) b lj_cf_print
| Breakpoint 1 at 0x2960a: file /luajit/src/lib_base.c, line 485.
| (gdb) r
| Starting program: /luajit/src/luajit -e print\(1\)
|
| Breakpoint 1, lj_cf_print (L=0x0) at /luajit/src/lib_base.c:485
| 485 {
| (gdb) n
| 486 ptrdiff_t i, nargs = L->top - L->base;
| (gdb) lj-stack L
| 0x40001a50:0x40001a70 [ ] 5 slots: Red zone
| 0x40001a48 [ M]
| 0x40001958:0x40001a40 [ ] 30 slots: Free stack slots
| 0x40001950 [ T ]
| 0x40001948 [ B ] VALUE: integer 1
| 0x40001940 [ ] FRAME: [L] delta=1, fast function #29
| 0x40001938 [ ] FRAME: [V] delta=1, Lua function @ 0x40008428, 0 upvalues, "=(command line)":0
| 0x40001930 [ ] FRAME: [CP] delta=3, Lua function @ 0x40008428, 0 upvalues, "=(command line)":0
| 0x40001928 [ ] VALUE: C function @ 0x55555555c945
| 0x40001920 [ ] VALUE: light userdata @ 0x0
| 0x40001918 [ ] FRAME: [CP] delta=1, C function @ 0x55555555def8
| 0x40001910 [S ] FRAME: dummy L
Hence, I dropped this change from the resulting patch.
>
<snipped>
>
> --
> Best regards,
> Sergey Kaplun
--
Best regards,
IM
next prev parent reply other threads:[~2021-08-17 8:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-31 13:36 [Tarantool-patches] [PATCH luajit] " Maxim Kokryashkin via Tarantool-patches
2021-08-11 8:27 ` Sergey Kaplun via Tarantool-patches
2021-08-13 14:29 ` Максим Корякшин via Tarantool-patches
2021-08-14 11:38 ` [Tarantool-patches] [PATCH luajit v2] " Maxim Kokryashkin via Tarantool-patches
2021-08-14 13:36 ` Максим Корякшин via Tarantool-patches
2021-08-14 13:47 ` Sergey Kaplun via Tarantool-patches
2021-08-14 17:26 ` Максим Корякшин via Tarantool-patches
2021-08-17 7:56 ` Igor Munkin via Tarantool-patches [this message]
2021-08-16 8:49 ` Igor Munkin via Tarantool-patches
2021-08-16 10:01 ` Максим Корякшин via Tarantool-patches
2021-08-16 16:23 ` Vitaliia Ioffe via Tarantool-patches
2021-08-17 7:47 ` Igor Munkin via Tarantool-patches
2021-08-17 9:23 ` [Tarantool-patches] [PATCH luajit] " Igor Munkin via Tarantool-patches
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=20210817075654.GC5743@tarantool.org \
--to=tarantool-patches@dev.tarantool.org \
--cc=imun@tarantool.org \
--cc=skaplun@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH luajit v2] luajit-gdb: support dualnum mode' \
/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