From: Simon Marchi <simon.marchi@polymtl.ca>
To: Pedro Alves <palves@redhat.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH 4/7] jit: make gdb_symtab::blocks a vector
Date: Sat, 14 Dec 2019 17:17:00 -0000 [thread overview]
Message-ID: <60d0c65c-7bce-798c-8e40-9f139e62ded1@polymtl.ca> (raw)
In-Reply-To: <bd02c8bc-9006-4b55-9538-9ca1fc83b020@redhat.com>
On 2019-12-13 5:14 p.m., Pedro Alves wrote:
> On 12/13/19 6:03 AM, Simon Marchi wrote:
>> I don't think it's true that "next" points to the next node at the same
>> depth. It might happen to be true for some nodes, but it can't be true
>> in general, as this is a simple linked list containing all the created
>> blocks.
>
> Is this really true? I mean, the comment you're removing talks about
> a tree. I see that jit_block_open_impl starts by doing:
>
> block->next = symtab->blocks;
>
> but then the else branch writes to blocl->next again:
>
> /* Guaranteed to terminate, since compare_block (NULL, _)
> returns 1. */
> if (compare_block (i->next, block))
> {
> block->next = i->next;
>
> I don't pretend to understand this code, but it does sound like at
> least the intention was to have a tree of blocks, which is not
> a surprising data structure for blocks.
Well, the code builds a singly linked list and takes care of keeping it
sorted in the reverse order of the expected order for a blockvector
But that doesn't make it a tree.
If the JIT generates this code, conceptually:
{ // A
{ // B
}
{ // C
 }
}
It could be represented by this tree:
A
/ \
B C
The created linked list will be:
C -> B -> A
Node B points to node A, which doesn't match the comment "Next points to the
next node at the same depth as this block".
Maybe the original intention of the author was to build an actual tree, where
each node has a singly linked list of its children, in which case it would have
been true, but then changed the implementation to use a single linked list in
reversed blockvector order.
Simon
next prev parent reply other threads:[~2019-12-14 17:17 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-13 6:03 [PATCH 0/7] Fix and cleanups in jit.c Simon Marchi
2019-12-13 6:03 ` [PATCH 2/7] jit: make gdb_object::symtabs a vector Simon Marchi
2019-12-13 6:03 ` [PATCH 7/7] jit: make gdb_symtab::blocks a vector of unique_ptr Simon Marchi
2019-12-13 6:03 ` [PATCH 3/7] jit: c++-ify gdb_symtab Simon Marchi
2019-12-13 21:01 ` Tom Tromey
2019-12-13 21:11 ` Simon Marchi
2019-12-13 6:03 ` [PATCH 5/7] jit: make gdb_object::symtabs a vector of unique_ptr Simon Marchi
2019-12-13 17:54 ` Pedro Alves
2019-12-13 18:45 ` Simon Marchi
2019-12-13 18:51 ` Simon Marchi
2019-12-13 19:42 ` Pedro Alves
2019-12-13 6:03 ` [PATCH 1/7] Fix double-free when creating more than one block in JIT debug info reader Simon Marchi
2019-12-13 6:03 ` [PATCH 6/7] jit: c++-ify gdb_block Simon Marchi
2019-12-13 7:54 ` Aktemur, Tankut Baris
2019-12-13 15:06 ` Simon Marchi
2019-12-13 15:11 ` Christian Biesinger via gdb-patches
2019-12-13 15:18 ` Simon Marchi
2019-12-13 20:57 ` Pedro Alves
2019-12-13 21:02 ` Simon Marchi
2019-12-13 22:20 ` Pedro Alves
2019-12-14 17:39 ` Simon Marchi
2019-12-13 6:18 ` [PATCH 4/7] jit: make gdb_symtab::blocks a vector Simon Marchi
2019-12-13 15:17 ` Christian Biesinger via gdb-patches
2019-12-13 16:02 ` Simon Marchi
2019-12-13 16:08 ` Christian Biesinger via gdb-patches
2019-12-13 16:14 ` Simon Marchi
2019-12-13 18:17 ` Christian Biesinger via gdb-patches
2019-12-13 22:14 ` Pedro Alves
2019-12-14 17:17 ` Simon Marchi [this message]
2019-12-13 21:19 ` [PATCH 0/7] Fix and cleanups in jit.c Tom Tromey
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=60d0c65c-7bce-798c-8e40-9f139e62ded1@polymtl.ca \
--to=simon.marchi@polymtl.ca \
--cc=gdb-patches@sourceware.org \
--cc=palves@redhat.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox