From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id CFF0357570F; Thu, 3 Aug 2023 17:28:23 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org CFF0357570F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1691072903; bh=50wtsjH6YMQp9+ljKHcugSIMd/NZKWDRzULsXUF6I8w=; h=Date:To:Cc:References:In-Reply-To:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=Smn/vqNADv/gL0SjFMazbJte1JlRpGvWE9ow3IyyI0lla6L9mBxcaOg+Q5x47ZwTc /J3c6Rq+RSvCkgrkAcRIFq5USOrWm5fWMatWdfphlJeN2mcwSVL7CBi5mDXP85zbYC HarXUFkCf4MIhY9S7ALT9PDV4ZxDmu6XSnzp6qlY= Received: from smtpng1.i.mail.ru (smtpng1.i.mail.ru [94.100.181.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id EF2E6562369 for ; Thu, 3 Aug 2023 17:27:35 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org EF2E6562369 Received: by smtpng1.m.smailru.net with esmtpa (envelope-from ) id 1qRZId-0006Rx-42; Thu, 03 Aug 2023 17:27:35 +0300 Message-ID: Date: Thu, 3 Aug 2023 17:27:34 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US To: Igor Munkin , Maxim Kokryashkin Cc: tarantool-patches@dev.tarantool.org References: <43076e542b6f8d86bed92c467753b5162b444416.1691047132.git.imun@tarantool.org> In-Reply-To: <43076e542b6f8d86bed92c467753b5162b444416.1691047132.git.imun@tarantool.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD969E04B5EED670DC864E28ABE09E133B4A5846C191BD37C58182A05F538085040FAB4ED9EB939BAE471074DB0F4B39C208827BBF6F36B851F61CC8820E561FA25 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE766DBE83FD69AB645EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F79006379CBE0668FF2CDAD68638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D84FBAD093005DE69F24FACED1902EA335117882F4460429724CE54428C33FAD305F5C1EE8F4F765FC292D688DDAD4E7BC389733CBF5DBD5E9C8A9BA7A39EFB766F5D81C698A659EA7CC7F00164DA146DA9985D098DBDEAEC825D43C09D2508269F6B57BC7E6449061A352F6E88A58FB86F5D81C698A659EA7E827F84554CEF5019E625A9149C048EE33AC447995A7AD181150BA43C84913FC3A03B725D353964BED96AA85C75E140D089D37D7C0E48F6C8AA50765F7900637EC3198ECE464ADAEEFF80C71ABB335746BA297DBC24807EABDAD6C7F3747799A X-B7AD71C0: 4965CFDFE0519134C1FE400A9E48C5401DD40DE57556AFB266D16FC5F53507A1816E0A2A8F779BBED8D40077074E805C66D16FC5F53507A117535B0CF9F6D0C3EE9D5CB6078CC77CD58E985483F1612C50B8A193DD8A991A X-C1DE0DAB: 0D63561A33F958A5B772B6F16CEE7B41719BE0658E52DDB786789ACDB475D6B9F87CCE6106E1FC07E67D4AC08A07B9B0DB8A315C1FF4794DBDAD6C7F3747799A X-C8649E89: 1C3962B70DF3F0AD75DCE07D45A749953FED46C3ACD6F73ED3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CFE23198BC189E100FE1E90E3B6B28BDB2D3A83508B9CC2A8BB3FB9D483D59887C0AA6441730D2A0F08553022043D0BC9A3D1CEBF5333530BA25C78F8559B7B272E48CAC7CA610320002C26D483E81D6BE0DBAE6F56676BC7117BB6831D7356A2DEC5B5AD62611EEC62B5AFB4261A09AF0 X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojcir52QaMQ82JN/ACcvj2tw== X-DA7885C5: D1A883B2431A10D6A8C79BCC0975765636BE4FBA4B844B508401907F38701901262E2D401490A4A0DB037EFA58388B346E8BC1A9835FDE71 X-Mailru-Sender: 689FA8AB762F73930F533AC2B33E986B73C38B727F13ED2887E286A5EC8E341EDD788429FD8613638ED9BB8B05EE7B3AFB559BB5D741EB96D19CD4E7312BAA970A04DAD6CC59E3365FEEDEB644C299C0ED14614B50AE0675 X-Mras: Ok Subject: Re: [Tarantool-patches] [PATCH luajit 06/15] test: fix E251 errors by pycodestyle X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Bronnikov via Tarantool-patches Reply-To: Sergey Bronnikov Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" LGTM On 8/3/23 10:30, Igor Munkin wrote: > Fixed 208 occurrences of E251 ("unexpected spaces around keyword / > parameter equals") error reported by pycodestyle[1]. > > [1]: https://www.flake8rules.com/rules/E251.html > > Signed-off-by: Igor Munkin > --- > src/luajit-gdb.py | 102 ++++++++++++++++++++++---------------------- > src/luajit_lldb.py | 104 ++++++++++++++++++++++----------------------- > 2 files changed, 103 insertions(+), 103 deletions(-) > > diff --git a/src/luajit-gdb.py b/src/luajit-gdb.py > index 09899f58..f87063f8 100644 > --- a/src/luajit-gdb.py > +++ b/src/luajit-gdb.py > @@ -347,8 +347,8 @@ def dump_lj_tlightud(tv): > > def dump_lj_tstr(tv): > return 'string {body} @ {address}'.format( > - body = strdata(gcval(tv['gcr'])), > - address = strx64(gcval(tv['gcr'])) > + body=strdata(gcval(tv['gcr'])), > + address=strx64(gcval(tv['gcr'])) > ) > > def dump_lj_tupval(tv): > @@ -367,10 +367,10 @@ def dump_lj_tfunc(tv): > if ffid == 0: > pt = funcproto(func) > return 'Lua function @ {addr}, {nupvals} upvalues, {chunk}:{line}'.format( > - addr = strx64(func), > - nupvals = int(func['nupvalues']), > - chunk = strdata(cast('GCstr *', gcval(pt['chunkname']))), > - line = pt['firstline'] > + addr=strx64(func), > + nupvals=int(func['nupvalues']), > + chunk=strdata(cast('GCstr *', gcval(pt['chunkname']))), > + line=pt['firstline'] > ) > elif ffid == 1: > return 'C function @ {}'.format(strx64(func['f'])) > @@ -380,8 +380,8 @@ def dump_lj_tfunc(tv): > def dump_lj_ttrace(tv): > trace = cast('struct GCtrace *', gcval(tv['gcr'])) > return 'trace {traceno} @ {addr}'.format( > - traceno = strx64(trace['traceno']), > - addr = strx64(trace) > + traceno=strx64(trace['traceno']), > + addr=strx64(trace) > ) > > def dump_lj_tcdata(tv): > @@ -390,9 +390,9 @@ def dump_lj_tcdata(tv): > def dump_lj_ttab(tv): > table = cast('GCtab *', gcval(tv['gcr'])) > return 'table @ {gcr} (asize: {asize}, hmask: {hmask})'.format( > - gcr = strx64(table), > - asize = table['asize'], > - hmask = strx64(table['hmask']), > + gcr=strx64(table), > + asize=table['asize'], > + hmask=strx64(table['hmask']), > ) > > def dump_lj_tudata(tv): > @@ -436,16 +436,16 @@ def dump_framelink_slot_address(fr): > def dump_framelink(L, fr): > if fr == frame_sentinel(L): > return '{addr} [S ] FRAME: dummy L'.format( > - addr = dump_framelink_slot_address(fr), > + addr=dump_framelink_slot_address(fr), > ) > return '{addr} [ ] FRAME: [{pp}] delta={d}, {f}'.format( > - addr = dump_framelink_slot_address(fr), > - pp = 'PP' if frame_ispcall(fr) else '{frname}{p}'.format( > - frname = frametypes(int(frame_type(fr))), > - p = 'P' if frame_typep(fr) & FRAME_P else '' > + addr=dump_framelink_slot_address(fr), > + pp='PP' if frame_ispcall(fr) else '{frname}{p}'.format( > + frname=frametypes(int(frame_type(fr))), > + p='P' if frame_typep(fr) & FRAME_P else '' > ), > - d = cast('TValue *', fr) - cast('TValue *', frame_prev(fr)), > - f = dump_lj_tfunc(fr - LJ_FR2), > + d=cast('TValue *', fr) - cast('TValue *', frame_prev(fr)), > + f=dump_lj_tfunc(fr - LJ_FR2), > ) > > def dump_stack_slot(L, slot, base=None, top=None): > @@ -453,12 +453,12 @@ def dump_stack_slot(L, slot, base=None, top=None): > top = top or L['top'] > > return '{addr}{padding} [ {B}{T}{M}] VALUE: {value}'.format( > - addr = strx64(slot), > - padding = PADDING, > - B = 'B' if slot == base else ' ', > - T = 'T' if slot == top else ' ', > - M = 'M' if slot == mref('TValue *', L['maxstack']) else ' ', > - value = dump_tvalue(slot), > + addr=strx64(slot), > + padding=PADDING, > + B='B' if slot == base else ' ', > + T='T' if slot == top else ' ', > + M='M' if slot == mref('TValue *', L['maxstack']) else ' ', > + value=dump_tvalue(slot), > ) > > def dump_stack(L, base=None, top=None): > @@ -470,8 +470,8 @@ def dump_stack(L, base=None, top=None): > > dump = [ > '{padding} Red zone: {nredslots: >2} slots {padding}'.format( > - padding = '-' * len(PADDING), > - nredslots = red, > + padding='-' * len(PADDING), > + nredslots=red, > ), > ] > dump.extend([ > @@ -480,14 +480,14 @@ def dump_stack(L, base=None, top=None): > ]) > dump.extend([ > '{padding} Stack: {nstackslots: >5} slots {padding}'.format( > - padding = '-' * len(PADDING), > - nstackslots = int((tou64(maxstack) - tou64(stack)) >> 3), > + padding='-' * len(PADDING), > + nstackslots=int((tou64(maxstack) - tou64(stack)) >> 3), > ), > dump_stack_slot(L, maxstack, base, top), > '{start}:{end} [ ] {nfreeslots} slots: Free stack slots'.format( > - start = strx64(top + 1), > - end = strx64(maxstack - 1), > - nfreeslots = int((tou64(maxstack) - tou64(top) - 8) >> 3), > + start=strx64(top + 1), > + end=strx64(maxstack - 1), > + nfreeslots=int((tou64(maxstack) - tou64(top) - 8) >> 3), > ), > ]) > > @@ -504,19 +504,19 @@ def dump_stack(L, base=None, top=None): > > def dump_gc(g): > gc = g['gc'] > - stats = ['{key}: {value}'.format(key = f, value = gc[f]) for f in ( > + stats = ['{key}: {value}'.format(key=f, value=gc[f]) for f in ( > 'total', 'threshold', 'debt', 'estimate', 'stepmul', 'pause' > )] > > stats += ['sweepstr: {sweepstr}/{strmask}'.format( > - sweepstr = gc['sweepstr'], > + sweepstr=gc['sweepstr'], > # String hash mask (size of hash table - 1). > - strmask = g['strmask'] + 1, > + strmask=g['strmask'] + 1, > )] > > stats += ['{key}: {number} objects'.format( > - key = stat, > - number = handler(gc[stat]) > + key=stat, > + number=handler(gc[stat]) > ) for stat, handler in gclen.items()] > > return '\n'.join(map(lambda s: '\t' + s, stats)) > @@ -543,9 +543,9 @@ pointers respectively. > gdb.write( > 'LJ_64: {LJ_64}, LJ_GC64: {LJ_GC64}, LJ_DUALNUM: {LJ_DUALNUM}\n' > .format( > - LJ_64 = LJ_64, > - LJ_GC64 = LJ_GC64, > - LJ_DUALNUM = LJ_DUALNUM > + LJ_64=LJ_64, > + LJ_GC64=LJ_GC64, > + LJ_DUALNUM=LJ_DUALNUM > ) > ) > > @@ -596,9 +596,9 @@ is replaced with the corresponding error when decoding fails. > def invoke(self, arg, from_tty): > string = cast('GCstr *', parse_arg(arg)) > gdb.write("String: {body} [{len} bytes] with hash {hash}\n".format( > - body = strdata(string), > - hash = strx64(string['hash']), > - len = string['len'], > + body=strdata(string), > + hash=strx64(string['hash']), > + len=string['len'], > )) > > class LJDumpTable(LJBase): > @@ -630,9 +630,9 @@ The command receives a GCtab adress and dumps the table contents: > for i in range(capacity['apart']): > slot = array + i > gdb.write('{ptr}: [{index}]: {value}\n'.format( > - ptr = slot, > - index = i, > - value = dump_tvalue(slot) > + ptr=slot, > + index=i, > + value=dump_tvalue(slot) > )) > > gdb.write('Hash part: {} nodes\n'.format(capacity['hpart'])) > @@ -640,10 +640,10 @@ The command receives a GCtab adress and dumps the table contents: > for i in range(capacity['hpart']): > node = nodes + i > gdb.write('{ptr}: {{ {key} }} => {{ {val} }}; next = {n}\n'.format( > - ptr = node, > - key = dump_tvalue(node['key']), > - val= dump_tvalue(node['val']), > - n = mref('struct Node *', node['next']) > + ptr=node, > + key=dump_tvalue(node['key']), > + val=dump_tvalue(node['val']), > + n=mref('struct Node *', node['next']) > )) > > class LJDumpStack(LJBase): > @@ -723,8 +723,8 @@ The command requires no args and dumps current GC stats: > def invoke(self, arg, from_tty): > g = G(L(None)) > gdb.write('GC stats: {state}\n{stats}\n'.format( > - state = gc_state(g), > - stats = dump_gc(g) > + state=gc_state(g), > + stats=dump_gc(g) > )) > > def init(commands): > diff --git a/src/luajit_lldb.py b/src/luajit_lldb.py > index a7a756e9..f502a0e6 100644 > --- a/src/luajit_lldb.py > +++ b/src/luajit_lldb.py > @@ -390,19 +390,19 @@ gclen = { > > def dump_gc(g): > gc = g.gc > - stats = ['{key}: {value}'.format(key = f, value = getattr(gc, f)) for f in ( > + stats = ['{key}: {value}'.format(key=f, value=getattr(gc, f)) for f in ( > 'total', 'threshold', 'debt', 'estimate', 'stepmul', 'pause' > )] > > stats += ['sweepstr: {sweepstr}/{strmask}'.format( > - sweepstr = gc.sweepstr, > + sweepstr=gc.sweepstr, > # String hash mask (size of hash table - 1). > - strmask = g.strmask + 1, > + strmask=g.strmask + 1, > )] > > stats += ['{key}: {number} objects'.format( > - key = stat, > - number = handler(getattr(gc, stat)) > + key=stat, > + number=handler(getattr(gc, stat)) > ) for stat, handler in gclen.items()] > return '\n'.join(map(lambda s: '\t' + s, stats)) > > @@ -521,8 +521,8 @@ def dump_lj_tlightud(tv): > > def dump_lj_tstr(tv): > return 'string {body} @ {address}'.format( > - body = strdata(cast(GCstrPtr, gcval(tv.gcr))), > - address = strx64(gcval(tv.gcr)) > + body=strdata(cast(GCstrPtr, gcval(tv.gcr))), > + address=strx64(gcval(tv.gcr)) > ) > > def dump_lj_tupval(tv): > @@ -541,10 +541,10 @@ def dump_lj_tfunc(tv): > if ffid == 0: > pt = funcproto(func) > return 'Lua function @ {addr}, {nupvals} upvalues, {chunk}:{line}'.format( > - addr = strx64(func), > - nupvals = func.nupvalues, > - chunk = strdata(cast(GCstrPtr, gcval(pt.chunkname))), > - line = pt.firstline > + addr=strx64(func), > + nupvals=func.nupvalues, > + chunk=strdata(cast(GCstrPtr, gcval(pt.chunkname))), > + line=pt.firstline > ) > elif ffid == 1: > return 'C function @ {}'.format(strx64(func.f)) > @@ -554,8 +554,8 @@ def dump_lj_tfunc(tv): > def dump_lj_ttrace(tv): > trace = cast(GCtracePtr, gcval(tv.gcr)) > return 'trace {traceno} @ {addr}'.format( > - traceno = strx64(trace.traceno), > - addr = strx64(trace) > + traceno=strx64(trace.traceno), > + addr=strx64(trace) > ) > > def dump_lj_tcdata(tv): > @@ -564,9 +564,9 @@ def dump_lj_tcdata(tv): > def dump_lj_ttab(tv): > table = cast(GCtabPtr, gcval(tv.gcr)) > return 'table @ {gcr} (asize: {asize}, hmask: {hmask})'.format( > - gcr = strx64(table), > - asize = table.asize, > - hmask = strx64(table.hmask), > + gcr=strx64(table), > + asize=table.asize, > + hmask=strx64(table.hmask), > ) > > def dump_lj_tudata(tv): > @@ -724,16 +724,16 @@ def dump_framelink_slot_address(fr): > def dump_framelink(L, fr): > if fr == frame_sentinel(L): > return '{addr} [S ] FRAME: dummy L'.format( > - addr = dump_framelink_slot_address(fr), > + addr=dump_framelink_slot_address(fr), > ) > return '{addr} [ ] FRAME: [{pp}] delta={d}, {f}'.format( > - addr = dump_framelink_slot_address(fr), > - pp = 'PP' if frame_ispcall(fr) else '{frname}{p}'.format( > - frname = frametypes(int(frame_type(fr))), > - p = 'P' if frame_typep(fr) & FRAME_P else '' > + addr=dump_framelink_slot_address(fr), > + pp='PP' if frame_ispcall(fr) else '{frname}{p}'.format( > + frname=frametypes(int(frame_type(fr))), > + p='P' if frame_typep(fr) & FRAME_P else '' > ), > - d = fr - frame_prev(fr), > - f = dump_lj_tfunc(fr - LJ_FR2), > + d=fr - frame_prev(fr), > + f=dump_lj_tfunc(fr - LJ_FR2), > ) > > def dump_stack_slot(L, slot, base=None, top=None): > @@ -741,12 +741,12 @@ def dump_stack_slot(L, slot, base=None, top=None): > top = top or L.top > > return '{addr:{padding}} [ {B}{T}{M}] VALUE: {value}'.format( > - addr = strx64(slot), > - padding = 2 * len(PADDING) + 1, > - B = 'B' if slot == base else ' ', > - T = 'T' if slot == top else ' ', > - M = 'M' if slot == mref(TValuePtr, L.maxstack) else ' ', > - value = dump_tvalue(slot), > + addr=strx64(slot), > + padding=2 * len(PADDING) + 1, > + B='B' if slot == base else ' ', > + T='T' if slot == top else ' ', > + M='M' if slot == mref(TValuePtr, L.maxstack) else ' ', > + value=dump_tvalue(slot), > ) > > def dump_stack(L, base=None, top=None): > @@ -758,8 +758,8 @@ def dump_stack(L, base=None, top=None): > > dump = [ > '{padding} Red zone: {nredslots: >2} slots {padding}'.format( > - padding = '-' * len(PADDING), > - nredslots = red, > + padding='-' * len(PADDING), > + nredslots=red, > ), > ] > dump.extend([ > @@ -768,15 +768,15 @@ def dump_stack(L, base=None, top=None): > ]) > dump.extend([ > '{padding} Stack: {nstackslots: >5} slots {padding}'.format( > - padding = '-' * len(PADDING), > - nstackslots = int((maxstack - stack) >> 3), > + padding='-' * len(PADDING), > + nstackslots=int((maxstack - stack) >> 3), > ), > dump_stack_slot(L, maxstack, base, top), > '{start:{padding}}:{end:{padding}} [ ] {nfreeslots} slots: Free stack slots'.format( > - start = strx64(top + 1), > - end = strx64(maxstack - 1), > - padding = len(PADDING), > - nfreeslots = int((maxstack - top - 8) >> 3), > + start=strx64(top + 1), > + end=strx64(maxstack - 1), > + padding=len(PADDING), > + nfreeslots=int((maxstack - top - 8) >> 3), > ), > ]) > > @@ -856,9 +856,9 @@ pointers respectively. > print( > 'LJ_64: {LJ_64}, LJ_GC64: {LJ_GC64}, LJ_DUALNUM: {LJ_DUALNUM}' > .format( > - LJ_64 = LJ_64, > - LJ_GC64 = LJ_GC64, > - LJ_DUALNUM = LJ_DUALNUM > + LJ_64=LJ_64, > + LJ_GC64=LJ_GC64, > + LJ_DUALNUM=LJ_DUALNUM > ) > ) > > @@ -883,8 +883,8 @@ The command requires no args and dumps current GC stats: > def execute(self, debugger, args, result): > g = G(L(None)) > print('GC stats: {state}\n{stats}'.format( > - state = gc_state(g), > - stats = dump_gc(g) > + state=gc_state(g), > + stats=dump_gc(g) > )) > > class LJDumpString(Command): > @@ -900,9 +900,9 @@ is replaced with the corresponding error when decoding fails. > def execute(self, debugger, args, result): > string_ptr = GCstrPtr(cast('GCstr *', self.parse(args))) > print("String: {body} [{len} bytes] with hash {hash}".format( > - body = strdata(string_ptr), > - hash = strx64(string_ptr.hash), > - len = string_ptr.len, > + body=strdata(string_ptr), > + hash=strx64(string_ptr.hash), > + len=string_ptr.len, > )) > > class LJDumpTable(Command): > @@ -933,9 +933,9 @@ The command receives a GCtab adress and dumps the table contents: > for i in range(capacity['apart']): > slot = array + i > print('{ptr}: [{index}]: {value}'.format( > - ptr = strx64(slot), > - index = i, > - value = dump_tvalue(slot) > + ptr=strx64(slot), > + index=i, > + value=dump_tvalue(slot) > )) > > print('Hash part: {} nodes'.format(capacity['hpart'])) > @@ -943,10 +943,10 @@ The command receives a GCtab adress and dumps the table contents: > for i in range(capacity['hpart']): > node = nodes + i > print('{ptr}: {{ {key} }} => {{ {val} }}; next = {n}'.format( > - ptr = strx64(node), > - key = dump_tvalue(TValuePtr(node.key.addr)), > - val= dump_tvalue(TValuePtr(node.val.addr)), > - n = strx64(mref(NodePtr, node.next)) > + ptr=strx64(node), > + key=dump_tvalue(TValuePtr(node.key.addr)), > + val=dump_tvalue(TValuePtr(node.val.addr)), > + n=strx64(mref(NodePtr, node.next)) > )) > > class LJDumpStack(Command):