Skip to content

Tarantool generates much bigger number of traces than LuaJIT #122

@ligurio

Description

@ligurio

Related to #121

How to reproduce:

Build Tarantool:

git clone https://github.com/tarantool/tarantool/
cd tarantool
CFLAGS="-fsanitize=fuzzer-no-link" LDFLAGS="-fsanitize=fuzzer-no-link" CC=clang CXX=clang++ cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug -DENABLE_FUZZER=ON -DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_CHECKHOOK=OFF -DLUAJIT_ENABLE_GC64=ON
cmake --build build/ --parallel
cd build
git clone https://github.com/ligurio/luzer
cd luzer
CC=clang-21 CXX=clang++-21 cmake -S . -B build
cmake --build build/ --parallel
cd ..

Run test with Tarantool: LUA_CPATH='./luzer/build/luzer/?.so;;' LUA_PATH='./luzer/?/init.lua;./test/fuzz/lua-tests/src/tests/lapi/?.lua;;' ./src/tarantool -jdump=Tias ./test/fuzz/lua-tests/src/tests/lapi/bitop_bxor_test.lua -runs=100

tarantool_traces.txt

Output:
WARNING: Coverage symbols are being provided by a library other than libFuzzer. This will result in a broken Lua code coverage and severely impacted native extension code coverage. Symbols are coming from this library: ./src/tarantool
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 1853106423
INFO: A corpus is not provided, starting from an empty corpus
#2	INITED ft: 1 corp: 1/1b exec/s: 0 rss: 65Mb
---- TRACE 105 start lib.lua:40
---- TRACE 105 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76df0e718 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 105 stop -> stitch

---- TRACE 106 start 105/0 lib.lua:41
---- TRACE 106 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76e4d9028 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 106 stop -> stitch

---- TRACE 107 start 106/stitch lib.lua:42
---- TRACE 107 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 107 stop -> 105

---- TRACE 108 start 106/0 lib.lua:41
---- TRACE 108 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76ee36d40 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 108 stop -> stitch

---- TRACE 109 start 108/stitch lib.lua:42
---- TRACE 109 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 109 stop -> 105

---- TRACE 110 start 108/0 lib.lua:41
---- TRACE 110 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76e5ac160 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 110 stop -> stitch

---- TRACE 111 start 110/stitch lib.lua:42
---- TRACE 111 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 111 stop -> 105

---- TRACE 112 start 110/0 lib.lua:41
---- TRACE 112 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76e563130 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 112 stop -> stitch

---- TRACE 113 start 112/stitch lib.lua:42
---- TRACE 113 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 113 stop -> 105

---- TRACE 114 start 112/0 lib.lua:41
---- TRACE 114 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76efddb40 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 114 stop -> stitch

---- TRACE 115 start 114/stitch lib.lua:42
---- TRACE 115 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 115 stop -> 105

---- TRACE 116 start 114/0 lib.lua:41
---- TRACE 116 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76dfb28c0 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 116 stop -> stitch

---- TRACE 117 start 116/stitch lib.lua:42
---- TRACE 117 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 117 stop -> 105

---- TRACE 118 start 116/0 lib.lua:41
---- TRACE 118 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @12
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #306
0015 >  fun EQ     0013  C:7fa76de032f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7fa76e400010 +0x1.586682305ce4p-1028 contpc C:7fa76de032f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 118 stop -> stitch

---- TRACE 119 start 118/stitch lib.lua:42
---- TRACE 119 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @54
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @14
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7fa76deb2b80  [0x7fa76deb2c1c]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  p64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @1
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 119 stop -> 105

#100	DONE   ft: 1 corp: 1/1b lim: 4 exec/s: 0 rss: 65Mb
Done 100 runs in 0 second(s)

Run test by LuaJIT: LUA_CPATH='./luzer/build/luzer/?.so;;' LUA_PATH='./luzer/?/init.lua;./test/fuzz/lua-tests/src/tests/lapi/?.lua;;' luajit -jdump=Tias ./test/fuzz/lua-tests/src/tests/lapi/bitop_bxor_test.lua -runs=100

luajit_traces.txt

Output:
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 3006938138
INFO: Loaded 1 modules   (188 inline 8-bit counters): 188 [0x7f5ed83aa923, 0x7f5ed83aa9df), 
INFO: Loaded 1 PC tables (188 PCs): 188 [0x7f5ed83aa9e0,0x7f5ed83ab5a0), 
INFO: A corpus is not provided, starting from an empty corpus
#2	INITED cov: 20 ft: 21 corp: 1/1b exec/s: 0 rss: 28Mb
#3	NEW    cov: 20 ft: 22 corp: 2/3b lim: 4 exec/s: 0 rss: 28Mb L: 2/2 MS: 1 InsertByte-
#5	NEW    cov: 20 ft: 23 corp: 3/6b lim: 4 exec/s: 0 rss: 28Mb L: 3/3 MS: 2 CrossOver-InsertByte-
#12	NEW    cov: 20 ft: 24 corp: 4/8b lim: 4 exec/s: 0 rss: 28Mb L: 2/3 MS: 2 InsertByte-ChangeByte-
#33	NEW    cov: 20 ft: 25 corp: 5/12b lim: 4 exec/s: 0 rss: 28Mb L: 4/4 MS: 1 CopyPart-
---- TRACE 1 start lib.lua:40
---- TRACE 1 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @9
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #276
0015 >  fun EQ     0013  C:7f5ed83632f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7f5ed8629e98 +0x1.56e4b3fbd0e8p-1028 contpc C:7f5ed83632f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 1 stop -> stitch

---- TRACE 2 start 1/0 lib.lua:41
---- TRACE 2 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @9
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #276
0015 >  fun EQ     0013  C:7f5ed83632f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7f5ed8638ba0 +0x1.56e4b3fbd0e8p-1028 contpc C:7f5ed83632f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 2 stop -> stitch

---- TRACE 3 start 2/stitch lib.lua:42
---- TRACE 3 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @59
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @28
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7f5ed83e7360  [0x7f5ed83e73fc]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  i64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @2
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 3 stop -> 1

---- TRACE 4 start 2/0 lib.lua:41
---- TRACE 4 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @9
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #276
0015 >  fun EQ     0013  C:7f5ed83632f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7f5ed83efcf0 +0x1.56e4b3fbd0e8p-1028 contpc C:7f5ed83632f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 4 stop -> stitch

---- TRACE 5 start 4/stitch lib.lua:42
---- TRACE 5 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @59
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @28
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7f5ed83e7360  [0x7f5ed83e73fc]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  i64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @2
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 5 stop -> 1

---- TRACE 6 start 4/0 lib.lua:41
---- TRACE 6 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @9
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #276
0015 >  fun EQ     0013  C:7f5ed83632f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7f5ed83f1db8 +0x1.56e4b3fbd0e8p-1028 contpc C:7f5ed83632f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 6 stop -> stitch

---- TRACE 7 start 6/stitch lib.lua:42
---- TRACE 7 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @59
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @28
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7f5ed83e7360  [0x7f5ed83e73fc]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  i64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @2
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 7 stop -> 1

<snipped>

---- TRACE 30 start 28/0 lib.lua:41
---- TRACE 30 IR
....        SNAP   #0   [ ---- ---- ---- ]
0001 >  udt SLOAD  #2    T
0002    tab FLOAD  0001  udata.meta
0003 >  tab NE     0002  NULL
0004    int FLOAD  0002  tab.hmask
0005 >  int EQ     0004  +15 
0006    p64 FLOAD  0002  tab.node
0007 >  p64 HREFK  0006  "__index" @15
0008 >  tab HLOAD  0007
0009    int FLOAD  0008  tab.hmask
0010 >  int EQ     0009  +15 
0011    p64 FLOAD  0008  tab.node
0012 >  p64 HREFK  0011  "consume_number" @9
0013 >  fun HLOAD  0012
0014    num FLOAD  nil   #276
0015 >  fun EQ     0013  C:7f5ed83632f0
....        SNAP   #1   [ ---- ---- ---- +2.2517998136852e+15 trace: 0x7f5ed8307e90 +0x1.56e4b3fbd0e8p-1028 contpc C:7f5ed83632f0 ftsz|0001 -2.2517998136852e+15 +2.2517998136852e+15 ]
---- TRACE 30 stop -> stitch

---- TRACE 31 start 30/stitch lib.lua:42
---- TRACE 31 IR
....        SNAP   #0   [ ---- ---- ]
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  "math" @59
0007 >  tab HLOAD  0006
0008    int FLOAD  0007  tab.hmask
0009 >  int EQ     0008  +31 
0010    p64 FLOAD  0007  tab.node
0011 >  p64 HREFK  0010  "floor" @28
0012 >  fun HLOAD  0011
0013 >  num SLOAD  #4    T
0014 >  fun EQ     0012  math.floor
0015    num FPMATH 0013  floor
0016 >  p64 RETF   proto: 0x7f5ed83e7360  [0x7f5ed83e73fc]
....        SNAP   #1   [ ---- ---- ---- ---- ---- 0015 ]
0017    fun SLOAD  #0    R
0018 >  i64 UREFO  0017  #1  
0019    p64 SUB    0018  0000
0020 >  p64 UGT    0019  +48 
0021 >  tab ULOAD  0018
0022    int FLOAD  0021  tab.hmask
0023 >  int EQ     0022  +3  
0024    p64 FLOAD  0021  tab.node
0025 >  p64 HREFK  0024  "random_number" @2
0026 >  fun HLOAD  0025
0027 >  udt SLOAD  #3    T
0028 >  fun EQ     0026  lib.lua:40
....        SNAP   #2   [ ---- ---- ---- ---- ---- 0015 lib.lua:40 ftsz|0027 ]
---- TRACE 31 stop -> 1

	NEW_FUNC[1/1]: 0x7f5ed8363aa1
#97	NEW    cov: 22 ft: 28 corp: 6/14b lim: 4 exec/s: 0 rss: 28Mb L: 2/4 MS: 4 InsertByte-CrossOver-CopyPart-ChangeByte-
#98	NEW    cov: 22 ft: 31 corp: 7/18b lim: 4 exec/s: 0 rss: 28Mb L: 4/4 MS: 1 ShuffleBytes-
#100	DONE   cov: 22 ft: 31 corp: 7/18b lim: 4 exec/s: 0 rss: 28Mb
Done 100 runs in 0 second(s)

Tarantool: 875b4680a51e07656160fcc48cede2bf00b438b2
LuaJIT: 2.1.1703358377

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions