Tarantool development patches archive
 help / color / mirror / Atom feed
From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Maxim Kokryashkin <m.kokryashkin@tarantool.org>,
	tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit 1/2] test: add utility for parsing `jit.dump`
Date: Mon, 22 May 2023 10:04:53 +0300	[thread overview]
Message-ID: <ZGsUFSh884vBydJW@root> (raw)
In-Reply-To: <ZGnKzhuCnB4pf1+w@root>

Hi, again!
Just some followup fixes, for the previous changes.

On 21.05.23, Sergey Kaplun via Tarantool-patches wrote:

<snipped>

> 
> > >>+local function parse_trace_hdr(ctx, line, trace_num, status)
> > >>+ local traces = ctx.traces
> > >>+ if status == 'start' then
> > >>+ local trace = trace_new(trace_num)
> > >>+ trace.parent, trace.parent_exitno = line:match('start (%d+)/(%d+)')
> > >>+ -- XXX: Assume, that source line can't contain spaces.
> > >>+ -- For example, it's not "(command line)".
> > >>+ trace.start_loc = line:match(' ([^%s]+)$')
> > >>+ traces[trace_num] = trace
> > >>+ ctx.parsing_trace = trace_num
> > >>+ ctx.parsing = 'bc'
> > >>+ elseif status == 'stop' then
> > >>+ assert(ctx.parsing_trace == trace_num)
> > >>+ ctx.parsing_trace = nil
> > >>+ ctx.parsing = nil
> > >>+ elseif status == 'abort' then
> > >>+ assert(ctx.parsing_trace == trace_num)
> > >>+ ctx.parsing_trace = nil
> > >>+ ctx.parsing = nil
> > >>+ traces[trace_num] = nil
> > >Two branches below are almost identical. Is it possible to avoid
> > >duplication?
> 
> I suppose, no, especially since we may want to do some more work for
> aborted traces (I just don't sure for now).
> 
> > >Side note: Also, I like it much more when switch-like constructions
> > >in Lua are implemented with tables, because it seems to be cleaner.
> > >Feel free to ignore.
> 
> Rewritten in this way, see the iterative patch below. Branch is
> force-pushed.
> 
> ===================================================================
> diff --git a/test/tarantool-tests/utils/jit_parse.lua b/test/tarantool-tests/utils/jit_parse.lua
> index fe8e0e08..7e8f879e 100644
> --- a/test/tarantool-tests/utils/jit_parse.lua
> +++ b/test/tarantool-tests/utils/jit_parse.lua
> @@ -64,9 +64,9 @@ local function parse_mcode(trace, line)
>    trace.mcode[#trace.mcode + 1] = {addr = addr, instruction = instruction,}
>  end
>  
> -local function parse_trace_hdr(ctx, line, trace_num, status)
> -  local traces = ctx.traces
> -  if status == 'start' then
> +local header_handlers = {
> +  start = function(ctx, line, trace_num)
> +    local traces = ctx.traces
>      local trace = trace_new(trace_num)
>      trace.parent, trace.parent_exitno = line:match('start (%d+)/(%d+)')
>      -- XXX: Assume, that source line can't contain spaces.
> @@ -75,23 +75,27 @@ local function parse_trace_hdr(ctx, line, trace_num, status)
>      traces[trace_num] = trace
>      ctx.parsing_trace = trace_num
>      ctx.parsing = 'bc'
> -  elseif status == 'stop' then
> +  end,
> +  stop = function(ctx, line, trace_num)
> +    local traces = ctx.traces
>      assert(ctx.parsing_trace == trace_num)
>      ctx.parsing_trace = nil
>      ctx.parsing = nil
> -  elseif status == 'abort' then
> +  end,
> +  abort = function(ctx, line, trace_num)
> +    local traces = ctx.traces
>      assert(ctx.parsing_trace == trace_num)
>      ctx.parsing_trace = nil
>      ctx.parsing = nil
>      traces[trace_num] = nil
> -  elseif status == 'IR' then
> +  end,
> +  IR = function(ctx, line, trace_num)
>      ctx.parsing = 'IR'
> -  elseif status == 'mcode' then
> +  end,
> +  mcode = function(ctx, line, trace_num)
>      ctx.parsing = 'mcode'
> -  else
> -    error('Unknown trace status: ' .. status)
> -  end
> -end
> +  end,
> +}
>  
>  local function parse_line(ctx, line)
>    if line == '' then
> @@ -105,7 +109,11 @@ local function parse_line(ctx, line)
>  
>    local trace_num, status = line:match('TRACE (%d+) (%w+)')
>    if trace_num then
> -    parse_trace_hdr(ctx, line, tonumber(trace_num), status)
> +    if (header_handlers[status]) then
> +       header_handlers[status](ctx, line, tonumber(trace_num))
> +    else
> +      error('Unknown trace status: ' .. status)
> +    end
>      return
>    end
> ===================================================================
> 

Fix luacheck warnings with the following changes:

===================================================================
diff --git a/test/tarantool-tests/utils/jit_parse.lua b/test/tarantool-tests/utils/jit_parse.lua
index 56267713..bd663196 100644
--- a/test/tarantool-tests/utils/jit_parse.lua
+++ b/test/tarantool-tests/utils/jit_parse.lua
@@ -65,7 +65,7 @@ local function parse_mcode(trace, line)
 end
 
 local header_handlers = {
-  start = function(ctx, line, trace_num)
+  start = function(ctx, trace_num, line)
     local traces = ctx.traces
     local trace = trace_new(trace_num)
     trace.parent, trace.parent_exitno = line:match('start (%d+)/(%d+)')
@@ -76,23 +76,22 @@ local header_handlers = {
     ctx.parsing_trace = trace_num
     ctx.parsing = 'bc'
   end,
-  stop = function(ctx, line, trace_num)
-    local traces = ctx.traces
+  stop = function(ctx, trace_num)
     assert(ctx.parsing_trace == trace_num)
     ctx.parsing_trace = nil
     ctx.parsing = nil
   end,
-  abort = function(ctx, line, trace_num)
+  abort = function(ctx, trace_num)
     local traces = ctx.traces
     assert(ctx.parsing_trace == trace_num)
     ctx.parsing_trace = nil
     ctx.parsing = nil
     traces[trace_num] = nil
   end,
-  IR = function(ctx, line, trace_num)
+  IR = function(ctx)
     ctx.parsing = 'IR'
   end,
-  mcode = function(ctx, line, trace_num)
+  mcode = function(ctx)
     ctx.parsing = 'mcode'
   end,
 }
@@ -110,7 +109,7 @@ local function parse_line(ctx, line)
   local trace_num, status = line:match('TRACE (%d+) (%w+)')
   if trace_num then
     if (header_handlers[status]) then
-       header_handlers[status](ctx, line, tonumber(trace_num))
+       header_handlers[status](ctx, tonumber(trace_num), line)
     else
       error('Unknown trace status: ' .. status)
     end
===================================================================

Branch is force-pushed.

<snipped>

> > >--
> > >Best regards,
> > >Maxim Kokryashkin
> > > 
> 
> -- 
> Best regards,
> Sergey Kaplun

-- 
Best regards,
Sergey Kaplun

  reply	other threads:[~2023-05-22  7:09 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-10 12:34 [Tarantool-patches] [PATCH luajit 0/2] Fix canonicalization of +-0.0 keys for IR_NEWREF Sergey Kaplun via Tarantool-patches
2023-05-10 12:34 ` [Tarantool-patches] [PATCH luajit 1/2] test: add utility for parsing `jit.dump` Sergey Kaplun via Tarantool-patches
2023-05-15 11:11   ` Maxim Kokryashkin via Tarantool-patches
2023-05-15 12:00     ` Maxim Kokryashkin via Tarantool-patches
2023-05-21  7:47       ` Sergey Kaplun via Tarantool-patches
2023-05-21  7:39     ` Sergey Kaplun via Tarantool-patches
2023-05-22  7:04       ` Sergey Kaplun via Tarantool-patches [this message]
2023-05-29 13:55       ` Maxim Kokryashkin via Tarantool-patches
2023-05-16 10:55   ` Sergey Bronnikov via Tarantool-patches
2023-05-22  7:02     ` Sergey Kaplun via Tarantool-patches
2023-05-22  9:14       ` Sergey Kaplun via Tarantool-patches
2023-05-10 12:34 ` [Tarantool-patches] [PATCH luajit 2/2] Fix canonicalization of +-0.0 keys for IR_NEWREF Sergey Kaplun via Tarantool-patches
2023-05-15 12:05   ` Maxim Kokryashkin via Tarantool-patches
2023-05-20 15:03     ` Sergey Kaplun via Tarantool-patches
2023-05-16 12:17   ` Sergey Bronnikov via Tarantool-patches
2023-05-20 14:54     ` Sergey Kaplun via Tarantool-patches
2023-05-22  7:55       ` Sergey Bronnikov via Tarantool-patches
2023-06-27 13:28 ` [Tarantool-patches] [PATCH luajit 1/3] test: split utils.lua into several modules Igor Munkin via Tarantool-patches
2023-06-27 13:35   ` Igor Munkin via Tarantool-patches
2023-06-28 11:36   ` Sergey Kaplun via Tarantool-patches
2023-06-28 16:07     ` Igor Munkin via Tarantool-patches
2023-07-04 17:10 ` [Tarantool-patches] [PATCH luajit 0/2] Fix canonicalization of +-0.0 keys for IR_NEWREF 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=ZGsUFSh884vBydJW@root \
    --to=tarantool-patches@dev.tarantool.org \
    --cc=m.kokryashkin@tarantool.org \
    --cc=skaplun@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH luajit 1/2] test: add utility for parsing `jit.dump`' \
    /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