public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
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.

  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).