[Tarantool-patches] [PATCH luajit] FFI: Add tonumber() specialization for failed conversions.
sergos
sergos at tarantool.org
Wed Sep 21 15:19:40 MSK 2022
Hi!
I see four ‘ok’s as a result of run.
See the full output for the run with dump() below:
s.ostanevich at s-ostanevich2:~/workspaces/t.sergos/third_party/luajit/test/tarantool-tests % ../../../../build-debug/src/tarantool -e 'require"jit.dump".start("ib")' lj-408-tonumber-cdata-record.test.lua
TAP version 13
1..4
---- TRACE 1 start lj-408-tonumber-cdata-record.test.lua:17
0001 GGET 1 0 ; "tonumber"
0002 MOV 3 0
0003 CALL 1 2 2
0000 . FUNCC ; tonumber
0004 RET1 1 2
---- TRACE 1 IR
0001 fun SLOAD #0 R
0002 tab FLOAD 0001 func.env
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +63
0005 p64 FLOAD 0002 tab.node
0006 > p64 HREFK 0005 "tonumber" @8
0007 > fun HLOAD 0006
0008 > cdt SLOAD #2 T
0009 > fun EQ 0007 tonumber
---- TRACE 1 stop -> return
ok - recorded with NULL and not converted for NULL
---- TRACE 2 start tap.lua:44
0001 TGETS 4 0 0 ; "total"
0002 ADDVN 4 4 0 ; 1
0003 TSETS 4 0 0 ; "total"
0004 GGET 4 1 ; "io"
0005 TGETS 4 4 2 ; "write"
0006 GGET 6 3 ; "string"
0007 TGETS 6 6 4 ; "rep"
0008 KSTR 8 5 ; " "
0009 TGETS 9 0 6 ; "level"
0010 MULNV 9 9 1 ; 4
0011 CALL 6 0 3
0000 . FUNCC ; string.rep
0012 CALLM 4 1 0
0000 . FUNCC ; io.write
0013 ISF 1
0014 JMP 4 => 0025
0015 GGET 4 1 ; "io"
0016 TGETS 4 4 2 ; "write"
0017 GGET 6 3 ; "string"
0018 TGETS 6 6 7 ; "format"
0019 KSTR 8 8 ; "ok - %s\n"
---- TRACE 2 abort tap.lua:48 -- error thrown or hook called during recording
ok - recorded with NULL and converted for 0LL
---- TRACE flush
---- TRACE 1 start lj-408-tonumber-cdata-record.test.lua:17
0001 GGET 1 0 ; "tonumber"
0002 MOV 3 0
0003 CALL 1 2 2
0000 . FUNCC ; tonumber
0004 RET1 1 2
---- TRACE 1 IR
0001 fun SLOAD #0 R
0002 tab FLOAD 0001 func.env
0003 int FLOAD 0002 tab.hmask
0004 > int EQ 0003 +63
0005 p64 FLOAD 0002 tab.node
0006 > p64 HREFK 0005 "tonumber" @8
0007 > fun HLOAD 0006
0008 > cdt SLOAD #2 T
0009 > fun EQ 0007 tonumber
0010 u16 FLOAD 0008 cdata.ctypeid
0011 > int EQ 0010 +11
0012 i64 FLOAD 0008 cdata.int64
0013 num CONV 0012 num.i64
---- TRACE 1 stop -> return
ok - recorded with 0LL and converted for 0LL
---- TRACE 2 start tap.lua:44
0001 TGETS 4 0 0 ; "total"
0002 ADDVN 4 4 0 ; 1
0003 TSETS 4 0 0 ; "total"
0004 GGET 4 1 ; "io"
0005 TGETS 4 4 2 ; "write"
0006 GGET 6 3 ; "string"
0007 TGETS 6 6 4 ; "rep"
0008 KSTR 8 5 ; " "
0009 TGETS 9 0 6 ; "level"
0010 MULNV 9 9 1 ; 4
0011 CALL 6 0 3
0000 . FUNCC ; string.rep
0012 CALLM 4 1 0
0000 . FUNCC ; io.write
0013 ISF 1
0014 JMP 4 => 0025
0015 GGET 4 1 ; "io"
0016 TGETS 4 4 2 ; "write"
0017 GGET 6 3 ; "string"
0018 TGETS 6 6 7 ; "format"
0019 KSTR 8 8 ; "ok - %s\n"
---- TRACE 2 abort tap.lua:48 -- error thrown or hook called during recording
ok - recorded with 0LL and not converted for NULL
---- TRACE 2 start tarantool.lua:66
0016 UGET 2 1 ; fiber
0017 TGETS 2 2 4 ; "sleep"
0018 MOV 4 1
0019 CALL 2 1 2
0000 . FUNCC ; C:10b23f5e0
---- TRACE 2 IR
0001 fun SLOAD #0 R
0002 > p64 UREFC 0001 #1
0003 > tab ULOAD 0002
0004 int FLOAD 0003 tab.hmask
0005 > int EQ 0004 +31
0006 p64 FLOAD 0003 tab.node
0007 > p64 HREFK 0006 "sleep" @4
0008 > fun HLOAD 0007
0009 > num SLOAD #3 T
0010 > fun EQ 0008 C:10b23f5e0
---- TRACE 2 stop -> stitch
s.ostanevich at s-ostanevich2:~/workspaces/t.sergos/third_party/luajit/test/tarantool-tests % git status
HEAD detached at ae79d993
Untracked files:
(use "git add <file>..." to include in what will be committed)
../../patch
../../src/lj_opt_narrow.c.orig
../../src/lj_opt_narrow.c.rej
gh-6976-narrowing-of-unary-minus.test.lua
lj-408-tonumber-cdata-record.test.lua
nothing added to commit but untracked files present (use "git add" to track)
s.ostanevich at s-ostanevich2:~/workspaces/t.sergos/third_party/luajit/test/tarantool-tests % git diff
s.ostanevich at s-ostanevich2:~/workspaces/t.sergos/third_party/luajit/test/tarantool-tests %
s.ostanevich at s-ostanevich2:~/workspaces/t.sergos/third_party/luajit/test/tarantool-tests % git -C ../../../.. describe
2.11.0-entrypoint-494-gdc147ec91
> On 21 Sep 2022, at 15:03, Sergey Kaplun <skaplun at tarantool.org> wrote:
>
> Hi, Sergos!
>
> Thanks for the review!
>
> On 20.09.22, sergos wrote:
>> First of all:
>>
>> s.ostanevich at s-ostanevich2:~/workspaces/t.sergos % uname -a
>> Darwin s-ostanevich2 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:17:10 PDT 2022; root:xnu-8020.140.49~2/RELEASE_X86_64 x86_64
>>
>> Then I just built Tarantool with ninja:
>
> I tried run the test suite with ninja, but it's failed:
> | $ ninja -C build tarantool-tests
> | ...
> | /home/burii/builds_workspace/tarantool/master/third_party/luajit/test/tarantool-tests/lj-408.test.lua ......................................
> | not ok - recorded with NULL and converted for 0LL
> | Dubious, test returned 1 (wstat 256, 0x100)
> | Failed 1/4 subtests
> |...
> | ninja: build stopped: subcommand failed.
>
>>
>> Tarantool 2.11.0-entrypoint-494-gdc147ec91
>> Target: Darwin-x86_64-debug
>>
>> Then I brought the test as a patch from the mail and run ninja test.
>
> May you check the test output running without ninja like the follwing,
> please:
>
> | $ ../src/tarantool app-tap/lj-408-tonumber-cdata-record.test.lua
> | TAP version 13
> | 1..4
> | ok - recorded with NULL and not converted for NULL
> | not ok - recorded with NULL and converted for 0LL
> | ---
> | filename: app-tap/lj-408-tonumber-cdata-record.test.lua
> | line: 0
> | trace:
> | - line: 0
> | source: '@app-tap/lj-408-tonumber-cdata-record.test.lua'
> | filename: app-tap/lj-408-tonumber-cdata-record.test.lua
> | what: main
> | namewhat:
> | src: app-tap/lj-408-tonumber-cdata-record.test.lua
> | ...
> | ok - recorded with 0LL and converted for 0LL
> | ok - recorded with 0LL and not converted for NULL
> | # failed subtest: 1
>
> Also, please, check `jit.dump()` output. Maybe there is not trace for
> some reason.
> You can run the following command:
> | $ ../src/tarantool -e 'require"jit.dump".start("ib")' app-tap/lj-408-tonumber-cdata-record.test.lua
>
> The start of output should be the following without the patch.
>
> | 1..4
> | ---- TRACE 1 start lj-408-tonumber-cdata-record.test.lua:17
> | 0001 GGET 1 0 ; "tonumber"
> | 0002 MOV 2 0
> | 0003 CALL 1 2 2
> | 0000 . FUNCC ; tonumber
> | 0004 RET1 1 2
> | ---- TRACE 1 IR
> | 0001 fun SLOAD #0 R
> | 0002 tab FLOAD 0001 func.env
> | 0003 int FLOAD 0002 tab.hmask
> | 0004 > int EQ 0003 +63
> | 0005 p32 FLOAD 0002 tab.node
> | 0006 > p32 HREFK 0005 "tonumber" @8
> | 0007 > fun HLOAD 0006
> | 0008 > cdt SLOAD #1 T
> | 0009 > fun EQ 0007 tonumber
> | ---- TRACE 1 stop -> return
> | ...
>
>>
>> The output says the test passes, while sources contains no patch. Am I missing something?
>>
>> Sergos
>>
>
> <snipped>
>
>>>
>>
>
> --
> Best regards,
> Sergey Kaplun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.tarantool.org/pipermail/tarantool-patches/attachments/20220921/9f489018/attachment.htm>
More information about the Tarantool-patches
mailing list