From: Mark McLoughlin <markmc@redhat.com>
To: "Frank Ch. Eigler" <fche@redhat.com>
Cc: systemtap@sourceware.org
Subject: Re: Global constants
Date: Mon, 13 Feb 2006 20:09:00 -0000 [thread overview]
Message-ID: <1139861338.11054.35.camel@localhost.localdomain> (raw)
In-Reply-To: <y0md5hrrrbt.fsf@ton.toronto.redhat.com>
Hi Frank,
On Mon, 2006-02-13 at 14:28 -0500, Frank Ch. Eigler wrote:
> If the main purpose of this syntax is to compress initialization of
> globals into a single line, one can do it with less effort. The
> parser could rewrite
> global var = expr
> to
> global var; probe begin { var = expr }
> There need be no performance concerns here, partly because the
> optimizer will get rid of any such globals that are not read.
Does the optimizer currently get rid of such globals? Maybe I missed
something, but I thought it didn't ... wouldn't be hard to fix that
though, granted.
> It
> could similarly get rid of or merge initialization "begin" probes.
>
> Even with this sort of rewriting, if the right hand side of such
> assignments can be an expression, not just a literal, analysis &
> runtime considerations could become complicated. Consider dependency
> ordering, context setup, error checking, if for example expr is a
> function call dealing with other globals.
>
> If read-only-ness of these globals is important, then a new "const"
> keyword would indeed come in handy. (I'd promptly reuse it as a
> qualifier for embedded-C functions that are declared to have no
> side-effects.) I would implement this angle by a new flag on vardecl,
> enforced non-lvalueness during elaboration or translation, rather than
> whole new staptree.h classes.
I guess there's a few reasons why I did it this way:
- The fact that it's read-only means you don't need all the locking
that other variables need
- By only allowing simple literals, you don't have to worry about
complexities with evaluating fully fledged expressions at runtime.
Although, simple symbol-free expressions like:
const O_CREAT = 2 << 5
would probably be a fairly straightforward addition.
- It's a nice simple syntax for something that would be very useful
in the system tapsets
You guys know best, though :-)
Cheers,
Mark.
next prev parent reply other threads:[~2006-02-13 20:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-13 17:39 Mark McLoughlin
2006-02-13 19:28 ` Frank Ch. Eigler
2006-02-13 19:40 ` Martin Hunt
2006-02-13 20:10 ` Frank Ch. Eigler
2006-02-13 20:20 ` Mark McLoughlin
2006-02-13 20:14 ` Mark McLoughlin
2006-02-13 20:22 ` Martin Hunt
2006-02-13 20:44 ` Mark McLoughlin
2006-02-13 21:41 ` Martin Hunt
2006-02-14 8:27 ` Mark McLoughlin
2006-02-13 20:09 ` Mark McLoughlin [this message]
2006-02-13 20:13 Stone, Joshua I
2006-02-13 20:46 ` Frank Ch. Eigler
2006-02-13 20:36 Stone, Joshua I
2006-02-13 21:05 ` Frank Ch. Eigler
2006-02-13 21:50 Stone, Joshua I
2006-02-13 23:50 ` Frank Ch. Eigler
2006-02-13 22:12 Stone, Joshua I
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=1139861338.11054.35.camel@localhost.localdomain \
--to=markmc@redhat.com \
--cc=fche@redhat.com \
--cc=systemtap@sourceware.org \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).