From: Tom Tromey <tromey@redhat.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Ulrich Weigand <uweigand@de.ibm.com>, gdb-patches@sourceware.org
Subject: Re: [RFC/RFA] add struct parse_context to all command functions
Date: Sat, 25 Oct 2008 16:46:00 -0000 [thread overview]
Message-ID: <m3r664sjxy.fsf@fleche.redhat.com> (raw)
In-Reply-To: <20081025162453.GJ29998@adacore.com> (Joel Brobecker's message of "Sat\, 25 Oct 2008 09\:24\:53 -0700")
>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:
Joel> I like the idea as well. Just one question: Why did you elect to
Joel> pass the structure as a pointer, rather than the structure
Joel> itself?
To avoid copying. Most users just reference fields from the
structure, or pass it through unmodified. So, this is more efficient
in the common cases.
I would have looked at passing by value if the structure were smaller.
As it is, on my machine it is 68 bytes -- that seems kind of big.
Joel> I wonder if some of the complexity in terms of who owns the
Joel> data, making a copy, etc, could be removed if we passed the
Joel> structure itself. In terms of performance, it shouldn't be a
Joel> problem, as I expect large structs to be passed by reference
Joel> anyway.
I think they have to be copied regardless, though, to preserve
pass-by-value semantics.
In this particular case, ownership is not an issue. These structures
are only ever stack-allocated. Passing pointers to const makes it
clear that these are not mutable.
Stack allocation does make the code a bit uglier, since when we do
want to make a copy we have to give the new object a name. That is
one advantage of pass-by-value.
struct parse_context might be a bit different depending on what you
put in it. For example, I was thinking that lexptr should probably
not be a global. However, if we put it in parse_context, then the
context can't be const. (Maybe we want two different structs though
-- one immutable and one to hold state for a given parse.)
Tom
next prev parent reply other threads:[~2008-10-25 16:46 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 14:05 Joel Brobecker
2008-10-09 16:13 ` Tom Tromey
2008-10-09 22:20 ` Joel Brobecker
2008-10-20 16:16 ` Joel Brobecker
2008-10-20 19:03 ` Thiago Jung Bauermann
2008-10-21 0:47 ` Daniel Jacobowitz
2008-10-21 18:06 ` Ulrich Weigand
2008-10-21 18:18 ` Daniel Jacobowitz
2008-10-22 1:40 ` Joel Brobecker
2008-10-22 20:15 ` Tom Tromey
2008-10-22 20:36 ` Joel Brobecker
2008-10-21 1:22 ` Tom Tromey
2008-10-21 7:07 ` Joel Brobecker
2008-10-21 18:12 ` Ulrich Weigand
2008-10-21 18:58 ` Tom Tromey
2008-10-21 19:33 ` Tom Tromey
2008-10-22 18:03 ` Ulrich Weigand
2008-10-22 18:54 ` Tom Tromey
2008-10-22 22:24 ` Ulrich Weigand
2008-10-23 1:02 ` Tom Tromey
2008-10-23 19:50 ` Ulrich Weigand
2008-10-23 21:29 ` Tom Tromey
2008-10-24 13:01 ` Ulrich Weigand
2008-10-25 16:05 ` Tom Tromey
2008-10-27 17:07 ` Tom Tromey
2008-10-28 16:27 ` Ulrich Weigand
2008-10-28 18:17 ` Tom Tromey
2008-10-28 20:00 ` Ulrich Weigand
2008-10-25 16:25 ` Joel Brobecker
2008-10-25 16:46 ` Tom Tromey [this message]
2008-10-26 15:19 ` Joel Brobecker
2008-10-21 18:05 ` Ulrich Weigand
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=m3r664sjxy.fsf@fleche.redhat.com \
--to=tromey@redhat.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=uweigand@de.ibm.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