[Tarantool-patches] [PATCH luajit 1/2] Fix maxslots when recording BC_VARG.
Sergey Kaplun
skaplun at tarantool.org
Tue Jul 18 17:12:00 MSK 2023
Hi, Igor!
Thanks for the review!
On 18.07.23, Igor Munkin wrote:
> Sergey,
>
> Thanks for the patch! The commit message is OK after fixing Max nits,
> but I still have some questions regarding the test.
>
> On 10.07.23, Sergey Kaplun wrote:
> > From: Mike Pall <mike>
>
> <snipped>
>
> > diff --git a/test/tarantool-tests/lj-1024-varg-maxslot.test.lua b/test/tarantool-tests/lj-1024-varg-maxslot.test.lua
> > new file mode 100644
> > index 00000000..14270595
> > --- /dev/null
> > +++ b/test/tarantool-tests/lj-1024-varg-maxslot.test.lua
> > @@ -0,0 +1,23 @@
> > +local tap = require('tap')
> > +local test = tap.test('lj-noticket-varg-usedef'):skipcond({
>
> Now you have a ticket number.
Fixed, thanks!
>
> > + ['Test requires JIT enabled'] = not jit.status(),
> > +})
> > +
> > +test:plan(1)
> > +
> > +jit.opt.start('hotloop=1')
> > +
> > +local counter = 0
> > +-- luacheck: ignore
> > +local anchor
> > +while counter < 3 do
> > + counter = counter + 1
> > + -- BC_VARG 5 1 0. `...` is nil (argument for the script).
> > + -- luacheck: ignore
> > + -- XXX: some condition to use several slots on the Lua stack.
> > + anchor = 1 >= 1, ...
>
> Well, I have no idea, why this black voodoo magic is required. Comment
> doesn't make it clear either. It would be nice to describe the purpose
> of this in a more verbose way.
Added more verbose description. See the full diff below. Branch is force
pushed.
===================================================================
diff --git a/test/tarantool-tests/lj-1024-varg-maxslot.test.lua b/test/tarantool-tests/lj-1024-varg-maxslot.test.lua
index 14270595..9a968b0c 100644
--- a/test/tarantool-tests/lj-1024-varg-maxslot.test.lua
+++ b/test/tarantool-tests/lj-1024-varg-maxslot.test.lua
@@ -1,5 +1,5 @@
local tap = require('tap')
-local test = tap.test('lj-noticket-varg-usedef'):skipcond({
+local test = tap.test('lj-1024-varg-usedef'):skipcond({
['Test requires JIT enabled'] = not jit.status(),
})
@@ -13,8 +13,20 @@ local anchor
while counter < 3 do
counter = counter + 1
-- BC_VARG 5 1 0. `...` is nil (argument for the script).
+ -- We have the following bytecodes to be recorded:
+ -- 0031 ADDVN 2 2 0 ; 1
+ -- 0032 KSHORT 4 1
+ -- 0033 KSHORT 5 1
+ -- 0034 ISLE 4 5
+ -- 0035 JMP 4 => 0038
+ -- 0038 KPRI 4 2
+ -- 0039 VARG 5 1 0
+ --
+ -- 0033 KSHORT bytecode uses the 6th JIT slot and the 5th Lua
+ -- slot. This Lua slot will be set to nil after 0039 VARG
+ -- bytecode execution, so after VARG recording maxslot should
+ -- point to the 5th JIT slot.
-- luacheck: ignore
- -- XXX: some condition to use several slots on the Lua stack.
anchor = 1 >= 1, ...
end
===================================================================
>
> > +end
> > +
> > +test:ok(true, 'BC_VARG recording 0th frame depth')
> > +
> > +os.exit(test:check() and 0 or 1)
> > --
> > 2.34.1
> >
>
> --
> Best regards,
> IM
--
Best regards,
Sergey Kaplun
More information about the Tarantool-patches
mailing list