Tarantool development patches archive
 help / color / mirror / Atom feed
* [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK
@ 2022-12-01 20:28 Igor Munkin via Tarantool-patches
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test Igor Munkin via Tarantool-patches
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-01 20:28 UTC (permalink / raw)
  To: Sergey Kaplun, Maxim Kokryashkin; +Cc: tarantool-patches

After enabling LUAJIT_ENABLE_CHECKHOOK options two tests started to fail
due to very tight JIT engine setup. This patchset is aimed to relax JIT
engine setup and make the tests agnostic to the introduced option.

Issue: https://github.com/tarantool/tarantool/issues/7762
Branch: https://github.com/tarantool/luajit/tree/imun/gh-7762-fix-tests-for-checkhook
PR: https://github.com/tarantool/tarantool/pull/7787
CI: https://github.com/tarantool/luajit/commit/ba9d9c8

Igor Munkin (2):
  test: relax JIT setup in lj-430-maxirconst test
  test: relax JIT setup in misc.getmetrics test

 .../lj-430-maxirconst.test.lua                | 23 +++++++++++--------
 .../misclib-getmetrics-capi.test.lua          |  7 ++++--
 .../misclib-getmetrics-lapi.test.lua          |  7 ++++--
 test/tarantool-tests/utils.lua                |  9 ++++++++
 4 files changed, 33 insertions(+), 13 deletions(-)

-- 
2.34.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test
  2022-12-01 20:28 [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
@ 2022-12-01 20:28 ` Igor Munkin via Tarantool-patches
  2022-12-05  7:52   ` Sergey Kaplun via Tarantool-patches
  2022-12-05 10:47   ` Maxim Kokryashkin via Tarantool-patches
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test Igor Munkin via Tarantool-patches
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-01 20:28 UTC (permalink / raw)
  To: Sergey Kaplun, Maxim Kokryashkin; +Cc: tarantool-patches

JIT engine setup in tarantool-tests/lj-430-maxirconst.test.lua is too
tight for the build with LUAJIT_ENABLE_CHECKHOOK option enabled.
Originally test limits <maxirconst> value with 3 for the default IRRef
constants set: nil, true, false. However, with LUAJIT_ENABLE_CHECKHOOK
enabled there are three more auxiliary IRRef constants for the internal
purposes. Hence, the test is reimplemented the following way:
* The first trace for the empty function is recorded
* The number of IRRef constants is obtained via <jit.util.traceinfo>
* <maxirconst> parameter is set to this value
* The second trace for the function with a single local variable,
  initialized with a constant, fails to record

As a result there is no need to explicitly respect any configuration.

Relates to tarantool/tarantool#7762

Signed-off-by: Igor Munkin <imun@tarantool.org>
---
 .../lj-430-maxirconst.test.lua                | 23 +++++++++++--------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/test/tarantool-tests/lj-430-maxirconst.test.lua b/test/tarantool-tests/lj-430-maxirconst.test.lua
index cd3587a8..eaa0cd1b 100644
--- a/test/tarantool-tests/lj-430-maxirconst.test.lua
+++ b/test/tarantool-tests/lj-430-maxirconst.test.lua
@@ -1,8 +1,3 @@
--- XXX: avoid any other traces compilation due to hotcount
--- collisions for predictable results.
-jit.off()
-jit.flush()
-
 -- Disabled on *BSD due to #4819.
 require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819')
 
@@ -12,10 +7,6 @@ local traceinfo = require('jit.util').traceinfo
 local test = tap.test('lj-430-maxirconst')
 test:plan(2)
 
--- XXX: trace always has at least 3 IR constants: for nil, false
--- and true.
-jit.opt.start('hotloop=1', 'maxirconst=3')
-
 -- This function has only 3 IR constant.
 local function irconst3()
 end
@@ -25,6 +16,12 @@ local function irconst4()
   local _ = 42
 end
 
+-- XXX: Avoid any other traces compilation due to hotcount
+-- collisions for predictable results.
+jit.off()
+jit.flush()
+jit.opt.start('hotloop=1')
+
 assert(not traceinfo(1), 'no traces compiled after flush')
 jit.on()
 irconst3()
@@ -32,6 +29,14 @@ irconst3()
 jit.off()
 test:ok(traceinfo(1), 'new trace created')
 
+-- XXX: Trace 1 always has at least 3 IR constants: for nil, false
+-- and true. In case when LUAJIT_ENABLE_CHECKHOOK is set to ON,
+-- three more constants are emitted to the trace.
+-- Tight up <maxirconst> and try to record the next trace with one
+-- more constant to be emitted.
+jit.opt.start(('maxirconst=%d'):format(traceinfo(1).nk))
+
+assert(not traceinfo(2), 'only one trace is created to this moment')
 jit.on()
 irconst4()
 irconst4()
-- 
2.34.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test
  2022-12-01 20:28 [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test Igor Munkin via Tarantool-patches
@ 2022-12-01 20:28 ` Igor Munkin via Tarantool-patches
  2022-12-05  7:57   ` Sergey Kaplun via Tarantool-patches
  2022-12-05 10:52   ` Maxim Kokryashkin via Tarantool-patches
  2022-12-02 10:01 ` [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests Igor Munkin via Tarantool-patches
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-01 20:28 UTC (permalink / raw)
  To: Sergey Kaplun, Maxim Kokryashkin; +Cc: tarantool-patches

To test whether <jit_snap_restore> metric is counted right for side
exits <minstitch> JIT engine parameter is tighted to prevent side trace
compilation (considering <math.fmod> being used for the corresponding
branch of execution, the side trace will try to compile with stitching).
However, if test is run on the platform configured with the option
LUAJIT_ENABLE_CHECKHOOK enabled, the resulting trace exceeds the
hardcoded <minstitch> limit and the metric is miscounted due to this new
trace. To resolve this issue <minstitch> limit is set to the maximum
amount of IRRef in the trace, preventing trace compilation for any
LuaJIT configuration.

Relates to tarantool/tarantool#7762

Signed-off-by: Igor Munkin <imun@tarantool.org>
---
 test/tarantool-tests/misclib-getmetrics-capi.test.lua | 7 +++++--
 test/tarantool-tests/misclib-getmetrics-lapi.test.lua | 7 +++++--
 test/tarantool-tests/utils.lua                        | 9 +++++++++
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/test/tarantool-tests/misclib-getmetrics-capi.test.lua b/test/tarantool-tests/misclib-getmetrics-capi.test.lua
index 0cbc6cae..42a9adf9 100644
--- a/test/tarantool-tests/misclib-getmetrics-capi.test.lua
+++ b/test/tarantool-tests/misclib-getmetrics-capi.test.lua
@@ -1,5 +1,7 @@
+local utils = require('utils')
+
 -- Disabled on *BSD due to #4819.
-require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819')
+utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819')
 
 local path = arg[0]:gsub('%.test%.lua', '')
 local suffix = package.cpath:match('?.(%a+);')
@@ -94,7 +96,8 @@ end))
 
 -- Compiled loop with a side exit which does not get compiled.
 test:ok(testgetmetrics.snap_restores(function()
-    jit.opt.start(0, "hotloop=1", "hotexit=2", "minstitch=15")
+    jit.opt.start(0, "hotloop=1", "hotexit=2",
+                  ("minstitch=%d"):format(utils.const.maxnins))
 
     local function foo(i)
         -- math.fmod is not yet compiled!
diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
index 222e7d01..19dfd199 100644
--- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
+++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
@@ -2,8 +2,10 @@
 -- Major portions taken verbatim or adapted from the LuaVela testing suite.
 -- Copyright (C) 2015-2019 IPONWEB Ltd.
 
+local utils = require('utils')
+
 -- Disabled on *BSD due to #4819.
-require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819')
+utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819')
 
 local tap = require('tap')
 
@@ -279,7 +281,8 @@ test:test("snap-restores-loop-side-exit-non-compiled", function(subtest)
     -- Compiled loop with a side exit which does not get compiled.
     subtest:plan(1)
 
-    jit.opt.start(0, "hotloop=1", "hotexit=2", "minstitch=15")
+    jit.opt.start(0, "hotloop=1", "hotexit=2",
+                  ("minstitch=%d"):format(utils.const.maxnins))
 
     local function foo(i)
         -- math.fmod is not yet compiled!
diff --git a/test/tarantool-tests/utils.lua b/test/tarantool-tests/utils.lua
index 87f7ff15..eb11d40d 100644
--- a/test/tarantool-tests/utils.lua
+++ b/test/tarantool-tests/utils.lua
@@ -135,4 +135,13 @@ function M.profilename(name)
   return (arg[0]:gsub('^(.+)/([^/]+)%.test%.lua$', replacepattern))
 end
 
+M.const = {
+  -- XXX: Max nins is limited by max IRRef, that equals to
+  -- REF_DROP - REF_BIAS. Unfortunately, these constants are not
+  -- provided to Lua space, so we ought to make some math:
+  -- * REF_DROP = 0xffff
+  -- * REF_BIAS = 0x8000
+  maxnins = 0xffff - 0x8000,
+}
+
 return M
-- 
2.34.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests
  2022-12-01 20:28 [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test Igor Munkin via Tarantool-patches
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test Igor Munkin via Tarantool-patches
@ 2022-12-02 10:01 ` Igor Munkin via Tarantool-patches
  2022-12-05  8:01   ` Sergey Kaplun via Tarantool-patches
  2022-12-05 11:06   ` Maxim Kokryashkin via Tarantool-patches
  2022-12-02 10:05 ` [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
  2022-12-12  9:42 ` Igor Munkin via Tarantool-patches
  4 siblings, 2 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-02 10:01 UTC (permalink / raw)
  To: Sergey Kaplun, Maxim Kokryashkin; +Cc: tarantool-patches

Sometimes TAP functions become hot spots for JIT compiler and the
corresponding traces spoils test assertions with their side effects.
To avoid such misbehaviour and fix fragile test, <misc.getmetrics> is
explicitly called in this particular case. There is no need to fix the
corresponding test for Lua C API interface, since there is no TAP
helpers used to check whether <jit_snap_restore> is counted right. There
is also no need to fix other subtests nearby, since their assertions are
no affected by TAP helpers side effects.

Relates to tarantool/tarantool#7762

Signed-off-by: Igor Munkin <imun@tarantool.org>
---
 test/tarantool-tests/misclib-getmetrics-lapi.test.lua | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
index 19dfd199..0c170d0c 100644
--- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
+++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
@@ -363,7 +363,9 @@ test:test("snap-restores-scalar", function(subtest)
     -- No exits triggering snap restore so far: snapshot
     -- restoration was inlined into the machine code.
     subtest:is(new_metrics.jit_snap_restore - old_metrics.jit_snap_restore, 0)
-    old_metrics = new_metrics
+    -- XXX: obtain actual metrics to avoid side effects that are
+    -- caused by Lua code and JIT engine fine tuning above.
+    old_metrics = misc.getmetrics()
 
     -- Simply 2 side exits from the trace:
     foo(20)
-- 
2.34.0


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK
  2022-12-01 20:28 [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
                   ` (2 preceding siblings ...)
  2022-12-02 10:01 ` [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests Igor Munkin via Tarantool-patches
@ 2022-12-02 10:05 ` Igor Munkin via Tarantool-patches
  2022-12-12  9:42 ` Igor Munkin via Tarantool-patches
  4 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-02 10:05 UTC (permalink / raw)
  To: Sergey Kaplun, Maxim Kokryashkin; +Cc: tarantool-patches

I've extended the series with additional patch, fixing flaky subtest in
test/tarantool-tests/misclib-getmetrics-lapi.test.lua. I failed to find
the root cause why it became flaky as a result of enabling the new
option LUAJIT_ENABLE_CHECKHOOK, but the test was implemented in a
fragile way, so its flakiness was a matter of time. Fixed now, updated
both LuaJIT branch and Tarantool PR.

On 01.12.22, Igor Munkin wrote:
> After enabling LUAJIT_ENABLE_CHECKHOOK options two tests started to fail
> due to very tight JIT engine setup. This patchset is aimed to relax JIT
> engine setup and make the tests agnostic to the introduced option.
> 
> Issue: https://github.com/tarantool/tarantool/issues/7762
> Branch: https://github.com/tarantool/luajit/tree/imun/gh-7762-fix-tests-for-checkhook
> PR: https://github.com/tarantool/tarantool/pull/7787
> CI: https://github.com/tarantool/luajit/commit/ba9d9c8
> 
> Igor Munkin (2):
>   test: relax JIT setup in lj-430-maxirconst test
>   test: relax JIT setup in misc.getmetrics test
> 
>  .../lj-430-maxirconst.test.lua                | 23 +++++++++++--------
>  .../misclib-getmetrics-capi.test.lua          |  7 ++++--
>  .../misclib-getmetrics-lapi.test.lua          |  7 ++++--
>  test/tarantool-tests/utils.lua                |  9 ++++++++
>  4 files changed, 33 insertions(+), 13 deletions(-)
> 
> -- 
> 2.34.0
> 

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test Igor Munkin via Tarantool-patches
@ 2022-12-05  7:52   ` Sergey Kaplun via Tarantool-patches
  2022-12-05 21:33     ` Igor Munkin via Tarantool-patches
  2022-12-05 10:47   ` Maxim Kokryashkin via Tarantool-patches
  1 sibling, 1 reply; 18+ messages in thread
From: Sergey Kaplun via Tarantool-patches @ 2022-12-05  7:52 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

Hi, Igor!

Thanks for the patch!

LGTM, just several nits regarding the commit message.

On 01.12.22, Igor Munkin wrote:
> JIT engine setup in tarantool-tests/lj-430-maxirconst.test.lua is too
> tight for the build with LUAJIT_ENABLE_CHECKHOOK option enabled.
> Originally test limits <maxirconst> value with 3 for the default IRRef
> constants set: nil, true, false. However, with LUAJIT_ENABLE_CHECKHOOK
> enabled there are three more auxiliary IRRef constants for the internal

Typo: s/enabled/enabled,/

> purposes. Hence, the test is reimplemented the following way:
> * The first trace for the empty function is recorded
> * The number of IRRef constants is obtained via <jit.util.traceinfo>
> * <maxirconst> parameter is set to this value
> * The second trace for the function with a single local variable,
>   initialized with a constant, fails to record
> 
> As a result there is no need to explicitly respect any configuration.

Typo: s/As a result/As a result,/

> 
> Relates to tarantool/tarantool#7762
> 
> Signed-off-by: Igor Munkin <imun@tarantool.org>
> ---
>  .../lj-430-maxirconst.test.lua                | 23 +++++++++++--------
>  1 file changed, 14 insertions(+), 9 deletions(-)

<snipped>

> 2.34.0
> 

-- 
Best regards,
Sergey Kaplun

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test Igor Munkin via Tarantool-patches
@ 2022-12-05  7:57   ` Sergey Kaplun via Tarantool-patches
  2022-12-05 21:40     ` Igor Munkin via Tarantool-patches
  2022-12-05 10:52   ` Maxim Kokryashkin via Tarantool-patches
  1 sibling, 1 reply; 18+ messages in thread
From: Sergey Kaplun via Tarantool-patches @ 2022-12-05  7:57 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

Hi, Igor!

Thanks for the patch!

LGTM, except a single nit regarding the commit message.

On 01.12.22, Igor Munkin wrote:
> To test whether <jit_snap_restore> metric is counted right for side
> exits <minstitch> JIT engine parameter is tighted to prevent side trace
> compilation (considering <math.fmod> being used for the corresponding
> branch of execution, the side trace will try to compile with stitching).
> However, if test is run on the platform configured with the option

Typo: s/test/the test/

> LUAJIT_ENABLE_CHECKHOOK enabled, the resulting trace exceeds the
> hardcoded <minstitch> limit and the metric is miscounted due to this new
> trace. To resolve this issue <minstitch> limit is set to the maximum
> amount of IRRef in the trace, preventing trace compilation for any
> LuaJIT configuration.
> 
> Relates to tarantool/tarantool#7762
> 
> Signed-off-by: Igor Munkin <imun@tarantool.org>
> ---
>  test/tarantool-tests/misclib-getmetrics-capi.test.lua | 7 +++++--
>  test/tarantool-tests/misclib-getmetrics-lapi.test.lua | 7 +++++--
>  test/tarantool-tests/utils.lua                        | 9 +++++++++
>  3 files changed, 19 insertions(+), 4 deletions(-)
> 

<snipped>

> -- 
> 2.34.0
> 

-- 
Best regards,
Sergey Kaplun

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests
  2022-12-02 10:01 ` [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests Igor Munkin via Tarantool-patches
@ 2022-12-05  8:01   ` Sergey Kaplun via Tarantool-patches
  2022-12-05 21:46     ` Igor Munkin via Tarantool-patches
  2022-12-05 11:06   ` Maxim Kokryashkin via Tarantool-patches
  1 sibling, 1 reply; 18+ messages in thread
From: Sergey Kaplun via Tarantool-patches @ 2022-12-05  8:01 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

Hi, Igor!

Thanks for the patch!

LGTM, except a few nits regarding the commit message.

On 02.12.22, Igor Munkin wrote:
> Sometimes TAP functions become hot spots for JIT compiler and the
> corresponding traces spoils test assertions with their side effects.

Typo: s/spoils/spoil/

> To avoid such misbehaviour and fix fragile test, <misc.getmetrics> is
> explicitly called in this particular case. There is no need to fix the
> corresponding test for Lua C API interface, since there is no TAP

Typo: s/Lua C API/the Lua C API/
Typo: s/is/are/

> helpers used to check whether <jit_snap_restore> is counted right. There
> is also no need to fix other subtests nearby, since their assertions are
> no affected by TAP helpers side effects.
> 
> Relates to tarantool/tarantool#7762
> 
> Signed-off-by: Igor Munkin <imun@tarantool.org>
> ---

<snipped>

> -- 
> 2.34.0
> 

-- 
Best regards,
Sergey Kaplun

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches]  [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test Igor Munkin via Tarantool-patches
  2022-12-05  7:52   ` Sergey Kaplun via Tarantool-patches
@ 2022-12-05 10:47   ` Maxim Kokryashkin via Tarantool-patches
  2022-12-05 21:34     ` Igor Munkin via Tarantool-patches
  1 sibling, 1 reply; 18+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2022-12-05 10:47 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

[-- Attachment #1: Type: text/plain, Size: 3001 bytes --]


Hi, Igor!
Thanks for the patch!
LGTM, except for the two nits below.
  
>Четверг, 1 декабря 2022, 23:42 +03:00 от Igor Munkin <imun@tarantool.org>:
> 
>JIT engine setup in tarantool-tests/lj-430-maxirconst.test.lua is too
>tight for the build with LUAJIT_ENABLE_CHECKHOOK option enabled.
>Originally test limits <maxirconst> value with 3 for the default IRRef
>constants set: nil, true, false. However, with LUAJIT_ENABLE_CHECKHOOK
>enabled there are three more auxiliary IRRef constants for the internal
>purposes. Hence, the test is reimplemented the following way:
>* The first trace for the empty function is recorded
>* The number of IRRef constants is obtained via <jit.util.traceinfo>
>* <maxirconst> parameter is set to this value
>* The second trace for the function with a single local variable,
>  initialized with a constant, fails to record
>
>As a result there is no need to explicitly respect any configuration.
>
>Relates to tarantool/tarantool#7762
>
>Signed-off-by: Igor Munkin < imun@tarantool.org >
>---
> .../lj-430-maxirconst.test.lua | 23 +++++++++++--------
> 1 file changed, 14 insertions(+), 9 deletions(-)
>
>diff --git a/test/tarantool-tests/lj-430-maxirconst.test.lua b/test/tarantool-tests/lj-430-maxirconst.test.lua
>index cd3587a8..eaa0cd1b 100644
>--- a/test/tarantool-tests/lj-430-maxirconst.test.lua
>+++ b/test/tarantool-tests/lj-430-maxirconst.test.lua
>@@ -1,8 +1,3 @@
>--- XXX: avoid any other traces compilation due to hotcount
>--- collisions for predictable results.
>-jit.off()
>-jit.flush()
>-
> -- Disabled on *BSD due to #4819.
> require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819')
> 
>@@ -12,10 +7,6 @@ local traceinfo = require('jit.util').traceinfo
> local test = tap.test('lj-430-maxirconst')
> test:plan(2)
> 
>--- XXX: trace always has at least 3 IR constants: for nil, false
>--- and true.
>-jit.opt.start('hotloop=1', 'maxirconst=3')
>-
> -- This function has only 3 IR constant.
> local function irconst3()
> end
>@@ -25,6 +16,12 @@ local function irconst4()
>   local _ = 42
> end
> 
>+-- XXX: Avoid any other traces compilation due to hotcount
>+-- collisions for predictable results.
>+jit.off()
>+jit.flush()
>+jit.opt.start('hotloop=1')
>+
> assert(not traceinfo(1), 'no traces compiled after flush')
> jit.on()
> irconst3()
>@@ -32,6 +29,14 @@ irconst3()
> jit.off()
> test:ok(traceinfo(1), 'new trace created')
> 
>+-- XXX: Trace 1 always has at least 3 IR constants: for nil, false
>+-- and true. In case when LUAJIT_ENABLE_CHECKHOOK is set to ON,
Typo: s/In case when/If/
>+-- three more constants are emitted to the trace.
>+-- Tight up <maxirconst> and try to record the next trace with one
Typo: s/Tight up/Tighten up/
>+-- more constant to be emitted.
>+jit.opt.start(('maxirconst=%d'):format(traceinfo(1).nk))
>+
>+assert(not traceinfo(2), 'only one trace is created to this moment')
> jit.on()
> irconst4()
> irconst4()
>--
>2.34.0
--
Best regards,
Maxim Kokryashkin

[-- Attachment #2: Type: text/html, Size: 4032 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches]  [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test
  2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test Igor Munkin via Tarantool-patches
  2022-12-05  7:57   ` Sergey Kaplun via Tarantool-patches
@ 2022-12-05 10:52   ` Maxim Kokryashkin via Tarantool-patches
  2022-12-05 21:40     ` Igor Munkin via Tarantool-patches
  1 sibling, 1 reply; 18+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2022-12-05 10:52 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

[-- Attachment #1: Type: text/plain, Size: 3962 bytes --]


Hi, Igor!
Thanks for the patch!
LGTM, except for the single nit Sergey has already mentioned.
--
Best regards,
Maxim Kokryashkin
 
 
> 
>>To test whether <jit_snap_restore> metric is counted right for side
>>exits <minstitch> JIT engine parameter is tighted to prevent side trace
>>compilation (considering <math.fmod> being used for the corresponding
>>branch of execution, the side trace will try to compile with stitching).
>>However, if test is run on the platform configured with the option
>>LUAJIT_ENABLE_CHECKHOOK enabled, the resulting trace exceeds the
>>hardcoded <minstitch> limit and the metric is miscounted due to this new
>>trace. To resolve this issue <minstitch> limit is set to the maximum
>>amount of IRRef in the trace, preventing trace compilation for any
>>LuaJIT configuration.
>>
>>Relates to tarantool/tarantool#7762
>>
>>Signed-off-by: Igor Munkin < imun@tarantool.org >
>>---
>> test/tarantool-tests/misclib-getmetrics-capi.test.lua | 7 +++++--
>> test/tarantool-tests/misclib-getmetrics-lapi.test.lua | 7 +++++--
>> test/tarantool-tests/utils.lua | 9 +++++++++
>> 3 files changed, 19 insertions(+), 4 deletions(-)
>>
>>diff --git a/test/tarantool-tests/misclib-getmetrics-capi.test.lua b/test/tarantool-tests/misclib-getmetrics-capi.test.lua
>>index 0cbc6cae..42a9adf9 100644
>>--- a/test/tarantool-tests/misclib-getmetrics-capi.test.lua
>>+++ b/test/tarantool-tests/misclib-getmetrics-capi.test.lua
>>@@ -1,5 +1,7 @@
>>+local utils = require('utils')
>>+
>> -- Disabled on *BSD due to #4819.
>>-require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819')
>>+utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819')
>> 
>> local path = arg[0]:gsub('%.test%.lua', '')
>> local suffix = package.cpath:match('?.(%a+);')
>>@@ -94,7 +96,8 @@ end))
>> 
>> -- Compiled loop with a side exit which does not get compiled.
>> test:ok(testgetmetrics.snap_restores(function()
>>- jit.opt.start(0, "hotloop=1", "hotexit=2", "minstitch=15")
>>+ jit.opt.start(0, "hotloop=1", "hotexit=2",
>>+ ("minstitch=%d"):format(utils.const.maxnins))
>> 
>>     local function foo(i)
>>         -- math.fmod is not yet compiled!
>>diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
>>index 222e7d01..19dfd199 100644
>>--- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
>>+++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
>>@@ -2,8 +2,10 @@
>> -- Major portions taken verbatim or adapted from the LuaVela testing suite.
>> -- Copyright (C) 2015-2019 IPONWEB Ltd.
>> 
>>+local utils = require('utils')
>>+
>> -- Disabled on *BSD due to #4819.
>>-require('utils').skipcond(jit.os == 'BSD', 'Disabled due to #4819')
>>+utils.skipcond(jit.os == 'BSD', 'Disabled due to #4819')
>> 
>> local tap = require('tap')
>> 
>>@@ -279,7 +281,8 @@ test:test("snap-restores-loop-side-exit-non-compiled", function(subtest)
>>     -- Compiled loop with a side exit which does not get compiled.
>>     subtest:plan(1)
>> 
>>- jit.opt.start(0, "hotloop=1", "hotexit=2", "minstitch=15")
>>+ jit.opt.start(0, "hotloop=1", "hotexit=2",
>>+ ("minstitch=%d"):format(utils.const.maxnins))
>> 
>>     local function foo(i)
>>         -- math.fmod is not yet compiled!
>>diff --git a/test/tarantool-tests/utils.lua b/test/tarantool-tests/utils.lua
>>index 87f7ff15..eb11d40d 100644
>>--- a/test/tarantool-tests/utils.lua
>>+++ b/test/tarantool-tests/utils.lua
>>@@ -135,4 +135,13 @@ function M.profilename(name)
>>   return (arg[0]:gsub('^(.+)/([^/]+)%.test%.lua$', replacepattern))
>> end
>> 
>>+M.const = {
>>+ -- XXX: Max nins is limited by max IRRef, that equals to
>>+ -- REF_DROP - REF_BIAS. Unfortunately, these constants are not
>>+ -- provided to Lua space, so we ought to make some math:
>>+ -- * REF_DROP = 0xffff
>>+ -- * REF_BIAS = 0x8000
>>+ maxnins = 0xffff - 0x8000,
>>+}
>>+
>> return M
>>--
>>2.34.0
> 

[-- Attachment #2: Type: text/html, Size: 4923 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches]  [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests
  2022-12-02 10:01 ` [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests Igor Munkin via Tarantool-patches
  2022-12-05  8:01   ` Sergey Kaplun via Tarantool-patches
@ 2022-12-05 11:06   ` Maxim Kokryashkin via Tarantool-patches
  2022-12-05 21:47     ` Igor Munkin via Tarantool-patches
  1 sibling, 1 reply; 18+ messages in thread
From: Maxim Kokryashkin via Tarantool-patches @ 2022-12-05 11:06 UTC (permalink / raw)
  To: Igor Munkin; +Cc: tarantool-patches

[-- Attachment #1: Type: text/plain, Size: 1854 bytes --]


Hi, Igor!
Thanks for the patch!
LGTM, except for the nits Sergey has already mentioned
and the two additional nits below.
 
> 
>>Sometimes TAP functions become hot spots for JIT compiler and the
>Typo: s/for JIT compiler/for the JIT compiler/
>>corresponding traces spoils test assertions with their side effects.
>>To avoid such misbehaviour and fix fragile test, <misc.getmetrics> is
>>explicitly called in this particular case. There is no need to fix the
>>corresponding test for Lua C API interface, since there is no TAP
>>helpers used to check whether <jit_snap_restore> is counted right. There
>>is also no need to fix other subtests nearby, since their assertions are
>>no affected by TAP helpers side effects.
>Typo: s/no/not/
>>
>>Relates to tarantool/tarantool#7762
>>
>>Signed-off-by: Igor Munkin < imun@tarantool.org >
>>---
>> test/tarantool-tests/misclib-getmetrics-lapi.test.lua | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>>diff --git a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
>>index 19dfd199..0c170d0c 100644
>>--- a/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
>>+++ b/test/tarantool-tests/misclib-getmetrics-lapi.test.lua
>>@@ -363,7 +363,9 @@ test:test("snap-restores-scalar", function(subtest)
>>     -- No exits triggering snap restore so far: snapshot
>>     -- restoration was inlined into the machine code.
>>     subtest:is(new_metrics.jit_snap_restore - old_metrics.jit_snap_restore, 0)
>>- old_metrics = new_metrics
>>+ -- XXX: obtain actual metrics to avoid side effects that are
>>+ -- caused by Lua code and JIT engine fine tuning above.
>>+ old_metrics = misc.getmetrics()
>> 
>>     -- Simply 2 side exits from the trace:
>>     foo(20)
>>--
>>2.34.0
>--
>Best regards,
>Maxim Kokryashkin

[-- Attachment #2: Type: text/html, Size: 2862 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test
  2022-12-05  7:52   ` Sergey Kaplun via Tarantool-patches
@ 2022-12-05 21:33     ` Igor Munkin via Tarantool-patches
  0 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-05 21:33 UTC (permalink / raw)
  To: Sergey Kaplun; +Cc: tarantool-patches

Sergey,

Thanks for your review!

On 05.12.22, Sergey Kaplun wrote:
> Hi, Igor!
> 
> Thanks for the patch!

Added your tag:
| Reviewed-by: Sergey Kaplun <skaplun@tarantool.org>

> 
> LGTM, just several nits regarding the commit message.

Fixed both of them.

> 

<snipped>

> -- 
> Best regards,
> Sergey Kaplun

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test
  2022-12-05 10:47   ` Maxim Kokryashkin via Tarantool-patches
@ 2022-12-05 21:34     ` Igor Munkin via Tarantool-patches
  0 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-05 21:34 UTC (permalink / raw)
  To: Maxim Kokryashkin; +Cc: tarantool-patches

Max,

Thanks for your review!

On 05.12.22, Maxim Kokryashkin wrote:
> 
> Hi, Igor!
> Thanks for the patch!
> LGTM, except for the two nits below.

Added your tag:
| Reviewed-by: Maxim Kokryashkin <m.kokryashkin@tarantool.org>

Fixed all your nits.

>   

<snipped>

> -- 
> Best regards,
> Maxim Kokryashkin

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test
  2022-12-05 10:52   ` Maxim Kokryashkin via Tarantool-patches
@ 2022-12-05 21:40     ` Igor Munkin via Tarantool-patches
  0 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-05 21:40 UTC (permalink / raw)
  To: Maxim Kokryashkin; +Cc: tarantool-patches

Max,

Thanks for your review!

On 05.12.22, Maxim Kokryashkin wrote:
> 
> Hi, Igor!
> Thanks for the patch!
> LGTM, except for the single nit Sergey has already mentioned.

Added your tag:
| Reviewed-by: Maxim Kokryashkin <m.kokryashkin@tarantool.org>

> --
> Best regards,
> Maxim Kokryashkin

<snipped>

> > 

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test
  2022-12-05  7:57   ` Sergey Kaplun via Tarantool-patches
@ 2022-12-05 21:40     ` Igor Munkin via Tarantool-patches
  0 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-05 21:40 UTC (permalink / raw)
  To: Sergey Kaplun; +Cc: tarantool-patches

Sergey,

Thanks for your review!

On 05.12.22, Sergey Kaplun wrote:
> Hi, Igor!
> 
> Thanks for the patch!
> 
> LGTM, except a single nit regarding the commit message.

Added your tag:
| Reviewed-by: Sergey Kaplun <skaplun@tarantool.org>

The nit is fixed.

> 

<snipped>

> -- 
> Best regards,
> Sergey Kaplun

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests
  2022-12-05  8:01   ` Sergey Kaplun via Tarantool-patches
@ 2022-12-05 21:46     ` Igor Munkin via Tarantool-patches
  0 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-05 21:46 UTC (permalink / raw)
  To: Sergey Kaplun; +Cc: tarantool-patches

Sergey,

Thanks for your review!

On 05.12.22, Sergey Kaplun wrote:
> Hi, Igor!
> 
> Thanks for the patch!
> 
> LGTM, except a few nits regarding the commit message.

Added your tag:
| Reviewed-by: Sergey Kaplun <skaplun@tarantool.org>

All nits are fixed.

> 

<snipped>

> 
> -- 
> Best regards,
> Sergey Kaplun

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests
  2022-12-05 11:06   ` Maxim Kokryashkin via Tarantool-patches
@ 2022-12-05 21:47     ` Igor Munkin via Tarantool-patches
  0 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-05 21:47 UTC (permalink / raw)
  To: Maxim Kokryashkin; +Cc: tarantool-patches

Max,

Thanks for your review!

On 05.12.22, Maxim Kokryashkin wrote:
> 
> Hi, Igor!
> Thanks for the patch!
> LGTM, except for the nits Sergey has already mentioned
> and the two additional nits below.

Added your tag:
| Reviewed-by: Maxim Kokryashkin <m.kokryashkin@tarantool.org>

All nits are fixed.

>  

<snipped>

> >--
> >Best regards,
> >Maxim Kokryashkin

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK
  2022-12-01 20:28 [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
                   ` (3 preceding siblings ...)
  2022-12-02 10:05 ` [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
@ 2022-12-12  9:42 ` Igor Munkin via Tarantool-patches
  4 siblings, 0 replies; 18+ messages in thread
From: Igor Munkin via Tarantool-patches @ 2022-12-12  9:42 UTC (permalink / raw)
  To: Sergey Kaplun, Maxim Kokryashkin; +Cc: tarantool-patches

I've checked the patches into all long-term branches in tarantool/luajit
and bumped a new version in master, 2.10 and 1.10.

On 01.12.22, Igor Munkin wrote:
> After enabling LUAJIT_ENABLE_CHECKHOOK options two tests started to fail
> due to very tight JIT engine setup. This patchset is aimed to relax JIT
> engine setup and make the tests agnostic to the introduced option.
> 
> Issue: https://github.com/tarantool/tarantool/issues/7762
> Branch: https://github.com/tarantool/luajit/tree/imun/gh-7762-fix-tests-for-checkhook
> PR: https://github.com/tarantool/tarantool/pull/7787
> CI: https://github.com/tarantool/luajit/commit/ba9d9c8
> 
> Igor Munkin (2):
>   test: relax JIT setup in lj-430-maxirconst test
>   test: relax JIT setup in misc.getmetrics test
> 
>  .../lj-430-maxirconst.test.lua                | 23 +++++++++++--------
>  .../misclib-getmetrics-capi.test.lua          |  7 ++++--
>  .../misclib-getmetrics-lapi.test.lua          |  7 ++++--
>  test/tarantool-tests/utils.lua                |  9 ++++++++
>  4 files changed, 33 insertions(+), 13 deletions(-)
> 
> -- 
> 2.34.0
> 

-- 
Best regards,
IM

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2022-12-12  9:56 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-01 20:28 [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 1/2] test: relax JIT setup in lj-430-maxirconst test Igor Munkin via Tarantool-patches
2022-12-05  7:52   ` Sergey Kaplun via Tarantool-patches
2022-12-05 21:33     ` Igor Munkin via Tarantool-patches
2022-12-05 10:47   ` Maxim Kokryashkin via Tarantool-patches
2022-12-05 21:34     ` Igor Munkin via Tarantool-patches
2022-12-01 20:28 ` [Tarantool-patches] [PATCH luajit 2/2] test: relax JIT setup in misc.getmetrics test Igor Munkin via Tarantool-patches
2022-12-05  7:57   ` Sergey Kaplun via Tarantool-patches
2022-12-05 21:40     ` Igor Munkin via Tarantool-patches
2022-12-05 10:52   ` Maxim Kokryashkin via Tarantool-patches
2022-12-05 21:40     ` Igor Munkin via Tarantool-patches
2022-12-02 10:01 ` [Tarantool-patches] [PATCH luajit 3/2] test: remove TAP side effects in getmetrics tests Igor Munkin via Tarantool-patches
2022-12-05  8:01   ` Sergey Kaplun via Tarantool-patches
2022-12-05 21:46     ` Igor Munkin via Tarantool-patches
2022-12-05 11:06   ` Maxim Kokryashkin via Tarantool-patches
2022-12-05 21:47     ` Igor Munkin via Tarantool-patches
2022-12-02 10:05 ` [Tarantool-patches] [PATCH luajit 0/2] Fix tests for LUAJIT_ENABLE_CHECKHOOK Igor Munkin via Tarantool-patches
2022-12-12  9:42 ` Igor Munkin via Tarantool-patches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox